Pembinaan Laluan PKIX Gagal: Tidak Dapat Menemui Laluan Pensijilan Sah ke Sasaran yang Diminta
Soalan:
Apabila cuba mengakses perkhidmatan web HTTPS tertentu menggunakan klien Java, pengecualian berikut ditemui:
java.lang.RuntimeException: PKIX path building failed: unable to find valid certification path to requested target
Jawapan:
Pengecualian ini menunjukkan bahawa Pelanggan Java tidak dapat mewujudkan sambungan selamat dengan perkhidmatan web disebabkan masalah dengan rantaian sijil yang dibentangkan oleh pelayan.
Penyelesaian yang Mungkin:
Konfigurasikan Kedai Amanah:
Pelanggan mungkin tidak mempunyai sijil yang diperlukan dipasang di kedai amanahnya. Untuk menyelesaikan masalah ini, tetapkan sifat sistem untuk menentukan laluan ke kedai amanah dan kata laluannya:
<code class="java">System.setProperty("javax.net.ssl.trustStore", "clientTrustStore.key"); System.setProperty("javax.net.ssl.trustStorePassword", "password");</code>
Sijil Pelayan Import:
Jika kedai amanah pelanggan tidak mengandungi sijil pelayan, importnya secara manual. Ikut langkah berikut:
Tukar fail PEM kepada X binari Fail sijil .509 (cth., certificate.der):
<code class="shell">openssl x509 -in certificate.pem -out certificate.der -outform DER</code>
Import fail DER ke dalam stor amanah pelanggan menggunakan utiliti alat kunci:
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore clientTrustStore.key</code>
Kemas kini Konfigurasi SSL Java:
Pastikan konfigurasi SSL Java ditetapkan dengan betul. Contohnya, dengan mengubah suai ~/.java/jre/lib/security/jssecacerts atau menggunakan arahan berikut:
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore cacerts</code>
Lumpuhkan Pengesahan Sijil SSL (Tidak Disyorkan):
Sebagai langkah sementara, anda boleh melumpuhkan pengesahan sijil SSL, tetapi ini tidak disyorkan kerana kebimbangan keselamatan:
<code class="java">HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);</code>
Dapatkan Sijil Berbeza:
Jika perkhidmatan web memerlukan sijil tertentu, dapatkan sijil itu dan pasangkannya di kedai amanah pelanggan.
Atas ialah kandungan terperinci ## Mengapakah klien Java saya mendapat ralat \'Pembinaan laluan PKIX gagal\' semasa mengakses perkhidmatan web HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!