我們開發了一個控制檯應用程序,它將從HTTPS上的ESB(https://esb.mkcl.org/)中獲取數據。當我打到這個網站時,我得到了javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
異常。我將網址更改爲https://netbanking.hdfcbank.com/netbanking/,它也位於HTTPS上,打出後我沒有收到任何異常。爲什麼我需要在java中導入服務器證書
經過一番搜索後,我才知道我必須在java的keystore中導入公共證書,例如cacerts(C:\ Program Files \ Java \ jre6 \ lib \ security)。所以我從瀏覽器導出了https://esb.mkcl.org/的證書,並使用keytool
在java中導入了證書,然後執行了控制檯應用程序並且它可以正常工作!沒有發生異常。
因此,問題是爲什麼我需要導入微粒 URL的證書(其他HTTPS URL在沒有導入任何證書的情況下工作在Java中)?
我知道爲什麼我需要將證書導入到java和關於ssl配置我告訴我的IT infra團隊,但他們說在glassfish中的所有配置是完美的!我不知道他們是怎麼說的。感謝您的證據。如果您對哪個配置不是「完美」有任何想法,請指導。 – Amogh
那麼,ssllabs測試頁面列出的問題將在那裏詳細解釋。如果您查看第二個信任路徑,您會發現它需要額外下載由AddTrust External Root CA交叉簽名的上述根證書的[version](http://crt.comodoca.com/COMODORSAAddTrustCA.crt) (應該在信託商店中)。Java不會自動執行下載,因此對於該服務器來說,需要發送該證書,然後它將適用於較老的客戶端。 – mata