【发布时间】:2012-10-30 20:22:28
【问题描述】:
我正在尝试使用 Apache 的 HttpClient 4.X 从 Android 应用程序查询 HTTPS 网站。我得到一个javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 异常。我按照不同的说明导入证书:
- 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
这些都不适合我。
我认为我的问题是该站点的证书链如下:
- 电信根 CA 2
- 中级甲
- 中级乙
- 网站证书
- 中级乙
- 中级甲
Telekom Root CA 2 包含在 Android 默认密钥库 (/system/etc/security/cacerts.bks) 中。我在自己用于测试的手机上进行了检查。
现在的问题是,我必须在自定义密钥库中包含所有说明告诉我提供哪些证书?只是中间体?只有网站?两个都?我也需要根证书吗? Site's certificate 不应该由链验证 - 我不需要提供任何额外的证书,因为链的根是受信任的。
如果您能向我解释发生了什么事以及如何让它发挥作用,我会很高兴。请不要发布忽略证书的解决方法,因为这是用于生产并且必须是安全的。
【问题讨论】:
标签: java android ssl certificate apache-httpclient-4.x