我是Java中TLS的新手。我有KDB、RDB和STN扩展名的文件。如何设置JKS密钥库并在Java应用程序中使用它来实现TLS(使用IBM WebSphere MQ客户端)?我的疑虑是:1.我可以使用ikeyman进行转换吗?1.我可以将KDB文件直接转换为JKS密钥库吗?1.我是否需要任何其他证书来在IBM原生MQ测试应用程序中实现TLS?1.如何将TLS参数添加到IBM Native MQ API?我试过让ikeyman启动。但我不能
nc1teljy1#
您没有提到您使用的是哪个版本的MQ客户端,为了回答这个问题,我假设您使用的是MQ客户端7。1或更高版本。您可以从源kdb文件构建Java密钥存储库(jks)。这需要两个步骤来完成:1.创建一个空的Java Key Store(jks):runmqckm -keydb -create -db target.jks -type jks这将提示输入用于保护jks文件的密码。1.将所有证书从源kdb文件导入到上面创建的目标jks文件:runmqckm -cert -import -db source.kdb -type cms -target target.jks -target_type jks这将提示输入两个密码,第一个是kdb文件的密码,第二个是jks文件的密码。如果添加标记'-stashed',它将消除第一个密码提示。1.然后,您可以列出kdb和jks中包含的证书,以比较和验证所有证书都被复制了:runmqckm -cert -list -db source.kdb -type cms -stashed由于-stashed标志,上面的命令不会提示输入密码。runmqckm -cert -list -db target.jks -type jks上面的命令将提示输入jks密码。
runmqckm -keydb -create -db target.jks -type jks
runmqckm -cert -import -db source.kdb -type cms -target target.jks -target_type jks
runmqckm -cert -list -db source.kdb -type cms -stashed
-stashed
runmqckm -cert -list -db target.jks -type jks
-keydb -convert
s3fp2yjn2#
我不认为你可以,但你可以使用key tool创建一个.jks密钥并导入服务器证书或信任库证书。
key tool
.jks
keytool -keystore clientkey.jks -storetype jks -importcert -file servercert.pem -alias server-cert
查看https://github.com/ibm-messaging/mq-dev-patterns中的TLS部分
rmbxnbpk3#
Java支持JKS和PKCS12密钥存储类型。它还区分keyStore(包含客户端证书)和trustStore(包含受信任证书)。keyStore和trustStore都是必需的。客户端证书(keyStore)可以从导出。kdb直接通过gsk8capicmd_64命令:
gsk8capicmd_64 -cert -export -db file.kdb -pw your_password -target file.p12 -target_pw your_password
TrustStore。可以通过从导出受信任证书来创建jk。kdb并将其插入new。jks:
for CERT_LABEL in $(gsk8capicmd_64 -cert -list -db file.kdb -pw your_password | grep ^! | cut -f2); do gsk8capicmd_64 -cert -extract -db file.kdb -pw your_password -label ${CERT_LABEL} -target temp.cert; yes | keytool -importcert -alias ${CERT_LABEL} -file temp.cert -keystore file.jks -storepass your_password; done;
KeyStore和trustStore可以在命令行或直接在代码中配置:
System.setProperty("javax.net.ssl.keyStore", "file.p12"); System.setProperty("javax.net.ssl.keyStorePassword", "your_password"); System.setProperty("javax.net.ssl.keyStoreType", "pkcs12"); System.setProperty("javax.net.ssl.trustStore", "file.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "your_password"); System.setProperty("javax.net.ssl.trustStoreType", "jks");
3条答案
按热度按时间nc1teljy1#
您没有提到您使用的是哪个版本的MQ客户端,为了回答这个问题,我假设您使用的是MQ客户端7。1或更高版本。
您可以从源kdb文件构建Java密钥存储库(jks)。
这需要两个步骤来完成:
1.创建一个空的Java Key Store(jks):
runmqckm -keydb -create -db target.jks -type jks
这将提示输入用于保护jks文件的密码。
1.将所有证书从源kdb文件导入到上面创建的目标jks文件:
runmqckm -cert -import -db source.kdb -type cms -target target.jks -target_type jks
这将提示输入两个密码,第一个是kdb文件的密码,第二个是jks文件的密码。如果添加标记'-stashed',它将消除第一个密码提示。
1.然后,您可以列出kdb和jks中包含的证书,以比较和验证所有证书都被复制了:
runmqckm -cert -list -db source.kdb -type cms -stashed
由于
-stashed
标志,上面的命令不会提示输入密码。runmqckm -cert -list -db target.jks -type jks
上面的命令将提示输入jks密码。
注意事项
1.有一个
-keydb -convert
选项表明它应该具有与我上面提供的两个步骤相同的结果,但是我注意到它并不总是复制所有证书。s3fp2yjn2#
我不认为你可以,但你可以使用
key tool
创建一个.jks
密钥并导入服务器证书或信任库证书。查看https://github.com/ibm-messaging/mq-dev-patterns中的TLS部分
rmbxnbpk3#
Java支持JKS和PKCS12密钥存储类型。它还区分keyStore(包含客户端证书)和trustStore(包含受信任证书)。keyStore和trustStore都是必需的。
客户端证书(keyStore)可以从导出。kdb直接通过gsk8capicmd_64命令:
TrustStore。可以通过从导出受信任证书来创建jk。kdb并将其插入new。jks:
KeyStore和trustStore可以在命令行或直接在代码中配置: