KeyStore

KeyStore (키 저장소)

암호화 키와 인증서를 보관하는 저장 시설(storage facility)을 나타내는 클래스입니다. KeyStore는 여러 종류의 엔트리(entry)를 관리하며, 각 엔트리는 KeyStore.Entry 인터페이스를 구현합니다.

출처: Java API Reference

본문

KeyStore가 제공하는 세 가지 기본 엔트리 구현은 다음과 같습니다.

  • KeyStore.PrivateKeyEntry — 암호화 PrivateKey를 보관하며, 무단 접근을 막기 위해 보호된 형식으로 저장할 수 있습니다. 대응하는 공개 키의 인증서 체인도 함께 가집니다. 개인 키와 인증서 체인은 개체가 자기 인증(self-authentication)을 할 때 사용됩니다. 예를 들어 소프트웨어 배포 조직이 JAR 파일에 서명할 때 사용합니다.
  • KeyStore.SecretKeyEntry — 암호화 SecretKey를 보관하며, 보호된 형식으로 저장할 수 있습니다.
  • KeyStore.TrustedCertificateEntry — 다른 당사자에 속한 단일 공개 키 Certificate를 담습니다. 키스토어 소유자가 인증서의 공개 키가 실제로 해당 주체(owner)의 신원에 속한다고 신뢰하기 때문에 '신뢰된 인증서'라고 부릅니다.

키스토어의 각 엔트리는 "alias"(별칭) 문자열로 식별됩니다. 개인 키와 연관된 인증서 체인은 alias로 구분됩니다. alias의 대소문자 구분 여부는 구현에 따라 다르며, 대소문자만 다른 alias는 피하는 것이 좋습니다.

키스토어에 접근하기 전에 로드해야 합니다. load 메서드에 빈 스트림 대신 null을 넘기면 빈 키스토어를 만들 수 있습니다. 로드한 뒤에는 getEntry/setEntry로 엔트리를 읽거나 쓰고, store 메서드로 저장합니다. 모든 Java 플랫폼 구현은 PKCS12 표준 키스토어 타입을 지원해야 합니다.

KeyStore의 주요 메서드는 다음과 같습니다.

  • public static KeyStore getInstance(String type) — 지정된 타입의 KeyStore 객체를 반환합니다.
  • public static KeyStore getInstance(String type, String provider) — 지정된 프로바이더에서 타입을 지원하는 키스토어를 반환합니다.
  • public static KeyStore getInstance(String type, Provider provider) — 주어진 Provider 객체로 키스토어를 반환합니다.
  • public static final String getDefaultType()keystore.type 보안 속성이 지정한 기본 키스토어 타입을 반환합니다.
  • public final Provider getProvider() — 이 키스토어의 프로바이더를 반환합니다.
  • public final String getType() — 이 키스토어의 타입을 반환합니다.
  • public final Set<Entry.Attribute> getAttributes(String alias) — 주어진 alias와 연관된 속성을 가져옵니다.

엔트리에는 getPrivateKey(), getCertificateChain(), getCertificate(), getSecretKey(), getTrustedCertificate() 같은 접근 메서드가 있으며, PasswordProtection이나 CallbackHandlerProtection 같은 보호 매개변수를 사용해 키를 보호합니다.

더 알아보기 (Learn more)

Java 공식 API