Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用简单的DefaultHttpClient或应用程序中捆绑的BouncyCastle创建的密钥库_Android_Ssl_Https - Fatal编程技术网

Android 使用简单的DefaultHttpClient或应用程序中捆绑的BouncyCastle创建的密钥库

Android 使用简单的DefaultHttpClient或应用程序中捆绑的BouncyCastle创建的密钥库,android,ssl,https,Android,Ssl,Https,应用程序所连接的服务器有一个临时证书,或者类似的东西。我只负责Android应用程序,为了进行https web服务调用,该应用程序使用了接口X509TrustManager的不安全实现。现在,服务器证书已修复,并具有最终证书 以下代码起作用: HttpClient mHttpClient = null; HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(htt

应用程序所连接的服务器有一个临时证书,或者类似的东西。我只负责Android应用程序,为了进行https web服务调用,该应用程序使用了接口
X509TrustManager
的不安全实现。现在,服务器证书已修复,并具有最终证书

以下代码起作用:

HttpClient mHttpClient = null;
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 30000);
DefaultHttpClient client = new DefaultHttpClient(httpParameters);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https",  SSLSocketFactory.getSocketFactory(), 443));
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
mHttpClient = new DefaultHttpClient(mgr, client.getParams());
final HttpParams params = mHttpClient.getParams();

HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
基本上,在进行web服务调用时使用此
mHttpClient
不会引起任何错误或投诉,并按预期工作。然而,我见过这样的实现,它们有一种更安全的方法


我的问题是:通过使用上述代码中的
DefaultHttpClient
简单,在某些设备上证书可能无法被识别为有效的情况下,是否会出现一些问题?或者更好,我应该像上面的回答那样使用存储的密钥库吗?

我不确定我是否得到了它。上述解决方案是错误的,因为它信任来自应用程序的所有https呼叫?解决方案:仅信任来自您服务器的此特定证书?同意mklimek的意见-我以前确实必须使用okhttp3使用