2012-11-10 93 views
4

我试图从Android应用程序中用Apache的HttpClient 4.X查询HTTPS网站。我得到一个javax.net.ssl.SSLPeerUnverifiedException: No peer certificate例外。我也跟着上导入证书不同的指令:具有中间证书的Android SSL信任链(Apache HttpClient 4.X)

这些都不为我工作。

我想我的问题是,该网站的证书链如下:

  • 电信根CA 2
    • 的中间体A
      • 中间体B
        • 网站的证书

电信根CA 2被包括在Android默认密钥库(/system/etc/security/cacerts.bks)。我检查了我用于测试的手机。

现在的问题是,我必须在自定义密钥库中包含哪些证书,所有说明都告诉我要提供哪些证书?只是中间体?只有网站?都?我是否也需要根证书? Site's certificate不应该由链条验证 - 我不需要提供任何额外的证书,因为链条的根源是可信的。

如果你能向我解释发生了什么以及我如何才能使其工作,我会很高兴。请不要发布忽略证书的解决方法,因为这是用于生产并且必须是安全的。

回答