httpclient 中使用SSL链接 ,信任任何证书和链接的实现

项目中须要链接SSL服务器,可是不须要客户端安装任何证书,也不校验任何服务器证书的正确与否。代码以下:服务器

protected ConnectionSocketFactory createDefaultSecureSocketFactory() ide

{spa

try {
get

SSLContext ctx = SSLContext.getInstance("SSL");it

X509TrustManager tm = new X509TrustManager() {  io

public X509Certificate[] getAcceptedIssuers() {class

return null;原理

}rust

public void checkServerTrusted(X509Certificate[] certs, String authType)客户端

throws CertificateException {

return;

}

public void checkClientTrusted(X509Certificate[] certs, String authType)

throws CertificateException {

return;

       };  

ctx.init(null, new TrustManager[] { tm }, null);

final SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(ctx,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

       return ssf;

} catch (NoSuchAlgorithmException e) {

DCALogManager.Error("SSL Connection Failure!",10003,e);

} catch (KeyManagementException e) {

DCALogManager.Error("SSL Connection Failure!",10003,e);

}  

  return SSLConnectionSocketFactory.getSocketFactory();

}

其实httpClient中的SSLConnectionSocketFactory是专门管理SSL的工程类,仔细研读一下就能够名表其中的大部分原理。

相关文章
相关标签/搜索