Keytoolコマンド
このトピックのkeytoolコマンドを使用する場合は、「KeytoolおよびJarsignerの前提条件」で説明されているコマンド・フラグを使用してください。
キー・ペアの生成
-genkeypair
フラグを使用して、JCEでkeytoolを使用してDKMS HSMに1つの秘密キーと1つの公開キーを生成します。鍵は、この操作によってローカルキーストアにも格納されます。
重要: keytool
コマンドを使用してキー・ペアの生成または既存のキーストアのインポートを行う場合、Javaセキュリティ構成によって、公開キーと秘密キーがHSMカードに確実に生成されます。この構成にjava.security
ファイルを使用している場合は、HSMでキー・ペアを生成するために、ファイルでOCI専用KMSプロバイダを優先度2として指定する必要があります。
または、現在のディレクトリでJavaセキュリティ・オーバーライド・ファイルを作成し、OCI専用KMSプロバイダをsecurity.provider.2
の2番目の位置に追加します。Keytoolコマンドの実行時に、次のオプションを使用してJavaセキュリティ・オーバーライド・ファイルを指定します:
-J-Djava.security.properties=<java_security_override_file>
Javaセキュリティの構成の詳細は、「JavaセキュリティへのJCEプロバイダの追加」を参照してください。
生成されたキー・ペアは、キー管理ユーティリティで別名を使用して見つかりません。オプションで、キー生成の前後にキーをリストして、HSMの新しいキーを識別できます。これにより、必要に応じてHSMのキーを簡単に削除できます。キー・ペアを作成する前に、HSMにサインインし、既存のハンドルのリストを作成します。次に、新しいキー・ペアのハンドルを見つけるために、キー・ペアを作成した後にリストを作成します。手順については、Identifying the Handle of a New Key Pair or Secret Key in the HSMを参照してください。
コマンド構文:
keytool \
-J-cp -J<dedicated_kms_jce_jar_path> \
-genkeypair -alias <example-alias> -keyalg <algorithm> -keysize <key-size> -sigalg <signature-algorithm> \
-dname <example-distinguished-name> \
-keypass <example-password> -keystore <local-keystore-name> -storepass <example-password> -storetype DKKS
-J-Djava.security.properties=<java_security_override_file>
秘密キーの生成
この操作を実行するには、JCEで鍵管理ユーティリティーの -genseckey
フラグを使用します。この操作により、HSMに1つの秘密キーが生成されます。
キー管理ユーティリティで別名を使用して秘密キーが見つかりません。秘密キーを作成する前に、HSMにサインインし、既存のハンドルのリストを作成します。このリストは、キー・ペアを作成した後、新しい秘密キーのハンドルを検索するために使用できます。手順については、Identifying the Handle of a New Key Pair or Secret Key in the HSMを参照してください。
コマンド構文:
keytool \
-J-cp -J<dedicated_kms_jce_jar_path> \
-genseckey -alias <example-alias> -keyalg <algorithm> -keysize <key-size> \
-keypass <example-password> -keystore <local-keystore-name> -storepass <example-password> -storetype DKKS
HSMでの新しいキー・ペアまたは秘密キーの処理の識別
HSMで作成された新しいキー・ペアまたは秘密キーが、キー管理ユーティリティの別名を使用して見つかりません。キー・ペアまたは秘密キーの生成後に作成されたすべてのハンドルの2番目のリストを使用して、キー・ペアまたは秘密キーが生成される前にすべてのハンドルのリストを比較することで、新しいキー・ペアまたは秘密キーのハンドルを検索できます。2つのリストの違いは、キー・ペアまたは秘密キーに対して新しく作成されたハンドルを示しています。
- キー管理ユーティリティを使用してHSMにサインインします。
-
次のコマンドを実行して、既存のハンドルのリストを検索して保存します。
findKey -c <key-type>
<key-type>の有効な値は、2 = public 3 = private 4 = secretです。詳細は、「単一キーの検索」を参照してください。
- キー・ペアまたは秘密キーを生成します。手順については、キー・ペアの生成および秘密キーの生成を参照してください。
- ステップ1と2を繰り返し、
findKey -c 4
コマンドを使用してハンドルのリストを検索してHSMに保存します。新しいリストには、新しく生成されたキー・ペアまたは秘密キーに対するハンドルが含まれます。 - 2つのリストでdiff操作を実行して、新しいハンドルを見つけます。
キーの削除
次の拡張可能な項の手順を使用して、ローカル・キーストアおよびHSMからキーを削除します。
-
次のkeytoolコマンドを実行して、ローカル・キーストア内のキーを削除します:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -delete -alias <example-alias> \ -keypass <example-password> -keystore <example-keystore-name> -storepass <example-password> -storetype DKKS
-
HSMのキーを削除するには、専用キー管理ユーティリティで次のコマンドを実行します:
deleteKey -k <key-handle>
詳細は、「キーの削除」を参照してください。
Keytoolを使用した証明書署名リクエスト(CSR)の生成
-certreq
フラグを使用して、HSMのキーを使用して証明書署名リクエスト(CSR)を生成します。このコマンドは、JCEでkeytoolユーティリティを使用して実行します。
HSMのキーを使用してCSRを生成するには、次のコマンドを実行します。
keytool \
-J-cp -J<dedicated_kms_jce_jar_path> \
-certreq \
-alias <example-alias> \
-file <csr-file> \
-keyalg -keyalg <algorithm> -keysize <key-size> -sigalg <signature-algorithm> \
-dname <example-distinguished-name> \
-keypass <example-password> -keystore <local-keystore-name> -storepass <example-password> -storetype DKKS
キーストアへの証明書のインポート
-importcert
フラグを使用して、証明書をローカル・キーストアにインポートします。このコマンドは、keytoolとJCEを使用して実行します。
コマンド構文:
keytool \
-J-cp -J<dedicated_kms_jce_jar_path> \
-importcert -noprompt \
-alias <example-alias> \
-file <crt-file> \
-keypass <example-password> -keystore <local-keystore-name> -storepass <example-password>
HSMへのJavaキーストアのインポート
-importkeystore
フラグを使用して、キーストア内のすべてのキーをHSMにインポートします。このコマンドは、keytoolとJCEを使用して実行します。
重要事項:
-
keytool
コマンドを使用してキー・ペアを生成したり、既存のキーストアをインポートすると、Javaセキュリティ構成によって、公開キーと秘密キーがHSMカードに確実に生成されます。この構成にjava.security
ファイルを使用している場合は、HSMでキー・ペアを生成するために、ファイルでOCI専用KMSプロバイダを優先度2として指定する必要があります。または、現在のディレクトリでJavaセキュリティ・オーバーライド・ファイルを作成し、OCI専用KMSプロバイダを
security.provider.2
の2番目の位置に追加します。Keytoolコマンドの実行時に、次のオプションを使用してJavaセキュリティ・オーバーライド・ファイルを指定します:-J-Djava.security.properties=<java_security_override_file>
Javaセキュリティの構成の詳細は、「JavaセキュリティへのJCEプロバイダの追加」を参照してください。
- 2つ以上のキーを持つキーストアをHSMにインポートする場合、「HSMでの新しいキー・ペアまたは秘密キーの処理の識別」で説明されている方法を使用してキーのハンドルを識別できず、別名を使用してキー管理ユーティリティでキーを参照することはできません。
コマンド構文:
keytool \
-J-cp -J<dedicated_kms_jce_jar_path> \
-J-Djava.security.properties=<java_security_override_file> \
-importkeystore \
-srckeystore <example-source-keystore> - srcstoretype <example-source-keystore-type> -srcstorepass <example-source-keystore-password> \
-destkeystore <example-destination-keystore> -deststoretype DKKS - deststorepass <example-destination-keystore-password> \
キーストアの初期化
空の初期化キーストアがない場合は、次の操作を実行して作成できます。
-
keytoolプログラムでは空のDKKSキーストアを作成できませんが、keytoolを使用してキー生成操作の一部としてキーストアを作成できます。keytoolを使用してキーを生成した後、そのキーを削除でき、初期化されたキーストアは引き続き使用できます。
「キー・ペアの生成」および「HSMでの新しいキー・ペアまたは秘密キーの処理の識別」の手順を使用して、ハンドルで識別できるキー・ペアを生成します。このキー・ペアを生成すると、keytoolユーティリティによって、将来の操作に使用できる初期化されたキーストアが作成されます。
- キーの削除の手順を使用して、HSMから不要なキー・ペアを削除します。