使用新CSR(而不是原始CSR)续订具有Symantec续订的Java Keystore的命令

两年前,我获得了VeriSign / Symantec SSL证书。 启动此请求时,我们在随机服务器上创建了一个CSR,该服务器与证书的公用名无关。 要创建Java密钥库,我执行了以下两个步骤。

openssl pkcs12 -export -in common_name.cer -inkey common_name.key -out renewal.p12 -name common_name_alias -CAfile NewVerisignIM.cer -caname root keytool -importkeystore -deststorepass XXX! -destkeypass XXX! -destkeystore renewal.keystore -srckeystore renewal.p12 -srcstoretype PKCS12 -srcstorepass XXX! -alias common_name_alias 

现在我们的证书即将到期。 在Symantec网站上使用原始条目并创建新CSR时,我们获得了签名证书文件(与上面的common_name.cer相同的文件名),私钥(与上面的common_name.key相同的文件名)。 在签署新的CSR之后,我们没有得到“NewVerisignIM.cer”文件,该文件似乎是根CA和中间CA组合在一个文件中(我相信的CA链)。 所以我不知道如何在没有该文件的情况下重新创建Java Keystore。

我尝试在签名后使用旧的“NewVerisignIM.cer”和新文件,但这不起作用。 这就是我到目前为止所做的一切。 我有一个Java例外

PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

本网站包含使用原始CSR和使用JKS时的说明。

https://knowledge.symantec.com/kb/index?page=content&id=SO11942&pmv=print&actp=PRINT&viewlocale=en_US

但是这个问题/答案建议使用新的CSR。

使用Java Keytool续订证书 – 重用旧的CSR?

如果我们使用新的CSR,我可以使用哪些命令?

我的命令是正确的。 第一个命令(X509到PKCS12)中需要新的私钥。 第一个命令中需要签名的证书。 在第一个命令中需要创建原始证书时的原始CA链文件。 续订不包含此文件作为输出。 2015年,Verisign可能尚未被赛门铁克收购,因此该文件被命名为“NewVerisignIM.cer”。 上面的第二个命令从PKCS12转换为JKS(Java密钥库)格式。

我的问题是,作为对此服务器进行身份validation的客户端的服务器没有更新公钥,因为在续订中分配了新的私钥。 请注意,Symantec建议使用此新私钥,但不是必需的。 所以我必须在包含续订证书的公用名的服务器上转换这两个命令之后从新创建的JKS存储中导出证书,然后从客户端Java密钥库中删除旧的公钥(条目)(在不同的服务器),并导入新的公钥,以便它可以与服务器通信(使用续订和新的私钥)。

命令在服务器上运行(创建新的密钥库):

 openssl pkcs12 -export -in common_name.cer -inkey common_name.key -out renewal.p12 -name common_name_alias -CAfile NewVerisignIM.cer -caname root keytool -importkeystore -deststorepass XXX! -destkeypass XXX! -destkeystore renewal.keystore -srckeystore renewal.p12 -srcstoretype PKCS12 -srcstorepass ppp1 -alias common_name_alias keytool -export -alias https-renewal -file https-renewal.pem -keystore renewal.keystore 

命令在客户端上运行(密钥库保持不变):

 keytool –delete –alias https-renewal –keystore original.keystore –storepass ppp2 keytool -import -v -alias https-renewal -file https-renewal.pem -keystore original.keystore -storepass ppp2 

(其中“https-renewal.pem”是从此答案中的第3个命令导出的文件)