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

 bbylooserxd_597 发布于 2023-01-08 11:25

我有一个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

但正如你所看到的那样,我无法走得那么远.

我真的很感激一些帮助,了解如何做到这一点.

谢谢

1 个回答
  • 不幸的是,keytool显然不允许您从信任存储区导出,因为它们是PEM文件不支持可信证书概念的选项.所以我会使用cer文件的密钥库.

    来自一个cer:

    openssl x509 -inform der -in serverpub.cer -out serverpub.pem
    

    从密钥库:

    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
    

    2023-01-08 11:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有