首頁 > Java > java教程 > 在 HTTPS 中使用 Java 用戶端憑證時如何解決 javax.net.ssl.SSLHandshakeException?

在 HTTPS 中使用 Java 用戶端憑證時如何解決 javax.net.ssl.SSLHandshakeException?

Patricia Arquette
發布: 2024-11-26 06:17:10
原創
333 人瀏覽過

How to Resolve javax.net.ssl.SSLHandshakeException When Using Java Client Certificates with HTTPS?

HTTPS/SSL 上的Java 用戶端憑證

與遠端伺服器建立HTTPS 連線時,可能存在需要提供客戶端的情況用於身份驗證的憑證。這需要將伺服器的根憑證匯入到信任庫中,並正確配置客戶端憑證及其密碼。

要克服 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX路徑建置失敗問題,您必須使用下列命令將伺服器的根憑證匯入信任庫:

keytool -import -alias gridserver -file gridserver.crt -storepass $PASS -keystore gridserver.keystore
登入後複製

下一步,設定下列屬性來指定金鑰庫和信任庫資訊:

-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.trustStoreType=jks
-Djavax.net.ssl.keyStore=clientcertificate.p12
-Djavax.net.ssl.trustStore=gridserver.keystore
-Djavax.net.debug=ssl # very verbose debug
-Djavax.net.ssl.keyStorePassword=$PASS
-Djavax.net.ssl.trustStorePassword=$PASS
登入後複製

使用此配置,您可以建立HttpsURLConnection 並設定SSLSocketFactory來處理客戶端憑證驗證:

SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
URL url = new URL("https://gridserver:3049/cgi-bin/ls.py");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslsocketfactory);
登入後複製

來自在那裡,您可以根據需要讀取來自 HTTPS 連線的回應。

以上是在 HTTPS 中使用 Java 用戶端憑證時如何解決 javax.net.ssl.SSLHandshakeException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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