美文网首页
一些常用的密钥证书转换命令收集

一些常用的密钥证书转换命令收集

作者: 大猪小猪在菜盘 | 来源:发表于2020-03-25 20:31 被阅读0次

    最近的项目工作中使用到了比较多的证书,私钥转换命令。用来满足不同场景下对不同格式密钥的需求。现在整理一下,供以后项目参考

    场景一,P7B格式证书的转换

    p7b是#PKCS7证书的格式,特点是有一个完整的证书链,从根证书到应用层证书。一般的大厂会有自己的PKI系统,PKI发布出来的证书通常都是这个p7b格式的。p7b格式不够直观,Java的keytool也不支持对其导入,因此我们将它转换成常见的cer / pem格式

    openssl pkcs7 -print_certs -in mine.certs.chain.p7b -out mine.certs.chain.cer
    openssl pkcs7 -print_certs -in mine.certs.chain.p7b -out mine.certs.chain.pem
    

    目录下会生成一份cer / pem格式的证书文件。打开就是一份份切分好的证书合集,从根证书到应用层证书,一目了然。在Windows环境下,cer格式证书可以直接导入到系统证书管理器中。方便的成为系统信任的根证书。

    场景二,PFX 转换为 PEM

    这是一种个人信息交换(#PKCS12)格式,后缀名也可以是p12,是一种包含私钥和证书的合体文件,并且通常有密码进行保护,可以直接导入到操作系统中。
    提取私钥:

    openssl pkcs12 -in mine.pfx -nocerts -out key.pem -nodes
    

    提取证书:

    openssl pkcs12 -in mine.pfx -nokeys -out cert.pem
    

    场景三,Java Keystore / Truststore 转换

    搞Java开发免不了使用JDK自己的密钥管理标准。Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

    在Java中,有Keystore来存储个人信息交换(Keystore / #PKCS12),信任库(Truststore)。尤其是在TLS,签名,加密的场景下,对自签名的证书都需要添加到JDK的信任库中。

    JDK/JRE默认的Truststore存放位置为:

    $JAVA_HOME/jre/lib/security
    

    以我们从PKI发布给我们的p7b证书为例,我们在转换成cer格式之后,执行如下的命令,就能导入到JDK信任链中,命令会让你输入cacerts信任库密码,默认为changeit

    cd $JAVA_HOME/jre/lib/security
    keytool -import -alias mine_trust_chain -keystore cacerts -file mine.certs.chain.cer
    

    添加完之后可以查看存在的信任库

    cd $JAVA_HOME/jre/lib/security
    echo 'changeit' | keytool -list -rfc -keystore cacerts
    

    也可以导出信任库所有信任链信息到文本文件

    keytool -list -v -keystore cacerts > jdk-all-certs.txt
    

    如果是要删除一个信任链,那么执行以下命令

    cd $JAVA_HOME/jre/lib/security
    keytool -delete -alias mine_trust_chain -keystore cacerts 
    

    相关文章

      网友评论

          本文标题:一些常用的密钥证书转换命令收集

          本文链接:https://www.haomeiwen.com/subject/phaxuhtx.html