我正在尝试使用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连接的所有证书?
感谢您的回复
答案 0 :(得分:2)
如果还有人想要解决这个问题,我最终会在这里找到解决方案:
HTTPS GET (SSL) with Android and self-signed server certificate
向SimonJ滚动到解决方案。这是解决这个问题的简单直接解决方案。
答案 1 :(得分:1)
查看本教程http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/
本教程基于Apache的HttpClient,并解释了如何使用SSLSocketFactory信任您自己的密钥库中定义的证书(还解释了如何使用BouncyCastle提供程序创建它)。
我已经测试过了,效果很好。在我看来,这是安全的方式。