我试图从
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/