[java] HttpClient를 사용하여 SSL 인증서 무시하는 방법은?

HttpClient를 사용하여 SSL 인증서를 무시하는 방법을 알아보겠습니다.

일반적인 상황에서, HttpClient는 SSL 인증서를 확인하고 클라이언트가 신뢰할 수 있는 서버와의 안전한 연결을 수립하는 데 사용됩니다. 그러나 때로는 개발 또는 테스트 목적으로 실제 인증서나 도메인이 아닌 가짜 인증서 또는 자체 서명된 인증서가 사용되기도 합니다.

이러한 경우 HttpClient를 사용하여 SSL 인증서를 무시하는 방법은 다음과 같습니다:

  1. HttpClient에 SSL 인증서를 무시하는 TrustManager를 설정합니다.
SSLContext sslContext = SSLContexts.custom()
        .loadTrustMaterial((chain, authType) -> true)
        .build();

SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);

CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLSocketFactory(sslSocketFactory)
        .build();
  1. 위에서 생성한 HttpClient를 사용하여 원하는 요청을 보냅니다.
HttpGet httpGet = new HttpGet("https://example.com");

try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
    // 응답 처리
}

위의 코드에서, loadTrustMaterial 메서드의 람다 표현식 ((chain, authType) -> true)은 모든 인증서를 신뢰한다고 설정합니다. 이와 같이 설정하면 HttpClient가 어떤 인증서든 신뢰하고 연결할 수 있게 됩니다.

주의: 실제로 운영 환경에서는 위의 코드를 사용하지 않는 것이 좋습니다. 이 코드는 개발 및 테스트 목적으로만 사용하는 것을 권장합니다.


참고 자료: