問題產生原因:
如果SSL證書驗證不通過,或者操作系統(tǒng)不信任服務器的安全證書,比如瀏覽器在訪問12306網站如:https://www.12306.cn/mormhweb/的時候,會警告用戶證書不受信任。(據說 12306 網站證書是自己做的,沒有通過CA認證)
解決方法:
如果用 LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory.getSocketFactory();會出現證書錯誤問題
可以改為如下(允許所有證書):
SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();
X509HostnameVerifier hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, hostnameVerifier);