【发布时间】:2018-12-26 11:47:24
【问题描述】:
供应商给了我一个 .jks 来通过 jms 连接到他们的 mq。我使用以下代码作为我的概念证明模板。
Connecting to a Websphere MQ in Java with SSL/Keystore
Keystore 的创建很好,但是当它尝试创建 Truststore 时,它会加载一个新的 .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);
谢谢
【问题讨论】:
-
Keystore 的创建很好,但是当它尝试创建 Truststore 时,它会加载一个新的 .jks 文件。 什么?
-
你得到了什么异常?
-
查看我对另一个问题“How to enable SSL with client certificate for Websphere MQ client?”的回答。在任何现代版本的 MQ 中,您不需要专门设置密钥库和信任库,只需传递 java 系统属性,例如
-Djavax.net.ssl.trustStore=trust.jks。您提供的同一个 jks 文件可能会同时作为密钥库和信任库传递而不会出现问题,但通常您不需要单独的信任库。 -
他们提供的密钥库应该包括客户端证书以及该证书的签名者链,很可能供应商的队列管理器证书的签名者已经包含在该 jks 中,甚至可能与客户端证书的签名者。 Java 将信任密钥库中的 CAcerts,如果您不需要信任任何其他内容,您甚至不需要指定信任库。
标签: java encryption ibm-mq keystore truststore