我已经在Windows 8中安装了Websphere MQ 8服务器,

使用MQ资源管理器:
我使用端口MAJID.QUEUE.MANAGER创建了队列管理器1419
我在端口TCP上创建了一个1419侦听器。

我尝试了从MQ8安装安装Tools的Java程序之一,它的运行方式如下:

 PCF_ListQueueNames  MAJID.QUEUE.MANAGER 10.196.67.99 1419


但是我只有:

 Completion Code '2', Reason '2035'.


更新:

日志文件显示:

AMQ9777: Channel was blocked

 EXPLANATION:
 The inbound channel 'SYSTEM.DEF.SVRCONN' was blocked from address 'ITD-     968735
 (192.168.56.1)' because the active values of the channel matched a record
  configured with USERSRC(NOACCESS). The active values of the channel were
  'CLNTUSER(alotfi) ADDRESS(ITD-968735)'.
  ACTION:
  Contact the systems administrator, who should examine the channel
  authentication records to ensure that the correct settings have been
  configured. The ALTER QMGR CHLAUTH switch is used to control whether  channel
  authentication records are used. The command DISPLAY CHLAUTH can be used  to
  query the channel authentication records.
  ----- cmqxrmsa.c : 1461 -------------------------------------------------------
  1/13/2016 15:55:13 - Process(9988.27) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                  Host(ITD-968735) Installation(Installation1)
                  VRMF(8.0.0.4) QMgr(MAJID.QUEUE.MANAGER)

    AMQ9999: Channel 'SYSTEM.DEF.SVRCONN' to host '192.168.56.1' ended abnormally.

   EXPLANATION:
   The channel program running under process ID 9988(8292) for channel
   'SYSTEM.DEF.SVRCONN' ended abnormally. The host name is '192.168.56.1'; in some
   cases the host name cannot be determined and so is shown as '????'.

最佳答案

great MQ security blog article描述了如何配置MQ以使客户端安全连接(即,不仅仅关闭安全性功能)。

但是,为了解决您的特定问题,新MQ 8队列管理器的缺省通道身份验证规则会阻止客户端通过SYSTEM。*通道连接到队列管理器。如果在新的MQ 8队列管理器上运行DIS CHLAUTH(*) ALL,您将看到:

DIS CHLAUTH(*) ALL
     2 : DIS CHLAUTH(*) ALL
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.ADMIN.SVRCONN)           TYPE(ADDRESSMAP)
   DESCR(Default rule to allow MQ Explorer access)
   CUSTOM( )                               ADDRESS(*)
   USERSRC(CHANNEL)                        CHCKCLNT(ASQMGR)
   ALTDATE(2016-01-14)                     ALTTIME(16.15.20)
AMQ8878: Display channel authentication record details.
   CHLAUTH(SYSTEM.*)                       TYPE(ADDRESSMAP)
   DESCR(Default rule to disable all SYSTEM channels)
   CUSTOM( )                               ADDRESS(*)
   USERSRC(NOACCESS)                       WARN(NO)
   ALTDATE(2016-01-14)                     ALTTIME(16.15.20)
AMQ8878: Display channel authentication record details.
   CHLAUTH(*)                              TYPE(BLOCKUSER)
   DESCR(Default rule to disallow privileged users)
   CUSTOM( )                               USERLIST(*MQADMIN)
   WARN(NO)                                ALTDATE(2016-01-14)
   ALTTIME(16.15.20)


第二条规则禁止所有客户端连接到名为SYSTEM。*的通道。这适用于您,因为您要连接到SYSTEM.DEF.SVRCONN。

您可能想为应用程序定义一个新的SVRCONN通道,以连接并使用它而不是SYSTEM.DEF.SVRCONN。

定义新通道时,MQ安全最佳实践是将通道的MCAUSER字段设置为不存在的用户-例如'nobody'。然后,您可以定义一个新的通道身份验证规则,该规则允许Java应用程序采用您选择的用户ID代替默认用户“ nobody”。例如,该规则可以是ADDRESSMAP规则,该规则允许从特定IP地址连接的所有客户端连接到新通道并采用您选择的用户ID。

综上所述:

1)选择系统上存在的有效用户(但不在“ mqm”组中)

2)定义一个新的非系统频道,将MCAUSER设置为“ nobody”,例如

DEFINE CHANNEL(MY.FIRST.CHANNEL) CHLTYPE(SVRCONN) MCAUSER('nobody')


3)定义一个新的通道身份验证规则,该规则允许来自客户端IP地址的连接,并采用您已定义的用户,例如

SET CHLAUTH(MY.FIRST.CHANNEL) TYPE(ADDRESSMAP) ADDRESS('192.168.56.1') USERSRC(MAP) MCAUSER('validuser') ACTION(REPLACE)


您将进一步执行步骤。您需要告诉MQ,允许'validuser'连接,放置和/或获取消息。您可以使用SET AUTHREC定义客户端应具有的权限。有关有效的AUTHREC选项,请参见the KnowledgeCenter

上面是如何配置MQ以使客户端连接的示例。您应该结合使用博客文章(例如我链接到的文章)和KnowledgeCenter,以结合您想要的方式来设置安全性。例如,您可能想使用TLS证书来认证您的Java客户端,而我上面没有进行过描述。

10-01 03:24
查看更多