首頁 > Java > java教程 > 如何在 Java 中處理自簽名或過期的 SSL 憑證?

如何在 Java 中處理自簽名或過期的 SSL 憑證?

Susan Sarandon
發布: 2025-01-01 10:15:11
原創
995 人瀏覽過

How to Handle Self-Signed or Expired SSL Certificates in Java?

覆蓋Java 用戶端中的SSL 憑證驗證

連接到具有自簽章或過期SSL 憑證的伺服器時,預設Java 行為是拒絕連線。要允許此類連接,您有兩個主要選項:

選項1:將憑證新增至信任庫

這涉及透過匯入伺服器的憑證來建立信任鏈進入JVM 的信任庫:

<JAVA_HOME>/bin/keytool -import -v -trustcacerts \
-alias server-alias -file server.cer \
-keystore cacerts.jks -keypass changeit \
-storepass changeit
登入後複製

選項2:停用憑證驗證

不建議此方法,因為它會削弱安全性,但可以使用以下程式碼來完成:

// Create a trust manager that doesn't validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
        public void checkClientTrusted(X509Certificate[] certs, String authType) {}
        public void checkServerTrusted(X509Certificate[] certs, String authType) {}
    }
};

// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

// Access the HTTPS URL without certificate validation
URL url = new URL("https://hostname/index.html");
登入後複製

建議

為了增強安全性,強烈建議避免停用憑證驗證(選項2),而是使用信譽良好的CA來簽署您的憑證伺服器的憑證(或將自簽名憑證匯入信任庫)。

以上是如何在 Java 中處理自簽名或過期的 SSL 憑證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板