1

我最近在下检测到不稳定的 SSL 证书路径验证

Ubuntu 12.04 LTS (GNU/Linux 3.2.0-26-generic x86_64)
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12,混合模式)

Ubuntu 10.04.1 LTS
OpenJDK 运行时环境 (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.10.04.1)
OpenJDK Server VM(内部版本 20.0-b12,混合模式)

对于与在线银行主机的 SSL 连接,它以以下错误开头:

sun.security.validator.ValidatorException: PKIX path validation failed:
java.security.cert.CertPathValidatorException:  
Path does not chain with any of the trust anchors  

我检查了根证书是否始终包含在密钥库中……它是(巴尔的摩 Cyber​​Trust Root)。我已经用浏览器认证信息对话框显示的数据仔细检查了发送数据的 MD5 和 SHA1 指纹......同样!之后,我找到了 SSLPoke,这是一个用于 SSL 通信的小实用程序,并将其用于后续请求:

java -Djavax.net.debug=ssl SSLPoke hbci-pintan.gad.de 443

这显示了不稳定性:10 个请求中有 8 个因上述错误而失败,10 个请求中有 2 个成功。对于每个失败的请求,我在 Mac OS X 10.7.5 java 版本“1.6.0_35”下使用 Java(TM) SE 运行时环境(构建 1.6.0_35-b10-428-11M3811),Java HotSpot 立即发送了相同的请求(TM) 64 位服务器 VM(内部版本 20.10-b01-428,混合模式)。所有这些请求都成功了。因此,这样的 SSL 证书路径的验证在 OpenJDK 下似乎是不稳定的。

有没有人有类似的经历?

亲切的问候
多米尼克

4

1 回答 1

1

我认为这个异常有两个原因。

  1. Java 密钥库中不信任根证书。
  2. 所需的中间证书不存在或错误。路径中的所有证书都应该从 Web 服务器发送到客户端。

路径不与任何信任锚链接

参考这个链接。

于 2012-10-18T06:48:33.320 回答