具有中间证书的Android SSL信任链(Apache HttpClient 4.X)

时间:2012-11-10 21:35:25

标签: java android ssl certificate apache-httpclient-4.x

我正在尝试从Android应用程序使用Apache的HttpClient 4.X查询HTTPS网站。我收到javax.net.ssl.SSLPeerUnverifiedException: No peer certificate个例外。我遵循了导入证书的不同说明:

这些都不适合我。

我认为我的问题是该网站的证书链如下:

  • Telekom Root CA 2
    • 中级A.
      • 中级B.
        • 网站证书

Telekom Root CA 2 包含在Android默认密钥库(/system/etc/security/cacerts.bks)中。我在自己的手机上检查过,我用它进行测试。

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

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

1 个答案:

答案 0 :(得分:2)

我写了一篇博文,其中包括一个完整的工作示例,前后有关如何做到这一点。见http://chariotsolutions.com/blog/post/https-with-client-certificates-on/

Code from that blog post on GitHub