屏蔽HTTPS證書校驗

屏蔽HTTPS證書校驗

—————————————————————————————————————————

背景需求:解決下面的錯誤:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

經(jīng)查詢,需要繞過HTTPS證書校驗。

類似rest-client客戶端的SSL項的兩個設(shè)置:

1、Trust-self-signed certificate? 勾選
2、Hostname verifier 選擇Allow All

下面代碼可以繞過HTTPS的證書校驗:

public static CloseableHttpClient createHttpsClient() throws NoSuchAlgorithmException, KeyManagementException
{
X509TrustManager x509mgr = new X509TrustManager()
{

    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
    {
    }

    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
    {

    }

    public X509Certificate[] getAcceptedIssuers()
    {
        return null;
    }
};

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] {x509mgr}, null);
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,
        SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

return HttpClients.custom()
        .setSSLSocketFactory(sslsf)
        .setDefaultRequestConfig(
                RequestConfig.custom()
                        .setSocketTimeout(5000)
                        .setConnectTimeout(5000)
                        .setCookieSpec(String.valueOf(CookiePolicy.ACCEPT_ALL))
                        .build()).build();
}
try
{
    closeableHttpClient = createHttpsClient();
    closeableHttpClient.execute(post);  
}
catch (NoSuchAlgorithmException e)
{
    e.printStackTrace();
}
catch (KeyManagementException e)
{
    e.printStackTrace();
}

上面代碼中的:

SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER

sslContext.init(null, new TrustManager[] {x509mgr}, null)

分別對應(yīng)restclient設(shè)置中的1和2,這樣的話:

closeableHttpClient = createHttpsClient();

closeableHttpClient.execute(post);

調(diào)用closeableHttpClient發(fā)送post時,就可以屏蔽post請求中的HTTPS證書校驗了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 4,184評論 2 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • =========================================================...
    lavor閱讀 3,646評論 0 5
  • 1、不安全的隨機數(shù)生成,在CSRF TOKEN生成、password reset token生成等,會造成toke...
    nightmare丿閱讀 3,994評論 0 1
  • 親愛的何猩猩先生: 現(xiàn)在是凌晨的兩點多,外面的馬路不時還有車鳴,我正與離你數(shù)百公里之外的z市。一直想給你寫些東西,...
    兮白司閱讀 462評論 0 4

友情鏈接更多精彩內(nèi)容