java KDB到JKS密钥库转换

xzv2uavs  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(257)

我是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启动。但我不能

nc1teljy

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. kdb/rdb/sth文件一起表示IBM证书管理服务(CMS)密钥库。
    1.有一个-keydb -convert选项表明它应该具有与我上面提供的两个步骤相同的结果,但是我注意到它并不总是复制所有证书。
s3fp2yjn

s3fp2yjn2#

我不认为你可以,但你可以使用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部分

rmbxnbpk

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");

相关问题