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

在Android应用中使用Apache HttpClient时遇到了'不值得信任的服务器证书'错误,尽管手机浏览器可以正常验证证书。问题可能在于HttpClient未配置为信任设备的根证书。可能的解决方案包括创建自定义SSLSocketFactory并从Android的cacerts.bks加载证书,但这可能导致不同设备间密码问题。博主寻求在不添加自定义证书到密钥库的情况下,使HttpClient能验证服务器证书的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在使用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 );

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值