X509KeyManager — X.509 키 관리자 인터페이스

X509KeyManager — X.509 키 관리자 인터페이스

X509KeyManager는 보안 소켓의 로컬 쪽(내 쪽)을 인증하는 데 사용할 X.509 인증서 기반 키 쌍을 관리하는 인터페이스예요. 보안 소켓 협상 중에 구현체는 이 인터페이스의 메서드를 호출해서 협상에 사용할 수 있는 별칭(alias) 집합을 결정하고, 제시된 기준에 따라 최상의 별칭을 선택하며, 주어진 별칭에 해당하는 키 자료를 얻어요.

출처: Java API Reference

본문

public interface X509KeyManager extends KeyManager

알려진 구현 클래스로는 X509ExtendedKeyManager가 있어요. 이 클래스보다는 X509ExtendedKeyManager를 사용하는 것이 권장돼요.

메서드

  • String[] getClientAliases(String keyType, Principal[] issuers) — 공개 키 타입과 피어가 인식하는 인증서 발급자 기관 목록이 주어졌을 때, 보안 소켓의 클라이언트 쪽을 인증하기 위한 일치하는 별칭들을 얻어요. keyType은 키 알고리즘 타입 이름, issuers는 허용되는 CA 발급자 주체 이름 목록이거나 상관없다면 null이에요. 일치하는 별칭 이름 배열을 반환하고, 없으면 null을 반환해요.
  • String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) — 공개 키 타입과 피어가 인식하는 인증서 발급자 기관 목록이 주어졌을 때, 보안 소켓의 클라이언트 쪽을 인증할 별칭을 선택해요. keyType은 가장 선호되는 키 타입이 먼저 오도록 정렬된 이름들이고, socket은 이 연결에 사용될 소켓으로 null이 될 수 있어요. 일치하는 항목이 없으면 null을 반환해요.
  • String[] getServerAliases(String keyType, Principal[] issuers) — 클라이언트 쪽 대신 서버 쪽 인증을 위한 일치하는 별칭들을 얻어요.
  • String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) — 보안 소켓의 서버 쪽을 인증할 별칭을 선택해요.
  • X509Certificate[] getCertificateChain(String alias) — 주어진 별칭과 연관된 인증서 체인을 반환해요. 사용자의 인증서가 먼저, 루트 인증 기관이 마지막에 오는 순서로 정렬돼요. 별칭을 찾을 수 없으면 null을 반환해요.
  • PrivateKey getPrivateKey(String alias) — 주어진 별칭과 연관된 키를 반환해요. 별칭을 찾을 수 없으면 null을 반환해요.

어떤 역할일까요?

보안 소켓(SSL/TLS)에서 서버는 자신을 증명할 인증서와 그에 대응하는 개인 키를 가지고 있어야 해요. X509KeyManager는 "이 키 자료 중에 어떤 것을 어떤 상황에서 쓸지"를 정하는 관리자예요. 예를 들어 서버가 여러 인증서(여러 도메인)를 가질 때, 클라이언트가 요구하는 키 타입과 발급자에 맞는 적절한 인증서를 골라주는 역할을 해요.

더 알아보기 (Learn more)