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