Client SDK 3 での AWS CloudHSM KeyStore Java クラスの使用 - AWS CloudHSM

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Client SDK 3 での AWS CloudHSM KeyStore Java クラスの使用

クラスは、keytool AWS CloudHSM KeyStorejarsigner などのアプリケーションを介して AWS CloudHSM キーへのアクセスを許可する、専用 PKCS12 キーストアを提供します。このキーストアでは、証明書をキーデータとともに保存し、 AWS CloudHSMに保存されているキーデータに関連付けることができます。

注記

証明書は公開情報であり、暗号化キーのストレージ容量を最大化するため、 AWS CloudHSM は HSMsへの証明書の保存をサポートしていません。

クラスは、Java AWS CloudHSM KeyStoreCryptography Extension (JCE) のKeyStoreサービスプロバイダーインターフェイス (SPI) を実装します。の使用の詳細についてはKeyStore「クラスKeyStore」を参照してください。

適切なキーストアの選択

AWS CloudHSM Java 暗号化拡張 (JCE) プロバイダーには、すべてのトランザクションを HSM に渡すデフォルトのパススルー読み取り専用キーストアが付属しています。このデフォルトのキーストアは、専用 とは異なります AWS CloudHSM KeyStore。ほとんどの場合、デフォルトを使用することにより、ランタイムのパフォーマンスとスループットが向上します。は、HSM AWS CloudHSM KeyStore へのキーオペレーションのオフロードに加えて、証明書と証明書ベースのオペレーションのサポートが必要なアプリケーションにのみ使用してください。

どちらのキーストアも操作に Cavium JCE プロバイダを使用しますが、これらは独立したエンティティであり、相互に情報を交換しません。

Java アプリケーションのデフォルトのキーストアを次のようにロードします。

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

専用 CloudHSM KeyStore を次のようにロードします。

KeyStore ks = KeyStore.getInstance("CloudHSM")

初期化中 AWS CloudHSM KeyStore

JCE プロバイダーにログインするの AWS CloudHSM KeyStore と同じ方法で にログインします。環境変数またはシステムプロパティファイルのいずれかを使用できます。CloudHSM KeyStoreの使用を開始する前にログインする必要があります。JCE プロバイダーを使用して HSM にログインする例については、Login to an HSM を参照してください。

必要に応じて、パスワードを指定して、キーストアデータを保持するローカル PKCS12 ファイルを暗号化できます。 AWS CloudHSM キーストアを作成するときは、ロード、設定、取得の方法を使用するときにパスワードを設定し、指定します。

次のように新しい CloudHSM KeyStore オブジェクトをインスタンス化します。

ks.load(null, null);

store メソッドを使用して、キーストアデータをファイルに書き込みます。その後は、次のように、ソースファイルとパスワードを使用し、load メソッドを使用して既存のキーストアをロードできます。

ks.load(inputStream, password);

の使用 AWS CloudHSM KeyStore

CloudHSM KeyStore オブジェクトは、通常、jarsignerkeytool などのサードパーティーアプリケーションを通じて使用されます。コードを使用してオブジェクトに直接アクセスすることもできます。

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

    キーストアが、指定されたエイリアスを持つ少なくとも 1 つのオブジェクトにアクセスできる場合は 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 に渡され、指定されたラベルに対応するキーオブジェクトを返します。HSM getKeyに直接クエリを実行すると、 によって生成されたかどうかにかかわらず、HSM 上の任意のキーに使用できます KeyStore。

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

    指定されたエイリアスを持つエントリが証明書エントリを表すかどうかをチェックします。

  • IsKeyEntry

    指定されたエイリアスを持つエントリがキーエントリを表すかどうかをチェックします。このアクションは、PKCS12 ファイルと HSM の両方でエイリアスを検索します。

  • SetCertificateEntry

    指定された証明書を指定されたエイリアスに割り当てます。指定されたエイリアスがキーまたは証明書の識別にすでに使用されている場合は、KeyStoreException がスローされます。JCE コードを使用してキーオブジェクトを取得し、 メソッドを使用して KeyStore SetKeyEntry証明書をキーに関連付けることができます。

  • byte[] キーのある SetKeyEntry

    この API は現在、Client SDK 3 ではサポートされていません。

  • Key オブジェクトのある SetKeyEntry

    指定されたキーを指定されたエイリアスに割り当て、HSM 内に保存します。Key オブジェクトが CaviumKey のタイプでない場合、キーは抽出可能なセッションキーとして HSM にインポートされます。

    Key オブジェクトが PrivateKey のタイプの場合、対応する証明書チェーンが添付されている必要があります。

    エイリアスが既に存在する場合、SetKeyEntry 呼び出しは KeyStoreException をスローし、キーが上書きされるのを防ぎます。キーを上書きする必要がある場合は、そのために KMU または JCE を使用します。

  • EngineSize

    キーストア内のエントリの数を返します。

  • Store

    キーストアを指定された出力ストリームに PKCS12 ファイルとして保存し、指定されたパスワードで保護します。さらに、ロードされたすべてのキー (setKey 呼び出しを使用して設定される) が保持されます。