【问题标题】:How to remove just one certificate from a certificate chain in a Java keystore如何从 Java 密钥库中的证书链中仅删除一个证书
【发布时间】:2015-07-15 21:04:34
【问题描述】:

我有一个 Tomcat 服务器,它的 HTTPS 证书链存储在 Java 密钥库中。该链包括自签名根 CA 证书。尽管the TLS spec 显然没问题,但一些验证服务会警告它,it's probably better to leave it off

如何编辑密钥库以仅删除自签名根 CA 证书,但保留链的其余部分和私钥原样?

【问题讨论】:

    标签: java ssl https ssl-certificate keystore


    【解决方案1】:

    首先,将密钥库从 JKS 转换为 PKCS12(此命令和其他命令需要输入密码):

    keytool -importkeystore -srckeystore old.jks -destkeystore old.p12 -deststoretype pkcs12
    

    接下来,使用 PKCS12 文件中的密钥和证书导出 PEM 文件:

    openssl pkcs12 -in old.p12 -out pemfile.pem -nodes
    

    现在只需使用文本编辑器编辑 pemfile.pem 并删除违规证书(及其前面的“包属性”)。

    接下来,将编辑后的 ​​PEM 文件加载到新的 PKCS12 文件中。您需要为证书/密钥提供适当的密钥库别名,例如“tomcat”,此时。

    openssl pkcs12 -export -in pemfile.pem -name tomcat -out new.p12
    

    最后,从 PKCS12 转换回 JKS:

    keytool -importkeystore -srckeystore new.p12 -destkeystore new.jks -srcstoretype pkcs12
    

    new.jks 文件就是你想要的。

    【讨论】:

      【解决方案2】:

      keytool -delete -alias -keystore lib/security/cacerts -storepass changeit

      【讨论】:

      • 你能解释一下参数吗? changeit 是要删除的证书吗?
      • changeit 是 Java 密钥库的默认密码
      猜你喜欢
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 2014-02-12
      • 2013-10-27
      相关资源
      最近更新 更多