在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
其他服务器(例如由DigiCert发布的https://foursquare.com/)工作正常,如果我使用java-7-oracle(1.7.0_45)也没有问题。
我将/usr/lib/jvm/java-7-oracle/jre/lib/security/cacerts
复制到/etc/ssl/certs/java/cacerts
,但得到了相同的错误(如果删除后一个文件,则没有SSL连接正常工作,因此正在使用该文件)。其他想法?
答案 0 :(得分:2)
可能是证书链无序呈现。 我已经看过几次自签名证书 - 也许这些供应商也有同样的问题。
许多软件(例如所有主流浏览器AFAIK)通过在证书链到达验证器之前对证书链进行排序来处理此问题。
我曾经写过一篇关于如何在Android上处理这个问题的博客文章,但相同的代码应该与openjdk一起使用。
请参阅http://blog.chariotsolutions.com/2013/01/https-with-client-certificates-on.html