Apache HttpClient로 잘못된 SSL 인증서 처리
질문:
Apache HttpClient를 사용하여 HTTPS 연결을 설정하면 잘못된 SSL 인증서와 관련된 오류가 발생합니다. KeyManager 및 TrustManager를 사용하지 않으면서 이러한 오류를 어떻게 극복할 수 있습니까?
답변:
Apache HttpClient에서 유효하지 않은 SSL 인증서를 처리하려면 다음 접근 방식 중 하나가 필요합니다.
모든 인증서에 대한 TrustManager 구현:
다음 코드는 모든 인증서를 허용하는 TrustManager를 사용하여 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://mms.nw.ru"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } }); 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>
위 내용은 KeyManager 및 TrustManager 없이 Apache HttpClient에서 잘못된 SSL 인증서를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!