Apache HttpClient를 사용하여 잘못된 SSL 인증서 처리
Apache HttpClient를 사용하여 SSL을 통해 보안 HTTP 연결을 설정할 때 잘못된 SSL 인증서를 나타내는 오류가 발생할 수 있습니다. SSL 인증서. 이 오류는 원격 서버가 Java 신뢰 관리자 세트에서 신뢰하지 않는 인증서를 제공할 때 발생합니다.
가능한 해결 방법:
이 문제를 해결하려면 몇 가지 접근 방식이 있습니다. 다음을 수행할 수 있습니다.
수락으로 SSLContext를 구성합니다. TrustManager:
유효성에 관계없이 모든 인증서를 허용하는 사용자 정의 TrustManager를 만듭니다. 이 접근 방식은 SSL 연결의 보안을 약화시키므로 프로덕션 환경에는 권장되지 않습니다.
<code class="java">// Configure SSLContext with a TrustManager that accepts any certificate SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); SSLContext.setDefault(ctx);</code>
예 코드:
다음 코드 샘플은 첫 번째 솔루션에서 제안된 대로 모든 인증서를 허용하는 SSLContext를 생성하는 방법을 보여줍니다.
<code class="java">import java.net.URL; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class SSLTest { public static void main(String [] args) throws Exception { // configure the SSLContext with a TrustManager SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); SSLContext.setDefault(ctx); URL url = new URL("https://remote-server-address"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setHostnameVerifier(HostnameVerifier.ALL); // temporarily disable strict hostname verification System.out.println(conn.getResponseCode()); conn.disconnect(); } private static class DefaultTrustManager implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} @Override public X509Certificate[] getAcceptedIssuers() { return null; } } }</code>
참고: 이와 같이 허용되는 TrustManager를 사용하는 것은 테스트 및 디버깅 목적으로만 고려해야 하며 프로덕션 환경에서는 사용해서는 안 됩니다.
위 내용은 Apache HttpClient로 잘못된 SSL 인증서를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!