[java] HttpClient에서 SSL/TLS 연결을 설정하는 방법은?
- TrustManager 구현체 생성: 먼저, SSL/TLS 연결 시 신뢰할 수 있는 인증서를 사용하기 위해 TrustManager 구현체를 생성해야 합니다.
import javax.net.ssl.*;
TrustManager[] trustManagers = new TrustManager[]{
new X509TrustManager(){
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
};
위 코드는 모든 인증서를 신뢰하도록 동작하는 TrustManager를 생성하는 예시입니다. 보안 요구에 따라 적절한 TrustManager를 구현하십시오.
- SSLContext 생성 및 초기화: 다음으로, SSLContext를 생성하고 위에서 생성한 TrustManager를 이용하여 초기화해야 합니다.
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new SecureRandom());
위 코드는 TLS 프로토콜을 사용하는 SSLContext를 생성하고, TrustManager를 이용하여 초기화하는 예시입니다.
- HttpClient 생성 및 SSL 설정: 마지막으로, HttpClient를 생성하고 SSLContext를 이용하여 SSL 설정을 적용해야 합니다.
CloseableHttpClient httpClient = HttpClients.custom().setSSLContext(sslContext).build();
위 코드는 생성한 SSLContext를 이용하여 HttpClient를 설정하는 예시입니다.
이제 HttpClient를 이용하여 SSL/TLS 연결을 사용할 수 있게 되었습니다. 필요한 API 호출에 따라 HttpClient를 사용하십시오.
이 예시는 HttpClient 4.5.1 버전을 기준으로 작성되었습니다. 참고로 자바 11부터는 HttpClient가 기본 제공되므로 별도의 의존성을 추가할 필요가 없습니다.
참고자료:
- Apache HttpClient 문서 (https://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d5e418)
- Oracle Java SSL/TLS Guide (https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html)