ibm-mq – 使用WebSphere MQ实现双向SSL身份验证

我使用JMS / JNDI的
Java客户端.使用单向SSL身份验证SSLCAUTH(可选)时,连接正在工作.我做的第一步是导出客户的公共证书:

keytool -export -keystore keystore -storepass storepass -alias CLIENT -file client.cer

然后我将此证书添加到MQ密钥存储库.

gsk7cmd -cert -add -db keydb.kdb -pw password -label ibmwebspheremqclient -file client.cer -format binary

我终于切换到SSLCAUTH(REQUIRED)模式.

我收到以下错误日志.消息很清楚,它找不到我的客户端证书.我读到我的客户端证书应该有一个标签ibmwebspheremq< client_user_id>.这个用户ID是什么,因为我通过Java连接?

AMQ9637: Channel is lacking a certificate.

最佳答案 根据Technote
Specifying the userid in the SSL certificate label for an MQ client,Java和JMS客户端根据标签找不到证书.

通常问题是信任存储和密钥存储区之间的不匹配.我经常看到两个问题.

>应用程序指定信任库,但不指定密钥库.这适用于匿名(单向)SSL,但不适用于相互认证的SSL.应用程序必须为相互身份验证指定密钥库和信任库.
>有时,应用程序指定信任库文件,但私有证书位于密钥库中.或者应用程序为信任存储区和密钥存储区指定相同的文件,而个人证书实际上位于单独的信任库文件中.

这些都解决了这个问题吗?如果没有,请使用keytool -cert -list为密钥库和信任库以及设置密钥库/信任库的命令行或代码部分更新问题.

点赞