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

我试图从
Android应用程序查询Apache的HttpClient 4.X的HTTPS网站.我得到一个javax.net.ssl.SSLPeerUnverifiedException:没有对等证书异常.我遵循了导入证书的不同说明:

> How do I avoid getting “No peer certificate” error when connecting to this HTTPS site on Android?
> Https Connection Android
> HTTPS GET (SSL) with Android and self-signed server certificate

这些都不适合我.

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

> Telekom Root CA 2

>中级A.

>中级B.

>网站证书

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

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

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

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

(Code from that blog post on GitHub)

点赞