httpclient 和自签名证书的问题

Posted

技术标签:

【中文标题】httpclient 和自签名证书的问题【英文标题】:Problems with httpclient and selfsigned certificates 【发布时间】:2010-06-25 12:19:02 【问题描述】:

我确定这个小组已经讨论过这个问题,但是我找不到那个帖子,所以请耐心等待,或者如果可能的话将它与原帖合并。

我正在为我的 android 应用程序使用 httpclient,并且我有一个本地站点,其中包含一些 https 页面。由于默认的 httpclient 不允许自签名证书,我使用的是 httpclient 中提到的“EasySSLFactory”和“EasyX509TrustManager” 文档。

client = new DefaultHttpClient(); client.getConnectionManager().getSchemeRegistry().register(new Scheme("https", new EasySSLSocketFactory(), 443));

问题是,如果我在我的 android 应用程序中使用此 SSLFactory,我会从我的网站的 https 页面获得正确的响应,但我会收到“SSL 握手失败:系统调用期间的 I/O 错误,未知错误:0”的网站例如“gmail.com”、“ymail.com”。如果我不使用 “EasySSLSocketFactory”我从这些网站得到响应,但我的网站却出现异常。

有趣的是,这个页面获取代码作为一个独立的 Java 应用程序运行良好。

可能是什么问题。请帮我解决这个问题。

感谢和问候

【问题讨论】:

【参考方案1】:

暂时解决了,因为我只有一个证书,所以我把它放在模拟器的密钥库中。如果有人有更好的解决方案,请告诉我。

【讨论】:

以上是关于httpclient 和自签名证书的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Httpclient 信任自签名证书

iOS开发HTTPS实现之信任SSL证书和自签名证书

PHP - 使用 STARTTLS 和自签名证书的 Swiftmailer

HttpClient 拒绝发送自签名客户端证书

Web Server CA证书签名步骤和自签名测试,支持多域名

HttpClient 使用自签名证书调用 HTTPS WebApi