클라이언트 SDK 3용AWS CloudHSM KeyStore Java 클래스 - AWS CloudHSM

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

클라이언트 SDK 3용AWS CloudHSM KeyStore Java 클래스

클래스는 AWS CloudHSM KeyStore keytooljarsigner와 같은 애플리케이션을 통해 AWS CloudHSM 키에 액세스할 수 있는 특수 목적의 PKCS12 키 스토어를 제공합니다. 이 키 스토어는 키 데이터와 함께 인증서를 저장하고 AWS CloudHSM에 저장된 키 데이터와 상호 연관시킬 수 있습니다.

참고

인증서는 퍼블릭 정보이므로 암호화 키의 스토리지 용량을 극대화하기 위해 AWS CloudHSM 는 HSMs에 인증서 저장을 지원하지 않습니다.

클래스는 AWS CloudHSM KeyStore Java 암호화 확장(JCE)의 KeyStore 서비스 공급자 인터페이스(SPI)를 구현합니다. KeyStore 사용에 대한 자세한 내용은 Class KeyStore를 참조하십시오.

AWS CloudHSM 클라이언트 SDK 3용 키 스토어 선택

AWS CloudHSM Java Cryptographic Extension(JCE) 공급자는 모든 트랜잭션을 HSM에 전달하는 기본 패스스루 읽기 전용 키 스토어와 함께 제공됩니다. 이 기본 키 스토어는 특수 용도의 AWS CloudHSM KeyStore와 구별됩니다. 대부분의 상황에서 기본값을 사용하여 더 나은 런타임 성능과 처리량을 얻을 수 있습니다. HSM에 키 작업을 오프로드하는 것 외에도 인증서 및 인증서 기반 작업에 대한 지원이 필요한 애플리케이션에만 AWS CloudHSM KeyStore를 사용해야 합니다.

두 키 저장소 모두 작업을 위해 JCE 공급자를 사용하지만, 이 둘은 독립 개체이며 서로 정보를 교환하지 않습니다.

다음과 같이 Java 애플리케이션에 대한 기본 키 스토어를 로드합니다.

KeyStore ks = KeyStore.getInstance("Cavium");

다음과 같이 특수 용도의 CloudHSM KeyStore를 로드합니다.

KeyStore ks = KeyStore.getInstance("CloudHSM")

클라이언트 SDK 3용 AWS CloudHSM KeyStore 초기화

JCE 공급자에 로그인하는 것과 동일한 방식으로 AWS CloudHSM KeyStore에 로그인합니다. 환경 변수 또는 시스템 속성 파일을 사용할 수 있으며 CloudHSM KeyStore의 사용을 시작하기 전에 로그인해야 합니다. JCE 공급자를 사용하여 HSM에 로그인하는 예는 HSM에 로그인을 참조하십시오.

원하는 경우, 암호를 지정하여 키 스토어 데이터를 보유하는 로컬 PKCS12 파일을 암호화할 수 있습니다. AWS CloudHSM Keystore를 생성할 때 암호를 설정하고 로드, 설정 및 메서드 가져오기를 사용할 때 암호를 제공합니다.

다음과 같이 새 CloudHSM KeyStore 객체를 인스턴스화합니다.

ks.load(null, null);

store 메서드를 사용하여 파일에 키 스토어 데이터를 씁니다. 이 시점부터 다음과 같이 소스 파일 및 암호와 함께 load 메서드를 사용하여 기존 키 스토어를 로드할 수 있습니다.

ks.load(inputStream, password);

클라이언트 SDK 3용 AWS CloudHSMAWS CloudHSM KeyStore 사용

CloudHSM KeyStore 객체는 일반적으로 jarsigner 또는 keytool과 같은 타사 애플리케이션을 통해 사용됩니다. 또한 코드를 사용하여 직접 객체에 액세스 할 수도 있습니다.

