在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中文網其他相關文章!