嘗試使用自簽名證書建立與網站的連接時由於證書驗證失敗,Java應用程式可能會遇到錯誤。本文提出了在遵守特定要求的同時解決此問題的解決方案。
建議的方法是建立一個包含受信任的自簽名憑證的自訂 SSLSocketFactory。這允許應用程式選擇性地信任特定連接的憑證。實作方法如下:
載入包含自簽章憑證的 KeyStore:
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(trustStore, trustStorePassword); trustStore.close();
建立TrustManagerFactory進行初始化TrustManagers:
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(keyStore);
初始化SSLContext 並取得SSLSocketFactory:
使用以下指令設定HttpsURLConnection SSLSocketFactory:SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, tmf.getTrustManagers(), null); sslFactory = ctx.getSocketFactory();
替代選項
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslFactory);
以上是如何信任特定 Java 連線的自簽名憑證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!