首页 > 解决方案 > 在 Java 中创建信任库

问题描述

供应商给了我一个 .jks 以通过 jms 连接到他们的 mq。我使用以下代码作为我的概念证明的模板。

使用 SSL/Keystore 连接到 Java 中的 Websphere MQ

密钥库的创建很好,但是当它尝试创建信任库时,它会加载一个新的 .jks 文件。我应该生成这个文件还是应该提供它,因为目前我无法创建它。

// instantiate a KeyStore with type JKS
 KeyStore ks = KeyStore.getInstance("JKS");
 // load the contents of the KeyStore
 ks.load(new FileInputStream("/home/hudo/hugo.jks"), KSPW);
 System.out.println("Number of keys on JKS: "
       + Integer.toString(ks.size()));

 // Create a keystore object for the truststore
 KeyStore trustStore = KeyStore.getInstance("JKS");
 // Open our file and read the truststore (no password)
 trustStore.load(new FileInputStream("/home/xwgztu2/xwgztu2.jks"), null);

谢谢

标签: javaencryptionibm-mqkeystoretruststore

解决方案


这个答案有很多假设(因为这个问题没有提供太多信息),但我也假设它伴随着丰富的经验。

要创建 SSL 连接,服务器必须具有密钥对(私钥、公钥和绑定到公钥的证书),并且客户端必须信任证书(或其颁发者)。还有一个双向 SSL 选项(也称为客户端身份验证 ssl),其中客户端需要自己的密钥对和证书,而服务器需要信任客户端的证书。

Truststore 它会加载一个新的 .jks 文件。我应该生成这个文件还是应该提供它,因为目前我无法创建它。

信任库应有效地包含服务器证书的颁发者证书(如果使用自签名证书,则为同一证书)。

您可以通过连接到服务来获取证书

openssl s_client -connect host:port -showcerts

然后将返回的证书导入新的密钥库(使用例如keytool -importcert命令)

keytool -importcert -keystore mytruststore.jks -alias mqserver -file servercert.pem

如果服务器返回给您多个证书(证书链),您可以将它们全部导入。

如果您不能这样做,只需要求服务提供商(部署 MQ 的人)为您提供证书或信任库。


推荐阅读