【问题标题】:Implementing 2-way SSL authentication with WebSphere MQ使用 WebSphere MQ 实现 2 路 SSL 认证
【发布时间】:2012-10-03 04:32:55
【问题描述】:

我使用一个使用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>。因为我是通过 Java 连接的,所以这个用户 ID 是什么?

AMQ9637: Channel is lacking a certificate.

【问题讨论】:

标签: ibm-mq


【解决方案1】:

根据技术说明Specifying the userid in the SSL certificate label for an MQ client,Java 和 JMS 客户端不会根据标签找到他们的证书。

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

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

这两种方法都能解决问题吗?如果不是,请使用keytool -cert -list 更新问题,用于密钥库和信任库以及设置密钥库/信任库的命令行或代码部分。

【讨论】:

  • 我确实指定了一个信任库,但没有指定密钥库。指定密钥库可解决此问题。再次感谢您的时间和精力。
  • 很高兴它有帮助。在审查中,我看到我在第一个项目符号中反转了密钥库/信任库。你显然明白我的意思,但我已经为下一个人更正了。
猜你喜欢
  • 2015-09-09
  • 1970-01-01
  • 2018-02-15
  • 2021-08-22
  • 1970-01-01
  • 2016-02-21
  • 2011-05-29
  • 2012-09-10
  • 2017-04-13
相关资源
最近更新 更多