使用WebSphere MQ实现双向SSL身份验证

时间:2012-10-12 11:05:53

标签: ibm-mq

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

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.

1 个答案:

答案 0 :(得分:2)

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

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

  1. 应用程序指定信任库但不指定密钥库。这适用于匿名(单向)SSL,但不适用于相互认证的SSL。应用必须为相互身份验证指定密钥存储区和信任存储区。
  2. 有时,应用程序指定信任库文件,但私有证书位于密钥库中。或者应用程序为信任存储区和密钥存储区指定相同的文件,而个人证书实际上位于单独的信任库文件中。
  3. 这些都解决了这个问题吗?如果没有,请使用keytool -cert -list为密钥库和信任库以及设置密钥库/信任库的命令行或代码部分更新问题。