這是一個有關在我的代碼中發生的異常的問題,該問題會調用https服務器。javax.net.ssl.SSLPeerUnverifiedException:對方未驗證錯誤
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
它在內部使用CloseableHttpClient
的一個實例來執行PUT調用。
此外,此代碼是一項功能測試,它將作爲CI作業在遠程計算機上運行。我已經看到了提及我們如何可以禁用Java中的SSL證書驗證或在本地JVM添加證書的SSL證書錯誤的一些解決方案,其中之一就是在這裏 -
'peer not authenticated' SSL certificate error usng DefaultHttpClient
不幸的是,這不是由於這是一臺遠程機器,我們無法將證書導入該機器,因此似乎無法正常工作。
String endPoint = "https://" + hostName + ":" + port + "/v1/service/data/put";
endPoint在從jar中調用的代碼中設置。所以,我們無法改變它的範圍。
如果我正在運行從獨立類(通過main方法)對endPoint進行PUT調用的代碼,它似乎運行正常,返回200/OK。目前,如果它正在作爲.xml文件中的TestNG類運行,則會發生異常。
作爲Github的要求添加的代碼是here。
讓我知道你是否需要更多的細節。
您可以添加您的代碼,以便我們看到如何設置呼叫的要點? –
如果你的意思是Apache組件(你其實不這麼說)'CloseableHttpClient'是不可構建的;通常你使用'HttpClientBuilder'的結果來定製'SSLContext'包括truststore甚至'TrustManager'。儘管如果你在代碼中這樣做,你至少在某種程度上違反了「測試你釋放的內容」的原則,特別是可能會使得發佈的安全性更低,甚至完全不安全。 –
@melgart我在上面的文章中添加了代碼作爲鏈接。它是[這裏](https://gist.github.com/sarankumarv/b05cba4d86080e84eed693bd6789f25e),作爲Github的要點。 – Saran