問(wèn)題產(chǎn)生原因:
如果SSL證書(shū)驗(yàn)證不通過(guò),或者操作系統(tǒng)不信任服務(wù)器的安全證書(shū),比如瀏覽器在訪(fǎng)問(wèn)12306網(wǎng)站如:https://www.12306.cn/mormhweb/的時(shí)候,會(huì)警告用戶(hù)證書(shū)不受信任。(據(jù)說(shuō) 12306 網(wǎng)站證書(shū)是自己做的,沒(méi)有通過(guò)CA認(rèn)證)
解決方法:
如果用 LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory.getSocketFactory();會(huì)出現(xiàn)證書(shū)錯(cuò)誤問(wèn)題
可以改為如下(允許所有證書(shū)):
SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();
X509HostnameVerifier hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, hostnameVerifier);