AWS CloudHSM KeyStore는 JCE 클래스 KeyStore 사양을 준수하며 다음 함수를 제공합니다.

  • load

    지정된 입력 스트림에서 키 스토어를 로드합니다. 키 스토어를 저장할 때 암호가 설정된 경우, 로드가 성공하려면 이와 동일한 암호가 제공되어야 합니다. 새로운 빈 키 스토어를 초기화하려면 두 파라미터를 모두 null로 설정합니다.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); ks.load(inputStream, password);
  • aliases

    지정된 키 스토어 인스턴스에 있는 모든 항목의 별칭 이름의 열거를 반환합니다. 결과는 PKCS12 파일에 로컬로 저장된 객체와 HSM에 있는 객체를 포함합니다.

    샘플 코드:

    KeyStore ks = KeyStore.getInstance("CloudHSM"); for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) { String label = entry.nextElement(); System.out.println(label); }
  • ContainsAlias

    키 스토어가 지정된 별칭이 있는 객체에 최소 하나 이상 액세스할 수 있는 경우 true를 반환합니다. 키 스토어는 PKCS12 파일에 로컬로 저장된 객체와 HSM에 상주하는 객체를 확인합니다.

  • DeleteEntry

    로컬 PKCS12 파일에서 인증서 항목을 삭제합니다. HSM에 저장된 키 데이터 삭제는 AWS CloudHSM KeyStore를 사용하여 지원되지 않습니다. CloudHSM의 key_mgmt_util 도구를 사용하여 키를 삭제할 수 있습니다.

  • GetCertificate

    사용 가능한 경우 별칭과 연결된 인증서를 반환합니다. 별칭이 없거나 인증서가 아닌 객체를 참조하는 경우, 함수는 NULL을 반환합니다.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); Certificate cert = ks.getCertificate(alias)
  • GetCertificateAlias

    데이터가 지정된 인증서와 일치하는 첫 번째 키 스토어 항목의 이름(별칭)을 반환합니다.

    KeyStore ks = KeyStore.getInstance("CloudHSM"); String alias = ks.getCertificateAlias(cert)
  • GetCertificateChain

    지정된 별칭과 연결된 인증서 체인을 반환합니다. 별칭이 없거나 인증서가 아닌 객체를 참조하는 경우, 함수는 NULL을 반환합니다.

  • GetCreationDate

    지정된 별칭에 의해 식별된 항목의 생성 날짜를 반환합니다. 생성 날짜를 사용할 수 없는 경우 함수는 인증서가 유효해지는 날짜를 반환합니다.

  • GetKey

    GetKey는 HSM에 전달되고 지정된 레이블에 해당하는 키 객체를 반환합니다. getKey는 HSM을 직접 쿼리하므로, KeyStore에 의해 생성되었는지 여부에 관계없이 HSM의 어떤 키에 대해서도 사용할 수 있습니다.

    Key key = ks.getKey(keyLabel, null);
  • IsCertificateEntry

    지정된 별칭이 있는 항목이 인증서 항목을 나타내는지 확인합니다.

  • IsKeyEntry

    지정된 별칭이 있는 항목이 키 항목을 나타내는지 확인합니다. 이 작업은 PKCS12 파일과 HSM에서 모두 별칭을 검색합니다.

  • SetCertificateEntry

    지정된 인증서를 지정된 별칭에 할당합니다. 지정된 별칭이 키 또는 인증서를 식별하는 데 이미 사용 중인 경우 KeyStoreException이 발생합니다. JCE 코드를 사용하여 키 객체를 가져온 다음 KeyStore SetKeyEntry 메서드를 사용하여 인증서를 키에 연결할 수 있습니다.

  • byte[] 키가 있는 SetKeyEntry

    이 API는 현재 클라이언트 SDK 3에서 지원되지 않습니다.

  • Key 객체가 있는 SetKeyEntry

    지정된 키를 지정된 별칭에 할당하고 HSM 내부에 저장합니다. Key 객체가 CaviumKey 유형이 아닌 경우, 키가 추출 가능한 세션 키로 HSM에 가져오기 됩니다.

    Key 객체가 PrivateKey 유형인 경우 해당 인증서 체인이 함께 제공되어야 합니다.

    별칭이 이미 존재하는 경우 SetKeyEntry 호출은 KeyStoreException을 발생시키고 키를 덮어쓰지 못하게 합니다. 키를 덮어써야 하는 경우 해당 목적으로 KMU 또는 JCE를 사용하십시오.

  • EngineSize

    키 스토어의 항목 수를 반환합니다.

  • Store

    키 스토어를 지정된 출력 스트림에 PKCS12 파일로 저장하고 지정된 암호로 보호합니다. 또한, 모든 로드된 키(setKey 호출을 사용하여 설정됨)를 유지합니다.