3

我正在尝试使用 Android 设备上的 apache DefaultHttpClient 连接到本地 HTTPS 服务器。

 DefaultHttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://192.168.1.121:4113/services");
 ... header and content filling in ...
 HttpResponse response = httpclient.execute(httppost);

当 .execute 运行时,我收到“javax.net.ssl SSLException:不受信任的服务器证书”错误。我只想允许任何证书工作,无论它是否在 android 密钥链中。

我花了大约 40 个小时研究并试图找出解决此问题的方法。我已经看到了很多如何做到这一点的例子,但到目前为止还没有一个在 Android 中起作用;它们似乎只适用于 JAVA。有谁知道如何配置或覆盖 Android 中 Apache HttpClient 使用的证书验证,以便它只批准 DefaultHttpClient 连接的所有证书?

我感谢你的友好回应

4

2 回答 2

2

如果有人仍在试图解决这个问题,我最终会选择这里的解决方案:

带有 Android 和自签名服务器证书的 HTTPS GET (SSL)

向下滚动到 SimonJ 的解决方案。这是解决此问题的简单直接解决方案。

于 2011-03-07T18:51:24.287 回答
1

看看这个教程http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

本教程基于 Apache 的 HttpClient 并解释了如何使用 SSLSocketFactory 来信任您自己的密钥库中定义的证书(还解释了如何使用 BouncyCastle 提供程序创建它)。

我已经对其进行了测试,并且效果很好。在我看来,这是安全的方式。

于 2010-10-23T21:25:14.203 回答