如何将信任证书从 .jks 转换为 .pem?
我有一个 Java SSL 服务器,我希望我的 Java SSL 客户端和C++ SSL 客户端能够连接到该服务器。Java 客户机连接没有问题。现在,我希望我的C++ SSL 客户端能够连接。因此,出于这个目的,我想象,我想将serverpub.jks导出到.pem文件,以便我的C++客户端可以将其加载到其ssl上下文中。但这是行不通的。
下面描述了我如何为Java客户机和服务器创建jks密钥库,然后我如何尝试将serverpub.jks导出到.pem文件。
步骤 1:生成客户机和服务器密钥库
c:\keytool -genkeypair -alias myserverkeys -keyalg RSA -dname "CN=my Server,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore server.jks -storepass password
c:\keytool -genkeypair -alias myclientkeys -keyalg RSA -dname "CN=my Client,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore myclient.jks -storepass password
步骤 2:导出服务器公共证书并创建单独的密钥库
c:\keytool -exportcert -alias myserverkeys -file serverpub.cer -keystore myserver.jks -storepass spacex
c:\keytool -importcert -keystore serverpub.jks -alias serverpub -file serverpub.cer -storepass password
步骤 3:导出客户端公共证书并创建单独的密钥库
c:\keytool -exportcert -alias myclientkeys -file clientpub.cer -keystore myclient.jks -storepass spacey
c:\keytool -importcert -keystore clientpub.jks -alias clientpub -file clientpub.cer -storepass password
目前为止,一切都好。
现在,这是我遇到问题的地方。
步骤 4:将 serverpub.jks 转换为 .pem 格式
c:\keytool -importkeystore -srckeystore serverpub.jks -destkeystore serverpub.p12 -srcstoretype jks -deststoretype pkcs12
和回复
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Problem importing entry for alias serverpub: java.security.KeyStoreException: TrustedCertEntry not supported.
Entry for alias serverpub not imported.
Do you want to quit the import process? [no]:
这是什么意思?我做错了什么?
步骤5:本来是
c:\openssl pkcs12 -in serverpub.p12 -out serverpub.pem
但正如你所看到的,我无法走那么远。
我真的非常感谢一些帮助,了解如何正确地做到这一点。
谢谢