android中的SSL连接
我正在用android开发一个应用程序,这需要我使用KSOAP2库使用服务器sslhandshake 我可以在http站点上实现同样的功能,但在HTTPS站点上失败,说“无法验证证书”android中的SSL连接,android,Android,我正在用android开发一个应用程序,这需要我使用KSOAP2库使用服务器sslhandshake 我可以在http站点上实现同样的功能,但在HTTPS站点上失败,说“无法验证证书” 有人能帮忙吗?可能是因为您试图访问的站点可能没有CA。它可能只有自签名证书。这是处理自签名证书时会遇到的问题 请尝试这些链接,并向我们展示您已经实现的功能 此代码有帮助吗? 此代码在mixare.org中用于接受自签名证书 请注意,在使用此方法时,您不会受到MITM攻击 嗯,, Daniele请注意,至少在2
有人能帮忙吗?可能是因为您试图访问的站点可能没有CA。它可能只有自签名证书。这是处理自签名证书时会遇到的问题 请尝试这些链接,并向我们展示您已经实现的功能 此代码有帮助吗? 此代码在mixare.org中用于接受自签名证书 请注意,在使用此方法时,您不会受到MITM攻击 嗯,,
Daniele请注意,至少在2.3之前的Android版本中,RapidSL CA没有根CA 您可以通过以下站点检查有问题证书的颁发者: 另一个快速检查是尝试在股票浏览器中加载HTTPs页面,看看它是否抱怨证书 如果这与您的情况不符,则忽略此答案 如果您有此CA签署的证书,则必须
您可以使用自签名证书。只需将此方法用作您的HTTPClient:
public static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}
向我们展示一些代码和/或控制台输出。谢谢
public static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}