首页 > 解决方案 > java keystore CA 证书有效性扩展

问题描述

我有一个今年到期的 CA 证书。我的 key.jks 文件列表如下。

inter, Dec 17, 2019, trustedCertEntry,
....
root, Dec 17, 2019, trustedCertEntry,
....
app.domain.com, Dec 29, 2019, PrivateKeyEntry,

为了延长有效期,我给出了去年给出的相同的 CSR 文件。现在我有新的 3 个用于 inter、root 和域名的 crt 文件。

现在我试图删除旧条目

keytool -delete -alias inter -keystore key.jks -storepass pword
keytool -delete -alias root -keystore key.jks -storepass pword
keytool -delete -alias app.domain.com -keystore key.jks -storepass pword

并导入新的证书文件,如

keytool -import -alias inter -file intermediate.crt -keystore key.jks -storepass pword
keytool -import -alias root -file TrustedRoot.crt -keystore key.jks -storepass pword
keytool -import -alias app.domain.com -file app_domain_com.crt -keystore key.jks -storepass pword

现在keytool -list不显示 app_domain_com.crt 的 PrivateKeyEntry 并且应用程序没有出现。

inter, Dec 15, 2020, trustedCertEntry,
....
root, Dec 15, 2020, trustedCertEntry,
....
app.doamin.com, Dec 15, 2020, trustedCertEntry,

我有 ADFS SSO 集成,并希望避免由于此证书更改而对其进行更改。

标签: javassl-certificatekeystorewebsphere-liberty

解决方案


您的第三个删除命令也删除了您的私钥。这就是您的应用程序损坏的原因,您需要您的私钥才能使 SSL 工作。

当您说您想重用上次使用的相同 CSR 时,这意味着您计划使用相同的私钥,但您删除了它。这就是为什么您在删除和导入后将它们视为不同类型的原因。在您的第一个 keytoollist中,您将 app.domain.com 作为 PrivateKeyEntry(包含私钥和证书),但在删除并导入证书后,您将 app.domain.com 作为 TrustedCertEntry(仅证书)。如果您没有删除私钥,则导入命令会将新证书与其关联,因为找不到私钥,它只是添加证书。

在您的情况下,您应该完成以下步骤:

  1. 不运行第三个删除命令
  2. -importcert使用 keytool 的命令导入新证书并与现有私钥相关联。

可以在此处此处此处找到尝试重用与上次相同的 CSR 时需要考虑的事项。

PS:我希望你已经备份了你原来的密钥库。


推荐阅读