在 Ubuntu (12.04.3 LTS) 上使用 openjdk-7-jre-headless (1.7.0_25) 时,我无法与 https://api.runkeeper.com/ 建立 SSL/TLS 连接。 (由 GeoTrust 发布):
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Certificate chaining error
其他服务器(例如 https://foursquare.com/,由 DigiCert 发布)工作正常,如果我使用 java-7-oracle (1.7.0_45) 也没有问题。
我将 /usr/lib/jvm/java-7-oracle/jre/lib/security/cacerts
复制到 /etc/ssl/certs/java/cacerts
,但得到相同的错误(如果我删除后一个文件,则没有 SSL 连接工作,因此正在使用该文件)。其他想法?
最佳答案
可能是证书链出现乱序。 我已经用自签名证书看到过几次 - 也许这些供应商也有同样的问题。
许多软件(例如所有主流浏览器 AFAIK)通过在证书链到达 validator 之前对其进行排序来处理此问题。
前阵子我写了一篇关于如何在 Android 上处理这个问题的博文,但同样的代码应该适用于 openjdk。
参见 http://blog.chariotsolutions.com/2013/01/https-with-client-certificates-on.html
关于ssl - OpenJDK 抛出 "certificate chaining errors",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105834/