>Java >java지도 시간 >Java에서 특정 SSL 연결에 대한 사용자 정의 인증서 신뢰를 설정하는 방법은 무엇입니까?

Java에서 특정 SSL 연결에 대한 사용자 정의 인증서 신뢰를 설정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-18 13:48:14837검색

How to Set Custom Certificate Trust for Specific SSL Connections in Java?

대상 연결에 대한 사용자 정의 인증서 신뢰 설정

문제 설명

외부 모듈을 애플리케이션에 통합하려면 SSL에 액세스해야 합니다. -자체 서명된 인증서를 사용하는 보안 웹사이트. 인증서 신뢰 문제로 인해 기존 코드가 실패합니다. 문제는 다른 연결에 대한 신뢰를 손상시키거나 시스템 전체 인증서 저장소를 수정하지 않고 애플리케이션이 이 특정 연결에 대해서만 자체 서명된 인증서를 허용할 수 있도록 하는 것입니다.

최적의 솔루션

특정 연결에 대해 자체 서명된 인증서를 선택적으로 신뢰하려면 사용자 정의 SSLSocket 팩토리를 생성하고 HttpsURLConnection에 설정한 후 연결:

...
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslFactory);
conn.setMethod("POST");
...

SSLSocket 팩토리 생성

SSLSocket 팩토리를 생성하려면 다음과 같이 초기화합니다.

/* Load the keyStore that includes self-signed cert as a "trusted" entry. */
KeyStore keyStore = ... 
TrustManagerFactory tmf = 
  TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
sslFactory = ctx.getSocketFactory();

키 저장소 로드

다음이 포함된 키 저장소 로드 "신뢰할 수 있는 항목"으로 자체 서명된 인증서:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(trustStore, trustStorePassword);
trustStore.close();

대체 키 저장소 로드 방법

또는 keytool을 사용하여 PEM 형식 인증서를 키로 가져옵니다. 매장:

keytool -import -file selfsigned.pem -alias server -keystore server.jks

위 내용은 Java에서 특정 SSL 연결에 대한 사용자 정의 인증서 신뢰를 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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