Java Web Start:证书未指定 OCSP 响应程序

Java Web Start: Certificate does not specify OCSP responder

我尝试通过 HTTPS 使用 Java 8 连接到具有自签名 TLS 证书的内联网服务器上的 JNLP 文件。

当 Java Web Start 尝试加载 JNLP 尝试中指定的第一个资源(来自该服务器的文件)时,它抛出异常:

javax.net.ssl.SSLHandshakeException: com.sun.deploy.security.RevocationChecker$StatusUnknownException: Certificate does not specify OCSP responder
at sun.security.ssl.Alerts.getSSLException(Unknown Source)

...

Caused by: com.sun.deploy.security.RevocationChecker$StatusUnknownException: Certificate does not specify OCSP responder
at com.sun.deploy.security.RevocationChecker.checkOCSP(Unknown Source)
at com.sun.deploy.security.RevocationChecker.check(Unknown Source)
at com.sun.deploy.security.RevocationCheckHelper.doRevocationCheck(Unknown Source)
at com.sun.deploy.security.RevocationCheckHelper.doRevocationCheck(Unknown Source)
at com.sun.deploy.security.RevocationCheckHelper.checkRevocationStatus(Unknown Source)
at com.sun.deploy.security.X509TrustManagerDelegate.checkTrusted(Unknown Source)
at com.sun.deploy.security.X509Extended7DeployTrustManagerDelegate.checkServerTrusted(Unknown Source)
at com.sun.deploy.security.X509Extended7DeployTrustManager.checkServerTrusted(Unknown Source)
... 39 more
Suppressed: com.sun.deploy.security.RevocationChecker$StatusUnknownException
    at com.sun.deploy.security.RevocationChecker.checkCRLs(Unknown Source)
    ... 46 more

有什么想法吗?

确实我们没有指定OCSP响应者。但这真的是个问题吗?有趣的是,这适用于我同事的机器(他们只收到警告)。前几天临时安装了Java9来测试一下。这有可能混淆了什么吗?我又卸载了,btw.

我当前的解决方法是在Java控制面板(选项卡“高级”)中将“执行 TLS 证书吊销检查”设置为“不检查(不建议)”。但是我不喜欢那样。

我今天解决了这个问题,只是我的证书有问题 - 重新创建了我的密钥库,但我的信任库缺少网站证书中指定的新 root/intermediate 证书。我返回并将证书添加到信任库并重新启动该站点,并且成功了。

keytool -import -trustcacerts -alias root -file NewRoot.cer -keystore cacerts
keytool -import -trustcacerts -alias "Intermed Name Here" -file NewInt.cer -keystore cacerts

-- 当 Java 真正按顺序检查 CRL 和 OCSP 时,我正走入死胡同追逐 OCSP 响应程序。真正需要的只是修复信任库/CA。

布伦特