我想通過在鏈接使用installCert.javaPKIX錯誤,同時通過InstallCert.java
獲得服務器的SSL證書下面
https://github.com/escline/InstallCert/blob/master/InstallCert.java
我可以得到服務器證書一些服務器,但同時試圖獲得一些服務器證書我得到以下錯誤
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX路徑建設失敗: sun.security.provider.certpath.SunCertPathBuilderException:
我搜索,但大家都說你應該輸入你的證書文件到Java cacerts的,但我用這個java類獲取證書文件。
而且我得到的錯誤在socket.startHandshake();
System.out.println("Opening connection to " + host + ":" + port + "...");
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setSoTimeout(10000);
try {
System.out.println("Starting SSL handshake...");
socket.startHandshake();
socket.close();
System.out.println();
System.out.println("No errors, certificate is already trusted");
} catch (SSLException e) {
是否有任何方法可以使他信任:)我想通過代碼導出和導入證書 – Cihad
不,您不能。根CA證書不是由SSL服務器發送的(實際上它是可選的,但實際上它不是由大多數服務器發送的)。假設將根CA添加到信任庫的操作必須單獨完成。這是避免自動信任CA的安全措施。請注意,如果你這樣做了,攻擊者可以在第一個連接上發送信任證書 – pedrofb
當然,你可以通過安裝一個信任所有證書的TrustManager來避免這種異常,但不要在真實系統上使用它 – pedrofb