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的工程類,仔細研讀一下就能夠名錶其中的大部分原理。

相關文章
相關標籤/搜索