java - 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 集成,并希望避免由于此证书更改而对其进行更改。
解决方案
您的第三个删除命令也删除了您的私钥。这就是您的应用程序损坏的原因,您需要您的私钥才能使 SSL 工作。
当您说您想重用上次使用的相同 CSR 时,这意味着您计划使用相同的私钥,但您删除了它。这就是为什么您在删除和导入后将它们视为不同类型的原因。在您的第一个 keytoollist
中,您将 app.domain.com 作为 PrivateKeyEntry(包含私钥和证书),但在删除并导入证书后,您将 app.domain.com 作为 TrustedCertEntry(仅证书)。如果您没有删除私钥,则导入命令会将新证书与其关联,因为找不到私钥,它只是添加证书。
在您的情况下,您应该完成以下步骤:
- 不运行第三个删除命令
-importcert
使用 keytool 的命令导入新证书并与现有私钥相关联。
可以在此处、此处和此处找到尝试重用与上次相同的 CSR 时需要考虑的事项。
PS:我希望你已经备份了你原来的密钥库。
推荐阅读
- android - 阻止我的应用程序复制 textview 的文本
- android - Android viewpager 滞后于 recyclerviews
- java - 我不明白为什么我的计算不起作用
- python - 将带有参数的 Python 装饰器合并为一个
- mysql - 如何在mysql中执行全文搜索
- javascript - Passport-ldapauth:缺少凭据
- javascript - 使用 jQquery 或 JavaScript 对嵌套的 html 元素进行排序
- c# - 如何将 FluentValidation 库与 MediatR IPipelineBehavior 一起使用?
- c# - Xamarin.Forms MVVM 从 DISplayAlert 获得响应
- android - 安卓现在能存多少个指纹?