gpt4 book ai didi

java - 如何将信任证书从 .jks 转换为 .pem?

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:02 24 4
gpt4 key购买 nike

我有一个 Java SSL 服务器,我希望我的 Java SSL 客户端和 C++ SSL 客户端能够连接到该服务器。 Java 客户端连接没有问题。现在我想让我的 C++ SSL 客户端能够连接。因此,出于这个目的,我想,我想将 serverpub.jks 导出到一个 .pem 文件,以便我的 C++ 客户端可以将它加载到它的 ssl 上下文中。但这是行不通的。

下面描述了我如何为 Java 客户端和服务器创建 jks keystore ,以及我如何尝试将 serverpub.jks 导出到 .pem 文件。

第 1 步:生成客户端和服务器 keystore

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 步:导出服务器公共(public)证书并创建单独的 keystore

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 步:导出客户端公共(public)证书并创建单独的 keystore

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]:

这是什么意思?我做错了什么?

第五步:本来是

c:\openssl pkcs12 -in serverpub.p12 -out serverpub.pem

但如您所见,我无法做到这一点。

如果能帮助我理解如何正确执行此操作,我将不胜感激。

谢谢

最佳答案

不幸的是,keytool 明确不允许您从信任库中导出,因为他们认为 PEM 文件不支持可信证书的概念。所以我会改用 cer 文件的 keystore 。

  • 来自 cer:

    openssl x509 -inform der -in serverpub.cer -out serverpub.pem
  • 来自 keystore :

    keytool -importkeystore -srckeystore server.jks -destkeystore server.p12 -deststoretype PKCS12
    openssl pkcs12 -in server.p12 -nokeys -out server.cer.pem
    openssl pkcs12 -in server.p12 -nodes -nocerts -out server.key.pem

或者试试

keytool -exportcert -alias myserverkeys -keystore serverpub.jks -rfc -file serverpub.pem

关于java - 如何将信任证书从 .jks 转换为 .pem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com