5

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

这些都不适合我。

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

  • 电信根 CA 2
    • 中级甲
      • 中级乙
        • 站点证书

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

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

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

4

1 回答 1

3

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

来自 GitHub 上该博客文章的代码

于 2013-05-12T23:26:58.710 回答