PKIX 경로 구축 실패: 요청한 대상에 대한 유효한 인증 경로를 찾을 수 없음
질문:
Java 클라이언트를 사용하여 특정 HTTPS 웹 서비스에 액세스하려고 하면 다음 예외가 발생합니다.
java.lang.RuntimeException: PKIX path building failed: unable to find valid certification path to requested target
답변:
이 예외는 서버에서 제공하는 인증서 체인 문제로 인해 Java 클라이언트가 웹 서비스와 보안 연결을 설정할 수 없습니다.
가능한 해결 방법:
신뢰 저장소 구성:
클라이언트의 신뢰 저장소에 필요한 인증서가 설치되어 있지 않을 수 있습니다. 이 문제를 해결하려면 시스템 속성을 설정하여 신뢰 저장소 경로와 비밀번호를 지정하세요.
<code class="java">System.setProperty("javax.net.ssl.trustStore", "clientTrustStore.key"); System.setProperty("javax.net.ssl.trustStorePassword", "password");</code>
서버 인증서 가져오기:
클라이언트의 신뢰 저장소에 서버 인증서가 없으면 수동으로 가져옵니다. 다음 단계를 따르세요.
PEM 파일을 바이너리 X로 변환합니다. .509 인증서 파일(예: Certificate.der):
<code class="shell">openssl x509 -in certificate.pem -out certificate.der -outform DER</code>
keytool 유틸리티를 사용하여 DER 파일을 클라이언트의 신뢰 저장소로 가져옵니다.
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore clientTrustStore.key</code>
Java SSL 구성 업데이트:
Java SSL 구성이 올바르게 설정되었는지 확인하세요. 예를 들어 ~/.java/jre/lib/security/jssecacerts를 수정하거나 다음 명령을 사용합니다.
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore cacerts</code>
SSL 인증서 확인 비활성화(권장하지 않음):
임시 조치로 SSL 인증서 확인을 비활성화할 수 있지만 보안 문제로 인해 권장되지 않습니다.
<code class="java">HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);</code>
다른 인증서:
웹 서비스에 특정 인증서가 필요한 경우 해당 인증서를 받아 클라이언트의 신뢰 저장소에 설치하세요.
위 내용은 ## HTTPS 웹 서비스에 액세스할 때 Java 클라이언트에서 \'PKIX 경로 작성 실패\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!