>  기사  >  Java  >  HTTPS/SSL과 함께 Java 클라이언트 인증서를 성공적으로 사용하는 방법은 무엇입니까?

HTTPS/SSL과 함께 Java 클라이언트 인증서를 성공적으로 사용하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-22 12:58:11844검색

How to Successfully Use Java Client Certificates with HTTPS/SSL?

HTTPS/SSL을 통한 Java 클라이언트 인증서: 연습

시나리오

Java 고려 클라이언트 인증서를 사용하여 원격 서버에 대한 HTTPS 연결 설정을 시도하는 6 애플리케이션입니다. 서버는 자체 서명된 루트 인증서를 사용하고 비밀번호로 보호된 클라이언트 인증서를 제시하도록 요구합니다.

도전

서버 루트 인증서와 클라이언트 인증서를 추가하더라도 기본 키 저장소인 경우 핸드셰이크 실패로 인해 연결이 실패합니다. 애플리케이션은 클라이언트 인증서를 효과적으로 활용하기 위한 지침을 구합니다.

해결책

해결 방법은 세 단계로 구성됩니다.

  1. Truststore로 서버 인증서 가져오기: 서버의 자체 서명 인증서를 가져와야 합니다. keytool 유틸리티를 사용하여 신뢰 저장소에 추가:

    keytool -import -alias <server_alias> -file <server_cert>.crt -storepass <password> -keystore <truststore_name>.keystore
  2. 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>
  3. 업데이트됨 연결 코드: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.