HTTPS/SSL을 통한 Java 클라이언트 인증서: 연습
시나리오
Java 고려 클라이언트 인증서를 사용하여 원격 서버에 대한 HTTPS 연결 설정을 시도하는 6 애플리케이션입니다. 서버는 자체 서명된 루트 인증서를 사용하고 비밀번호로 보호된 클라이언트 인증서를 제시하도록 요구합니다.
도전
서버 루트 인증서와 클라이언트 인증서를 추가하더라도 기본 키 저장소인 경우 핸드셰이크 실패로 인해 연결이 실패합니다. 애플리케이션은 클라이언트 인증서를 효과적으로 활용하기 위한 지침을 구합니다.
해결책
해결 방법은 세 단계로 구성됩니다.
Truststore로 서버 인증서 가져오기: 서버의 자체 서명 인증서를 가져와야 합니다. keytool 유틸리티를 사용하여 신뢰 저장소에 추가:
keytool -import -alias <server_alias> -file <server_cert>.crt -storepass <password> -keystore <truststore_name>.keystore
JVM 속성 구성: 특정 JVM 속성을 설정하여 신뢰 저장소와 키 저장소 경로, 비밀번호 및 유형을 지정합니다.
-Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.trustStoreType=jks -Djavax.net.ssl.keyStore=<client_cert>.p12 -Djavax.net.ssl.trustStore=<truststore_name>.keystore -Djavax.net.debug=ssl -Djavax.net.ssl.keyStorePassword=<password> -Djavax.net.ssl.trustStorePassword=<password>
업데이트됨 연결 코드: SSLSocketFactory를 활용하여 HTTPS 연결을 설정하고 연결에 대한 SSL 소켓 팩토리를 설정합니다.
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://<server_host>:<port>/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
이 접근 방식은 지정된 클라이언트 인증서를 사용하여 서버에 클라이언트를 인증하여 문제를 해결합니다. .
위 내용은 HTTPS/SSL과 함께 Java 클라이언트 인증서를 성공적으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!