

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

# クライアント SDK 3 を使用して AWS CloudHSM keytool でキーストアを使用する
<a name="using_keystore_with_keytool"></a>

[keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) は、Linux システム上の一般的なキーおよび証明書タスク向けの一般的なコマンドラインユーティリティです。keytool に関する完全なチュートリアルは、 AWS CloudHSM ドキュメントの範囲外です。この記事では、 をキーストアを通じて信頼のルート AWS CloudHSM として使用する場合に、さまざまな AWS CloudHSM keytool 関数で使用する特定のパラメータについて説明します。

keytool をキー AWS CloudHSM ストアで使用する場合は、任意の keytool コマンドに次の引数を指定します。

```
-storetype CLOUDHSM \
		-J-classpath '-J/opt/cloudhsm/java/*' \
		-J-Djava.library.path=/opt/cloudhsm/lib
```

キーストアを使用して新しい AWS CloudHSM キーストアファイルを作成する場合は、「」を参照してください[AWS CloudHSM クライアント SDK 3 に AWS CloudHSM KeyStoreを使用する](alternative-keystore.md#using_cloudhsm_keystore)。既存のキーストアを使用するには、keytool の –keystore 引数を使用して、その名前 (パスを含む) を指定します。keytool コマンドで存在しないキーストアファイルを指定すると、 AWS CloudHSM キーストアは新しいキーストアファイルを作成します。

# keytool を使用して新しい AWS CloudHSM キーを作成する
<a name="create_key_keytool"></a>

keytool を使用して、 AWS CloudHSM JCE SDK でサポートされている任意のタイプのキーを生成できます。キーと長さの完全なリストについては、Java ライブラリの「[サポートされるキー](java-lib-supported.md#java-keys)」の記事を参照してください。

**重要**  
keytool で生成されたキーはソフトウェアで生成され、抽出可能な永続キー AWS CloudHSM として にインポートされます。

抽出不可能なキーをハードウェアセキュリティモジュール (HSM) で直接作成し、keytool または Jarsigner で使用する手順は、「既存の[キーを AWS CloudHSM キーストアに登録する](register-pre-existing-keys-with-keystore.md)」のコードサンプルに示されています。エクスポートできないキーを keytool の外部で生成したうえで、対応する証明書をキーストアにインポートすることを強くお勧めします。keytool と jarsigner を使用して抽出可能な RSA キーまたは EC キーを使用する場合、プロバイダーは からキーをエクスポート AWS CloudHSM し、ローカルでキーを使用して署名操作を行います。

CloudHSM クラスターに複数のクライアントインスタンスが接続されている場合、1 つのクライアントインスタンスのキーストアに証明書をインポートしても、他のクライアントインスタンスで自動的に使用できるようにはなりません。各クライアントインスタンスでキーおよび関連する証明書を登録するには、「[keytool を使用して CSR を生成する](generate_csr_using_keytool.md)」の説明に従って Java アプリケーションを実行する必要があります。または、1 つのクライアントで必要な変更を行い、結果のキーストアファイルを他のすべてのクライアントインスタンスにコピーすることもできます。

**例 1: **対称型 AES-256 キーを生成し、作業ディレクトリの「example\$1keystore.store」という名前のキーストアファイルに保存します。*<secret label>* を独自のラベルに置き換えます。

```
keytool -genseckey -alias <secret label> -keyalg aes \
		-keysize 256 -keystore example_keystore.store \
		-storetype CloudHSM -J-classpath '-J/opt/cloudhsm/java/*' \
		-J-Djava.library.path=/opt/cloudhsm/lib/
```

**例 2: **RSA 2,048 キーペアを生成し、作業ディレクトリの「example\$1keystore.store」という名前のキーストアファイルに保存します。*<RSA key pair label>* を独自のラベルに置き換えます。

```
keytool -genkeypair -alias <RSA key pair label> \
        -keyalg rsa -keysize 2048 \
        -sigalg sha512withrsa \
        -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

**例 3: **p256 ED キーを生成し、作業ディレクトリの「example\$1keystore.store」という名前のキーストアファイルに保存します。*<ec key pair label>* を独自のラベルに置き換えます。

```
keytool -genkeypair -alias <ec key pair label> \
        -keyalg ec -keysize 256 \
        -sigalg SHA512withECDSA \
        -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

[サポートされている署名アルゴリズム](java-lib-supported.md#java-sign-verify)のリストは、Java ライブラリにあります。

# keytool を使用して AWS CloudHSM キーを削除する
<a name="delete_key_using_keytool"></a>

 AWS CloudHSM キーストアはキーの削除をサポートしていません。キーを削除するには、 AWS CloudHSMのコマンドラインツール の `deleteKey`関数を使用する必要があります[KMU を使用して AWS CloudHSM キーを削除する](key_mgmt_util-deleteKey.md)。

# keytool AWS CloudHSM を使用して CSR を生成する
<a name="generate_csr_using_keytool"></a>

[AWS CloudHSM クライアント SDK 5 用の OpenSSL Dynamic Engine](openssl-library.md) を使用すると、証明書署名要求 (CSR) を柔軟に生成できます。次のコマンドは、keytool を使用して、エイリアス `example-key-pair` を持つキーペアの CSR を生成します。

```
keytool -certreq -alias <key pair label> \
        -file example_csr.csr \
        -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

**注記**  
keytool のキーペアを使用するには、指定されたキーストアファイルにそのキーペアのエントリが必要です。keytool の外部で生成されたキーペアを使用する場合は、キーおよび証明書のメタデータをキーストアにインポートする必要があります。キーストアデータのインポート手順については、[「Keytool を使用した AWS CloudHSM キーストアへの中間証明書とルート証明書のインポート](import_cert_using_keytool.md)」を参照してください。

# keytool を使用して中間証明書とルート証明書を AWS CloudHSM キーストアにインポートする
<a name="import_cert_using_keytool"></a>

CA 証明書を にインポートするには AWS CloudHSM、新しくインポートされた証明書で完全な証明書チェーンの検証を有効にする必要があります。次のコマンドでは、例を示しています。

```
keytool -import -trustcacerts -alias rootCAcert \
        -file rootCAcert.cert -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

複数のクライアントインスタンスを AWS CloudHSM クラスターに接続する場合、1 つのクライアントインスタンスのキーストアに証明書をインポートしても、他のクライアントインスタンスで証明書が自動的に使用可能になることはありません。各クライアントインスタンスで証明書をインポートする必要があります。

# keytool を使用して AWS CloudHSM キーストアから証明書を削除する
<a name="delete_cert_using_keytool"></a>

次のコマンドは、Java keytool キーストアから AWS CloudHSM 証明書を削除する方法の例を示しています。

```
keytool -delete -alias mydomain -keystore \
        -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

複数のクライアントインスタンスを AWS CloudHSM クラスターに接続しても、1 つのクライアントインスタンスのキーストアで証明書を削除しても、他のクライアントインスタンスから証明書は自動的に削除されません。各クライアントインスタンスで証明書を削除する必要があります。

# keytool を使用して作業証明書を AWS CloudHSM キーストアにインポートする
<a name="import_working_cert_using_keytool"></a>

証明書署名要求 (CSR) が署名されると、それを AWS CloudHSM キーストアにインポートし、適切なキーペアに関連付けることができます。次のコマンドでは、例を示しています。

```
keytool -importcert -noprompt -alias <key pair label> \
        -file example_certificate.crt \
        -keystore example_keystore.store
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```

エイリアスは、キーストア内の関連付けられた証明書を持つキーペアである必要があります。キーが keytool の外部で生成される場合や、別のクライアントインスタンスで生成される場合は、まずキーおよび証明書のメタデータをキーストアにインポートする必要があります。証明書メタデータをインポートする手順については、[AWS CloudHSM 「 キーストアで既存のキーを登録する](register-pre-existing-keys-with-keystore.md)」のコードサンプルを参照してください。

証明書チェーンは検証可能である必要があります。証明書を検証できない場合は、チェーンを検証できるように、署名 (証明機関) 証明書をキーストアにインポートする必要があります。

# keytool AWS CloudHSM を使用して から証明書をエクスポートする
<a name="export_cert_using_keytool"></a>

次の例では、バイナリ X.509 形式の証明書を生成します。人間が読み取り可能な証明書をエクスポートするには AWS CloudHSM、 `-exportcert` コマンド`-rfc`に を追加します。

```
keytool -exportcert -alias <key pair label> \
        -file example_exported_certificate.crt \
        -keystore example_keystore.store \
        -storetype CLOUDHSM \
        -J-classpath '-J/opt/cloudhsm/java/*' \
        -J-Djava.library.path=/opt/cloudhsm/lib/
```