문제 설명
외부 모듈을 애플리케이션에 통합하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!