Alb*_*dez 6 ssl certificate java cache
这里有一个简单的问题。
一个应用程序在尝试访问证书过期的网站时给了我这个异常: java.security.cert.CertificateExpiredException
所以,我更新了网站机器的证书并重新启动了它。当我尝试从 Firefox 或 Chrome 访问它时,它会加载新证书(它的到期日期设置在 2040 年附近)。
问题是,Java 应用程序似乎没有更新此证书,它似乎卡在某种内部缓存中。我已经尝试将它添加到keystore应用程序属性中并设置选项,例如-Dcom.sun.net.ssl.checkRevocation=false. 不管我做什么,它总是给我一个java.security.cert.CertificateExpiredException
有任何想法吗?
默认 Java 密钥库位置是主目录(user.home 系统属性)下的 .keystore 文件,因此除非您另外指定,否则 Java 应用程序将在该位置查找。
尝试运行:
$ keytool -list -keystore ~/.keystore -storepass changeit -v
Run Code Online (Sandbox Code Playgroud)
查看里面是否有过期的证书。
如果您想指定使用不同的身份密钥库,则可以使用以下系统属性来执行此操作:
javax.net.ssl.Keystore=/path/to/identity.jks
javax.net.ssl.keyStorePassword=mykeystorepassword
Run Code Online (Sandbox Code Playgroud)
我相信 Firefox 使用 NSS,您可以使用 certutil 实用程序(来自 nss-tools 或类似包)查看其密钥库 - 类似于:
$ certutil -L -d sql:$HOME/.pki/nssdb
Run Code Online (Sandbox Code Playgroud)
您应该能够使用 pk12util 实用程序将密钥和证书提取到 PKCS12 文件中,但您最好使用 keytool 实用程序生成新的证书签名请求。
请注意,吊销的证书与过期的证书不同,这就是 checkReplication=false 不起作用的原因。CA 可以随时撤销证书,即使该证书尚未过期,这表明该证书不应再受信任。
| 归档时间: |
|
| 查看次数: |
22118 次 |
| 最近记录: |