AWS Key Management Service (AWS KMS) にキーマテリアルのオリジンが外部と指定されたカスタマーマスターキー (CMK) を作成しました。RSAES_OAEP_SHA_256 をラップキーのアルゴリズムとして選択し、使用済みの OpenSSL を使用してラップキーでキーマテリアルを暗号化します。暗号化されたキーマテリアルをインポートすると、リクエストが失敗し、「InvalidCiphertext」に関するメッセージが表示されます。このインポートエラーを避ける方法を教えてください。

デフォルトでは、OpenSSL は SHA-1 ハッシュ関数を使用します。

RSAES_OAEP_SHA_256 アルゴリズム (SHA-256 ハッシュ関数) を使用する際にエラーを避けるために、openssl pkeyutl コマンドを使用して OpenSSL でキーマテリアルを暗号化し、パラメータ –pkeyopt rsa_padding_mode:oaep and –pkeyopt rsa_oaep_md:sha256 を指定します。

OpenSSL と RSAES_OAEP_SHA_256 を使用して、キーマテリアルを AWS KMS にインポートする詳細な手順は以下の通りです。

  1. キーマテリアルのオリジンに外部を使用して、CMK を作成します。
  2. ラップキー (公開) およびインポートトークンをダウンロードします。
  3. 256 ビット 対称キーを生成します。
  4. OpenSSL のバージョンが openssl pkeyutl をサポートしていることを確認します。
  5. ラップキーでキーマテリアルを暗号化します。
  6. 暗号化されたキーマテリアルをインポートします。

注意: ラップキーに RSAES_OAEP_SHA_1 暗号化アルゴリズムを使用している場合は、「How To Import Key Material」を参照してください。

キーマテリアルのオリジンに外部を使用して、CMK を作成します
次の AWS コマンドラインインターフェース (AWS CLI) コマンドを実行して外部キーマテリアルの CMK を作成します。
注意: リージョンのエクスポート を置換して KEY_ALIAS 値をキーの詳細と共にエクスポートしてください。

export REGION=us-east-1
export KEY_ALIAS=cmk_with_externalmaterial
aws kms --region $REGION create-key --origin EXTERNAL --description $KEY_ALIAS
export KEY_ID=`aws kms --region $REGION list-keys --query 'Keys[?Description == "$KEY_ALIAS"].KeyId' --output text`
aws kms --region $REGION create-alias --alias-name alias/$KEY_ALIAS --target-key-id $KEY_ID

新しく作成した CMK は、キーマテリアルをインポートするまで、[インポートの保留中] 状態のままになります。次のコマンドを実行して、キーのステータスを表示します。

aws kms --region $REGION describe-key --key-id $KEY_ID

ラップキー (公開) およびインポートトークンをダウンロードします。
次の AWS CLI コマンドを実行して PublicKey (ラップキー) と ImportToken 値を取得して、base64 を使用して両方の値をデコードし、別のファイルに保存します。RSAES_OAEP_SHA_256 ラップアルゴリズムは get-parameters-for-import コマンドで指定されていることに注意してください。

export KEY_PARAMETERS=`aws kms --region $REGION get-parameters-for-import --key-id $KEY_ID --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048`
echo $KEY_PARAMETERS | sed -e 's/[{}]/''/g' | awk '{n=split($0,a,","); for (i=1; i<=n;
i++) print a[i]}' | sed 's/^[ ]*//' | grep -i publickey | cut -d " " -f 2 | cut -c 2- | rev | cut -c 2- | rev > PublicKey.b64
echo $KEY_PARAMETERS | sed -e 's/[{}]/''/g' | awk '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/^[ ]//' | grep -i importtoken | cut -d " " -f 2 | cut -c 2- | rev | cut -c 2- | rev > ImportToken.b64
openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
openssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin
rm *.b64

これらのコマンドはラップキーを PublicKey.bin に、インポートトークンを ImportToken.bin に保存します。

256 ビット対称キーを生成します

キーマテリアルは 256 ビット (32 バイト) 対称キーである必要があります。キーを作成するには、次のいずれかのコマンドを実行します。

OpenSSL

openssl rand -out PlaintextKeyMaterial.bin 32

dd

dd if=/dev/urandom of=PlaintextKeyMaterial.bin bs=32 count=1

OpenSSL のバージョンが openssl pkeyutl をサポートしていることを確認します
キーマテリアルを RSAES_OAEP_SHA_256 でラップアルゴリズムとして暗号化するには、openssl pkeyutl コマンドを使用します。

重要: このコマンドは OpenSSL 1.0.2 以降のバージョンでのみ利用可能です。

Amazon Linux AMI で発表された EC2 インスタンスなどの RHEL ベースの Linux コンピュータ を使用している場合は、次の手順に従ってください。

1.    次のコマンドを実行して、OpenSSL のバージョンを確認します。

openssl version

2.    OpenSSL を更新する必要がある場合は、次のコマンドを実行してください。

sudo yum –y update openssl

macOS を使用している場合は、次の手順に従ってください。

1.    次の Homebrew のコマンドを実行します。

brew update
brew upgrade openssl
brew info openssl

2.    最後のコマンドは OpenSSL が /usr/local/opt/openssl/bin/ にインストールされたことを示しています。このコマンドを実行して、OpenSSL のバージョンを確認します。

/usr/local/opt/openssl/bin/openssl version

3.     常に最新の OpenSSL バージョンを使用するには、~/.bash_profile を編集してファイルの最後に次のラインを追加します。

export PATH="/usr/local/opt/openssl/bin:$PATH"

4.    ラインを追加してから、次のコマンドを実行します。

source ~/.bash_profile

5.    macOS 環境における変更を確認するには、次のコマンドを実行します。

echo $PATH
openssl version

ラップキーでキーマテリアルを暗号化します

次のコマンドを実行して、OpenSSL の最新バージョンと前にダウンロードしたラップキーを使用してキーマテリアルを暗号化します。

注意: ラップキーは PublicKey.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

このコマンドは、CMK にインポートするために、暗号化キーマテリアルとして使用する、EncryptedKeyMaterial.bin を生成します。

暗号化されたキーマテリアルをインポートします
次の AWS CLI コマンドを実行して、暗号化されたキーマテリアルを CMK 内にインポートします。

aws kms --region $REGION import-key-material --key-id $KEY_ID --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE

インポートが完了すると、キーのステータスは、有効 に変更されます。次のコマンドを実行して、キーのステータスを確認します。

aws kms --region $REGION describe-key --key-id $KEY_ID

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 11 月 15 日

更新: 2018 年 08 月 30 日