为什么我需要同时提供密钥存储和信任存储以实现与IBM MQ的SSL连接

时间:2019-03-08 13:48:30

标签: java ssl keystore truststore

我创建了一个轻量级应用程序,该应用程序使用SSL连接到IBM MQ。

如果我同时设置javax.net.ssl.trustStorejavax.net.ssl.keyStore,一切都会按预期进行。

密钥库(jks)包含两个条目:

  1. TrustedCertEntry

  2. PrivateKeyEntry

由于我是该连接的客户端,而MQ是服务器,因此我有一种感觉,应该仅使用trustStore,但这不是这种情况,因为如果仅设置trustStore,应用程序将无法正常工作。

任何人都可以向我解释为什么都需要吗?

1 个答案:

答案 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