我在Windows 8中安装了Websphere MQ 8服务器,
使用MQ Explorer:
我使用端口MAJID.QUEUE.MANAGER
创建了一个队列管理器1419
。
我在端口TCP
上创建了一个1419
侦听器。
我尝试了一个从MQ8安装工具的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 '????'.
答案 0 :(得分:3)
有一个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字段设置为不存在的用户 - 例如“无人”。然后,您可以定义新的通道身份验证规则,该规则允许您的Java应用程序采用您选择的用户ID,而不是默认用户' nobody'。例如,规则可以是ADDRESSMAP规则,允许从特定IP地址连接的任何客户端连接到新通道并采用您选择的用户ID。
总结:
1)选择系统中存在的有效用户(但不在' mqm'组中)
2)定义一个新的非SYSTEM通道,将MCAUSER设置为“无人”,例如
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以让客户端连接的示例。您应该使用我已链接到的知识库和知识中心等博客文章的组合来按需要设置您的安全性。例如,您可能希望使用TLS证书来验证您的Java客户端,我上面没有描述过。