如何替换密钥库文件中过期的中间 CA 证书?

How can I replace the expired intermediate CA certificate in a keystore file?

如何替换密钥库文件中的新中间 CA 证书?

你好, 我在服务器上有一个密钥库文件 运行 以支持 Tomcat TLS/HTTPS 服务。 在这个密钥库文件中,有 3 个证书 -

  1. 结束证书(tomcat)
  2. 中级 CA 证书(my_ssl_ca_v2_b)
  3. 根 CA 证书(my_root_ca)

这是证书列表。

C:\Program Files\Java\jre1.8.0_144\bin>keytool.exe -list  -keystore C:\mycert\
my.keystore
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries
tomcat, Oct 10, 2019, PrivateKeyEntry,
Certificate fingerprint (SHA1): 3C:15:E8:D0:46:A8:8D:1F:93:52:9D:54:35:48:69:71:ED:49:44:65
my_ssl_ca_v2_b, Oct 10, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): 0C:C3:60:CB:C6:91:0A:90:E4:0G:91:BE:3B:A6:D7:5B:C3:7B:8A:0F
my_root_ca, Oct 10, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): 6C:23:89:FA:A8:E5:7D:E1:45:BE:75:84:15:E8:D8:41:73:59:FD:19

工作正常。

几天前,文件中的中间 CA 证书已过期。我后来得到了新更新的中间CA证书。

现在,问题是 - 如何用新证书替换密钥库文件中过期的中间 CA 证书?

我知道我可以使用 keytool -delete 和 -import 选项删除并重新导入中间 CA my_ssl_ca_v2_b。

但是,我该如何替换密钥库文件中 PrivateKeyEntry(别名 tomcat)中的中间 CA 证书,如下所示?

**Alias name: tomcat**
Creation date: Oct 10, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 3
Certificate[1]:
...
...
Certificate[2]:
Owner: CN=My SSL CA v2 - A, O=eBay Inc, C=US
Issuer: CN=My Root CA, O=eBay Inc, C=us
Serial number: 6800000004b4491dd58df45b9b000000000004
**Valid from: Wed Oct 14 18:35:33 UTC 2015 until: Wed Oct 14 18:45:33 UTC 2020**
...
...
Certificate[3]:
Owner: CN=My Root CA, O=eBay Inc, C=us
Issuer: CN=My Root CA, O=eBay Inc, C=us
Serial number: 4500888247008e884cd02d71a035810e

我无法使用 keytool -delete 和 -import 选项删除并重新导入带有 End Cert 文件的别名 tomcat,因为这也会删除私钥,而且私钥永远不会回来。

能否教我替换密钥库中的中间 CA 证书的具体步骤?非常感谢!

-六月

这不是真正的编程或开发问题,即使您在 tomcat 上使用了结果,也可能会关闭。

您需要在 PEM 中创建一个包含整个链的文件——end-entity、中间证书和根证书。如果您在 PEM 中还没有 EE 证书,您可以使用 keytool -export[cert] -keystore ksfile -alias tomcat -rfc -file eecert 提取它。显然,您拥有刚刚获得的新中间证书,如果您还没有根目录(并且它没有更改),也可以导出它。您可以在 Unix 上使用 cat a b c >d 或在 Windows 上使用 COPY a+b+c d 组合这些文件,或者使用您喜欢的任何文本编辑器。然后像keytool -import[cert] -keystore ksfile -alias tomcat -file chainfile.

一样导入私钥入口