developerWorks 中的 Alex Fehners 教程有点旧(2005 年),但有适合您的代码示例。
Websphere MQ Java/JMS 客户端的 SSL 配置 http://www.ibm.com/developerworks/websphere/library/techarticles/0510_fehners/0510_fehners.html
您的 Java 应用程序将根据其证书对 QMgr 进行身份验证。这意味着您提供的 jks 文件必须具有 QMgr 的自签名证书,或者具有签署 QMgr 证书的证书颁发机构的根证书。在任何一种情况下,您都可以使用-Djavax.net.ssl.trustStore=<location of trustStore>
如上面链接的文章所述。如果 jks 有密码,则需要指定-Djavax.net.ssl.trustStorePassword=<password>
以及。使用信任库对 QMgr 进行身份验证是always必需的。下一部分可能需要也可能不需要。
另一个难题是 QMgr 可能要求您的应用程序提供证书。换句话说,QMgr 证书是always已验证,应用程序是否需要验证是可选的。如果是,那么您就拥有了所谓的“相互身份验证”。如果您连接的通道已配置SSLCAUTH(REQUIRED)
那么相互身份验证已启用,并且 QMgr 必须拥有您的应用程序的自签名证书或在其密钥库中签署您的应用程序证书的 CA 根证书。希望设置你的 jks 文件的人已经为此做好了安排。
假设需要相互身份验证,那么除了 QMgr 的可信证书之外,您的 jks 还将拥有代表您的应用程序的私有证书。要让应用程序获取证书并将其呈现给 QMgr,您可以使用-Djavax.net.ssl.keyStore=<location of keyStore>
and -Djavax.net.ssl.keyStorePassword=<password>
参数。注意这些说key商店,而之前的帕尔斯说trust store.
我的建议是与 WMQ 管理员合作来设置和测试 SSL 连接。第一阶段应该是测试通道SSLCAUTH(OPTIONAL)
。这将验证应用程序是否可以解析并验证 QMgr 的证书。只有当您完成此操作后,WMQ 管理员才会将通道更改为SSLCAUTH(REQUIRED)
它以相反的方向测试身份验证。
I would highly建议您对新应用程序使用 WMQ v7 客户端。这有两个原因:1) v6 已于 2011 年 9 月终止; 2) v7 代码内置了更多诊断功能。v7 客户端代码与 v6 QMgr 完全兼容,并且像 v6 客户端一样工作。您只是无法获得 v7 的功能。在这里免费下载 WMQ 客户端代码:
我今年在 IMPACT 上运行 WMQ 实践安全实验室,并将在周末发布脚本和实验指南:http://t-rob.net http://t-rob.net所以回来检查一下。