首頁 > Java > java教程 > 如何為特定 Java 連線使用自訂憑證而不是修改 JRE 的信任庫?

如何為特定 Java 連線使用自訂憑證而不是修改 JRE 的信任庫?

Susan Sarandon
發布: 2025-01-02 18:59:38
原創
990 人瀏覽過

How Can I Use Custom Certificates for Specific Java Connections Instead of Modifying the JRE's Truststore?

在Java 中使用自訂憑證進行特定連線

在Java 應用程式中,可能會遇到使用下列方式與伺服器建立連線的情況自簽名憑證。雖然將憑證匯入 JRE 的憑證授權單位儲存是一種簡單的方法,但由於其對其他 Java 應用程式的全域影響,它可能不是首選方法。

相反,更有針對性的方法包括設定自訂SSLSocketFactory 並設定在啟動連線之前將其放在HttpsURLConnection 物件上:

...
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(sslFactory);
conn.setMethod("POST");
...
登入後複製

要建立SSLSocketFactory,首先載入包含以下內容的keyStore自簽章憑證作為「受信任」項目:

KeyStore keyStore = ...
登入後複製

接下來,初始化TrustManagerFactory:

TrustManagerFactory tmf = 
  TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
登入後複製

使用TrustManager 初始化SSLContext:

SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
登入後複製

最後得到SSLSocketFactory:

sslFactory = ctx.getSocketFactory();
登入後複製

透過使用自訂憑證其僅針對相關連線的接受情況。這種方法可讓您定位特定連接,而不會全域影響您的應用程式或系統上的其他 Java 程式。

以上是如何為特定 Java 連線使用自訂憑證而不是修改 JRE 的信任庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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