当前位置:  开发笔记 > 编程语言 > 正文

android上的httpclient ssl证书

如何解决《android上的httpclientssl证书》经验,为你挑选了1个好方法。

我在ssl使用httpclient在android上有一些麻烦我试图访问自签名证书的细节我希望我的应用程序信任所有证书(我将使用ssl仅用于数据加密).首先,我尝试使用本指南http://hc.apache.org/httpclient-3.x/sslguide.html在桌面上工作正常,但在Android上我仍然得到javax.net.ssl.SSLException:不信任的服务器证书.在谷歌搜索后我发现了一些其他的例子如何启用ssl.

http://groups.google.com/group/android-developers/browse_thread/thread/62d856cdcfa9f16e - 当我使用URLConnection但使用HttpClient时工作仍然有例外.

http://www.discursive.com/books/cjcook/reference/http-webdav-sect-self-signed.html - 在桌面上使用来自apache的jars工作但在android中使用包含在SDK类中无法使其工作.

http://mail-archives.apache.org/mod_mbox/hc-httpclient-users/200808.mbox/%3C1218824624.6561.14.camel@ubuntu%3E - 也得到同样的例外

所以任何想法如何使用HttpClient信任Android上的所有证书



1> Gaurav Vaish..:

如果你碰巧看看DefaultHttpClient的代码,它看起来像这样:

   @Override
    protected ClientConnectionManager createClientConnectionManager() {
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(
                new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(
                new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

        ClientConnectionManager connManager = null;     
        HttpParams params = getParams();
        ...
    }

请注意https方案到org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory()的映射.

您可以创建自定义实现org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory接口(http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/protocol/SecureProtocolSocketFactory.html),其中,您可以创建java.net.SSLSocket一个自定义TrustManager的是接受所有证书.

您可以在http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html查看JSSE以获取更多详细信息.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有