Apache HttpClient 5에서 tlsConfig와 sslContext는 둘 다 TLS(HTTPS)와 관련이 있지만, 계층이 다릅니다.
- sslContext = “TLS 엔진(암호/키/신뢰) 자체를 만드는 재료”
- tlsConfig = “그 TLS 엔진을 어떻게 쓸지(프로토콜/암호군/검증 옵션 등) 정책으로 묶는 설정”
아래처럼 보면 정확합니다.
1) sslContext (javax.net.ssl.SSLContext)의 역할
SSLContext는 TLS 핸드셰이크에 필요한 핵심 보안 구성요소를 담는 객체입니다.
- 어떤 TrustManager(서버 인증서 신뢰 판단)를 쓸지
- 어떤 KeyManager(클라이언트 인증서/키, 즉 mTLS)를 쓸지
- 어떤 SecureRandom을 쓸지
- 결과적으로 내부적으로 만들어지는 SSLEngine/SSLSocketFactory의 기반
즉, “무엇을 신뢰하고(TrustStore), 어떤 내 키를 제시할지(KeyStore)”를 결정합니다.
예:
- 사내 CA를 신뢰해야 해서 커스텀 truststore를 로딩
- mTLS 때문에 client cert/key를 로딩
- (주의) “모든 인증서 신뢰” 같은 위험한 TrustManager를 넣는 것도 여기
2) tlsConfig (org.apache.hc.core5.http.ssl.TlsConfig)의 역할
TlsConfig는 HttpClient가 TLS 연결을 만들 때 동작 정책을 묶어 전달하는 쪽입니다. SSLContext로 만든 TLS 엔진을 “어떤 방식으로 운용할지”를 정합니다.
주로 이런 범주가 들어갑니다(버전에 따라 세부 항목은 조금 다름):