使用新 CSR(不是原始 CSR)的 Symantec 续订更新 Java 密钥库的命令
Commands to renew a Java Keystore with a Symantec renewal using a new CSR (not the original CSR)
两年前,我获得了 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
现在我们的证书即将过期。使用赛门铁克网站上的原始条目并创建新的 CSR 时,我们得到了签名证书文件(与上面 common_name.cer 相同的文件名)、私钥(与上面 common_name.key 相同的文件名) .签署新的 CSR 后,我们没有取回 "NewVerisignIM.cer" 文件,该文件似乎是根 CA 和中间 CA 组合在一个文件中(我相信也就是 CA 链)。所以我不知道如何在没有该文件的情况下重新创建 Java 密钥库。
我尝试在签名后将旧 "NewVerisignIM.cer" 与新文件一起使用,但没有用。到目前为止,这就是我尝试过的所有内容。我得到了 Java 异常
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
本网站包含使用原始 CSR 和使用 JKS 的说明。
但是这个 question/answer 建议使用新的 CSR。
Renew certificate with Java Keytool - reuse old CSR?
如果我们使用新的 CSR,我可以使用哪些命令?
我的命令是正确的。第一个命令(X509 到 PKCS12)需要 new 私钥。第一个命令需要 new 签名证书。在创建原始证书时,第一个命令需要原始 CA 链文件。更新不包含此文件作为输出。 2015 年,Verisign 可能还没有被 Symantec 收购,所以文件被命名为 "NewVerisignIM.cer"。上面的第二个命令将 PKCS12 格式转换为 JKS(Java 密钥库)格式。
我的问题是作为客户端的服务器正在对此服务器进行身份验证,但没有更新 public 密钥,因为在更新中分配了一个新的私钥。请注意,这个新私钥是赛门铁克推荐的,但不是必需的。所以我不得不在包含续订证书公用名称的服务器上转换这两个命令后从新创建的 JKS 存储中导出证书,然后从客户端删除旧的 public 密钥(条目)Java 密钥库(在不同的服务器上),并导入新的 public 密钥,以便它可以与服务器通信(更新和新的私钥)。
服务器上的命令 运行(创建了新的密钥库):
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 个命令导出的文件)
两年前,我获得了 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
现在我们的证书即将过期。使用赛门铁克网站上的原始条目并创建新的 CSR 时,我们得到了签名证书文件(与上面 common_name.cer 相同的文件名)、私钥(与上面 common_name.key 相同的文件名) .签署新的 CSR 后,我们没有取回 "NewVerisignIM.cer" 文件,该文件似乎是根 CA 和中间 CA 组合在一个文件中(我相信也就是 CA 链)。所以我不知道如何在没有该文件的情况下重新创建 Java 密钥库。
我尝试在签名后将旧 "NewVerisignIM.cer" 与新文件一起使用,但没有用。到目前为止,这就是我尝试过的所有内容。我得到了 Java 异常
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
本网站包含使用原始 CSR 和使用 JKS 的说明。
但是这个 question/answer 建议使用新的 CSR。
Renew certificate with Java Keytool - reuse old CSR?
如果我们使用新的 CSR,我可以使用哪些命令?
我的命令是正确的。第一个命令(X509 到 PKCS12)需要 new 私钥。第一个命令需要 new 签名证书。在创建原始证书时,第一个命令需要原始 CA 链文件。更新不包含此文件作为输出。 2015 年,Verisign 可能还没有被 Symantec 收购,所以文件被命名为 "NewVerisignIM.cer"。上面的第二个命令将 PKCS12 格式转换为 JKS(Java 密钥库)格式。
我的问题是作为客户端的服务器正在对此服务器进行身份验证,但没有更新 public 密钥,因为在更新中分配了一个新的私钥。请注意,这个新私钥是赛门铁克推荐的,但不是必需的。所以我不得不在包含续订证书公用名称的服务器上转换这两个命令后从新创建的 JKS 存储中导出证书,然后从客户端删除旧的 public 密钥(条目)Java 密钥库(在不同的服务器上),并导入新的 public 密钥,以便它可以与服务器通信(更新和新的私钥)。
服务器上的命令 运行(创建了新的密钥库):
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 个命令导出的文件)