我创建了一个轻量级应用程序,该应用程序使用SSL连接到IBM MQ。
如果我同时设置javax.net.ssl.trustStore
和javax.net.ssl.keyStore
,一切都会按预期进行。
密钥库(jks)包含两个条目:
TrustedCertEntry
PrivateKeyEntry
由于我是该连接的客户端,而MQ是服务器,因此我有一种感觉,应该仅使用trustStore,但这不是这种情况,因为如果仅设置trustStore,应用程序将无法正常工作。
任何人都可以向我解释为什么都需要吗?
答案 0 :(得分:1)
按照SSL configuration of the Websphere MQ Java/JMS client指南,指向 2。创建keyStore 您最有可能使用证书进行客户端身份验证。此身份验证设置需要一个keyStore:
仅当与队列管理器建立连接时希望进行客户端身份验证时,才填写此部分。如果尚未在通道上指定客户端身份验证,则无需完成本节。
keyStore本质上与trustStore相同,区别在于keyStore拥有客户端的个人证书,并且JSSE要求密码才能访问。实际上,您可以将您的个人证书添加到之前创建的trustStore中,它将同时充当trustStore和keyStore,但是现在不需要将以前不需要的密码传递给JSSE,以便它可以访问您的个人证书。
您可以通过运行以下命令在 Using self-signed certificates for mutual authentication of a client and queue manager指南中所示的服务器上进行验证:
DISPLAY CHSTATUS(<your channel name>) SSLPEER SSLCERTI