X509TrustManager — X.509 신뢰 관리자 인터페이스

X509TrustManager — X.509 신뢰 관리자 인터페이스

X509TrustManager는 보안 소켓의 원격 쪽(상대방)을 인증하는 데 어떤 X.509 인증서를 사용할 수 있는지를 관리하는 인터페이스예요. 결정은 신뢰할 수 있는 인증 기관, 인증서 폐지 목록, 온라인 상태 검사 또는 다른 수단을 기반으로 내려질 수 있어요.

출처: Java API Reference

본문

public interface X509TrustManager extends TrustManager

알려진 구현 클래스로는 X509ExtendedTrustManager가 있어요.

메서드

  • void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException — 피어가 제공한 부분적 또는 완전한 인증서 체인이 주어졌을 때, 신뢰할 수 있는 루트까지의 인증서 경로를 구축하고 인증 타입에 따라 클라이언트 SSL 인증으로 검증·신뢰될 수 있는지 확인해요. authType은 실제 사용된 인증서에 의해 결정돼요 (예: RSAPublicKey를 쓰면 "RSA"). 검사는 대소문자를 구분해요. chain 인자로 null이거나 길이가 0인 배열, 또는 authType으로 null이나 길이 0인 문자열이 전달되면 IllegalArgumentException, 인증서 체인이 이 TrustManager가 신뢰하지 않으면 CertificateException이 발생해요.
  • void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException — 서버 SSL 인증을 위한 검증을 수행해요. authType은 암호 스위트의 키 교환 알고리즘 부분을 문자열로 나타낸 것이에요 (예: "RSA", "DHE_DSS"). 일부 수출용 암호 스위트는 핸드셰이킹 중 런타임에 키 교환 알고리즘이 결정돼요. 예를 들어 TLS_RSA_EXPORT_WITH_RC4_40_MD5의 경우 임시 RSA 키를 쓰면 authTypeRSA_EXPORT, 서버 인증서 키를 쓰면 RSA가 돼요.
  • X509Certificate[] getAcceptedIssuers() — 피어를 인증하기 위해 신뢰되는 인증 기관 인증서의 배열을 반환해요. 비어 있을 수 있지만 null은 아니에요.

왜 중요한가요?

SSL/TLS에서 클라이언트가 서버 인증서를 받으면 그 인증서가 진짜인지 판단해야 해요. X509TrustManagercheckServerTrusted가 그 판단을 수행해요. 신뢰할 수 없는 인증서가 오면 CertificateException을 던져서 연결을 거부하게 만드는 게 전형적인 동작이에요. HTTPS 연결의 보안성을 결정짓는 핵심 인터페이스예요.

더 알아보기 (Learn more)