使用amqputc连接TLS队列遇MQCONNX 2393错误,请求配置排查
排查MQ AMQ9636E SSL身份匹配问题
环境配置概述
- 已安装MQ,通过
mq-dev-config.mqsc创建队列 - 生成TLS所需根证书、服务器证书、客户端证书,存放于
/var/mqm/qmgrs/QM1/ssl路径 - 队列管理器QM1已正确加载
SSLKEYR(/var/mqm/qmgrs/QM1/ssl/key)和CERTLABL(ibmwebspheremqqm1)配置 - 使用
DEV.APP.SVRCONN通道,通道配置:SSLCIPH(ANY_TLS12)、SSLCAUTH(OPTIONAL)、CERTLABL('')- 移除队列管理器CONNAUTH配置,添加回退通道认证规则
- CHLAUTH规则设置:仅允许
SSLPEER('CN=mqclient,O=mq,C=us')且SSLCERTI('CN=ca-rootca')的客户端连接
- Java客户端可正常连接,但使用
amqputc工具连接时报错:AMQ9636E: SSL distinguished name does not match peer name, channel 'DEV.APP.SVRCONN'
排查与解决步骤
1. 校验客户端证书DN一致性
用openssl命令查看客户端证书的实际DN,确认是否与CHLAUTH规则中的SSLPEER完全匹配(MQ对DN的匹配严格区分大小写、空格及字段顺序):
openssl x509 -in <客户端证书文件路径> -noout -subject
2. 检查客户端配置文件
确保mqclient.ini正确指定客户端证书库路径:
SSL: KeyRepository=<客户端证书库路径,例:/var/mqm/ssl/key.kdb>
若使用CCDT文件,需确认:
- CCDT中通道的
SSLCIPH设置为ANY_TLS12 - 客户端通过环境变量
MQCCDTURL正确加载CCDT文件
3. 修正amqputc连接参数
执行amqputc时需明确指定SSL相关参数,示例:
amqputc -x <MQ主机>:<端口> -c DEV.APP.SVRCONN -k <客户端证书库路径> -s ANY_TLS12 <目标队列名>
若证书库设置了密码,需额外添加-p <证书库密码>参数,或确保同目录存在密码文件(.sth格式)。
4. 核查CHLAUTH规则优先级
用MQSC命令查看所有通道认证规则,确认目标允许规则的优先级高于其他DENY规则:
DISPLAY CHLAUTH(*) ALL
重点关注规则的TYPE、SSLPEER、SSLCERTI及ACTION字段,确保目标规则为ACTION(ALLOW)且未被其他规则覆盖。
5. 启用通道跟踪定位细节
若以上步骤未解决问题,可启用通道跟踪获取SSL握手日志:
ALTER CHANNEL(DEV.APP.SVRCONN) TRACE(ON)
尝试用amqputc连接后,查看队列管理器日志文件/var/mqm/qmgrs/QM1/errors/AMQERR01.LOG,日志会明确显示客户端提交的DN信息,可直接对比CHLAUTH规则定位不匹配点。
内容的提问来源于stack exchange,提问作者user10820864
相关产品推荐
相关产品推荐

