android上不受信任的证书错误和httpclient

Ivo*_*Ivo 5 ssl https android keystore

我正在使用Apache HttpClient库来设置https连接.不幸的是Android给了我一个"不值得信任的服务器证书"错误.如果我使用手机浏览器浏览网站,它会正确验证证书,这让我相信我需要让HttpClient"知道"手机上的根证书.这是我的HttpClient设置代码:

HttpParams params = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout( params, 20000 );
HttpConnectionParams.setSoTimeout( params, 20000 );

HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset( params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue( params, false);

SchemeRegistry schReg = new SchemeRegistry();
schReg.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
schReg.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );

ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg );

DefaultHttpClient defaultHttpClient = new DefaultHttpClient( conMgr, params );

return ( defaultHttpClient );
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我对SSLSocketFactory没有任何特别之处.如何在不在密钥库中添加自定义证书的情况下使HttpClient库验证我的站点?我应该创建自定义SSLSocketFactory并从Android手机加载cacerts.bks吗?在这种情况下,我可能会遇到不同手机上密钥库的不同密码问题?

如果您需要更多信息,请与我们联系.这个SSL的东西对我来说非常困难.

小智 -2

我之前也有同样的问题..

你可以使用这个答案,它对我很有用..

通过 HTTPS 使用 HttpClient 信任所有证书

  • 不要在生产中这样做!您将关闭所有 SSL 保护。这应该仅用于内部测试。任何人都可以MITM您的请求并窃取所有敏感信息。 (11认同)