我有一个Tomcat服务器,该服务器带有Java keystore 中存储的HTTPS证书链。该链包括自签名的根CA证书。尽管the TLS spec显然可以这样做,但一些验证服务和it's probably better to leave it off会对此发出警告。

如何编辑 keystore 以仅删除自签名的根CA证书,而保留链的其余部分和私钥不变?

最佳答案

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

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

接下来,从PKCS12文件中导出包含 key 和证书的PEM文件:
openssl pkcs12 -in old.p12 -out pemfile.pem -nodes

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

接下来,将已编辑的PEM文件加载到新的PKCS12文件中。您需要为证书/ key 提供适当的 keystore 别名,例如在这一点上,“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

10-02 01:31