如何从Java密钥库中的证书链中仅删除一个证书

时间:2015-07-15 21:04:34

标签: java ssl https ssl-certificate keystore

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

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

2 个答案:

答案 0 :(得分:9)

首先,将密钥库从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就是您想要的。

答案 1 :(得分:0)

keytool-删除-alias -keystore lib / security / cacerts -storepass changeit