AWS Key Management Service (AWS KMS) にキーマテリアルをインポートして、AWS サービスで 256 ビットの対称キーを使用したいと思います。
解決策
AWS KMS を使用すると、キーマテリアルを AWS KMS キーにインポートできます。次に、AWS KMS によってサポートされる AWS サービスとこのキーを使用できます。
次の手順に従って、キーマテリアルをAWS KMSにインポートします。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
-
キーマテリアルなしで AWS KMS キーを作成し、AWS KMS キーの ID を書き留めておきます。
注:****キーの管理者権限の定義とキーの使用権限の定義では、キーの管理者とキーのロールを分けることがベストプラクティスです。これにより、どちらかの認証情報が漏洩した場合の影響を制限できます。
-
ローカルマシンまたは OpenSSL がインストールされた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでターミナルを開きます。
-
256 ビットの対称キーを生成するには、次のコマンドを実行します:
openssl rand -out PlaintextKeyMaterial.bin 32
-
キーを記述し、インポート用のパラメータを取得するには、以下のAWS コマンドラインインターフェイス (AWS CLI) コマンドを実行します:
**注:**これらのコマンドは、パブリックキーとインポートトークンパラメータを変数に格納します。
export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`
-
パブリックキーとインポートトークンを別々の Base64 エンコードファイルに配置するには、次のコマンドを実行します:
echo $KEY | awk '{print $1}' > PublicKey.b64echo $KEY | awk '{print $2}' > ImportToken.b64
-
Base64 エンコードされたファイルをバイナリファイルに変換してインポートするには、次のコマンドを実行します:
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.binopenssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin
-
バイナリファイルに変換されたパブリックキーを使用してキーマテリアルを暗号化するには、次のコマンドを実行します:
openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
-
AWS KMS に暗号化されたキーマテリアルをインポートするには、以下のコマンドを実行してください:
注: この例では、キーマテリアルは期限切れにならないように指定されていますが、キーマテリアルの有効期限を設定することもできます。詳細については、「ExpirationModel」を参照してください。
aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
-
インポートされたキーのステータスが [Enabled] に設定されているかどうかを確認します。これを行うには、AWS KMS コンソールでキーを確認するか、DescribeKey API アクションを実行します。
キーをインポートできない場合は、ユースケースに合わせて次の手順を実行してください:
- 24 時間以上待ち、インポートトークンが期限切れになっている。これを解決するには、ラッピングキーとインポートトークンを再度ダウンロードしてキーマテリアルを再暗号化してください。
- キーマテリアルが 256 ビットの対称キーではありません。これを解決するには、暗号化されキーマテリアルのファイルサイズが 32 バイトであることを確認してください。ファイルサイズを確認するには、以下のいずれかのコマンドを実行してください:
Linux
wc -c <filename>.bin
Windows
詳細については、「AWS KMS キーのキーマテリアルをインポートする」を参照してください。
dir <filename>.bin
関連情報
OpenSSL を使用して AWS KMS にキーをインポートしていますが、「InvalidCiphertext」エラーが発生します。これを修正するにはどうすればよいですか?