Secrets Managerにバイナリファイルを保存する方法

Secrets Managerにバイナリファイルを保存する方法

pemファイルをSecrets Managerに保存しようとしたのですが、Javaと.netの場合署名付きCoookie作成にはpemではなくderファイルに変換する必要があるようなのでpemをderファイルに変換してSecrets Managerに登録します。

ERROR: The request could not be satisfied

pemをderに変換

Linuxでopensslからpemをderに変換します。WSLでもopensslコマンドが使えます。

openssl pkcs8 -topk8 -nocrypt -in test-key.pem -inform PEM -out test-key.der -outform DER

derファイルはバイナリファイルの為、現時点でSecrets Managerではマネジメントコンソールからはサポートしておらず、AWS CLIで登録する必要があります。file://だとエラーになりますので「fileb://バイナリファイル」とします。

aws secretsmanager create-secret --name シークレットキー名 --secret-binary fileb://バイナリファイル.der

シークレットキーがtestという名前で登録されていることが確認できます。

Secrets Managerにバイナリファイルを保存する方法

バイナリファイルの場合はマネジメントコンソールからキーの値を見ることが出来ません。

Secrets Managerにバイナリファイルを保存する方法

コマンド

シークレットキーの一覧を確認するコマンドです。

aws secretsmanager list-secrets

シークレットキーの値を確認するには以下コマンドで確認します。

c:\>aws secretsmanager get-secret-value --secret-id=シークレットID名
{
    "ARN": "arn:aws:secretsmanager:ap-northeast-1:111122223333:secret:test-BzPi4q",
    "Name": "test",
    "VersionId": "ac0840db-c159-40e0-8a17-a6fe07343d35",
    "SecretBinary": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDjgEfzEazvPZsYZvXUndrkq24MMrwdHgpKLQxyB7P35FEW+k+JbLD3C5Qk130BjKCTRb3FCoBTJZ/Zxi5ohRCduhwTNoJOPhW4d+LdbDhBONH+ymr2/cPpgM8YlOx38CNJ/qEWGAdb4Ao6GqBqj15pL89QuYAStp/4IV8VdQ6nrFsX1Mio1/RRsPESS2WIcvSCla+r6BYgUbAxba23lnEK5v1VVhUyoExLsCYeOn5jdyCxCQVI9xo54jxmyYBcY49ao3aYirLnxDTBSy6hHnnYOWEcGLnIAgiQiEyDp/je7NWi36DkWrftVJDEIWEVlCQzn7vL/yJRMU9S/kFZP2THAgMBAAECggEAZJeqOK4OG1LQK0ALXtHVodqzNC2SxAUuY5H7uMfzKZ8KF4bieE9ZCENUY93sZiz6K2Rg/qkgCKPQRIi+qHR93mAWXeBySYpmLETGSUW6sgwfvlteZIvcfnj4GVRwIrBJykQOkihZyKQNoZd4auWtxzDeqED9gkjB/wMyedhifHyB7f3Tc+JG6Ocb0uOppUngzguGv9/eF6RSAXxkPmIg2W+kueLiE15Nr3j43wuYC2h7fvLE9f+webKfk+D3kMlvRLQQLXLJRbUYYiV4rA8SsnbQl4eS+eG+6mgOJgme+6oEWr98Esl9l+C1I+QefLYnE4rgElnvH3t4pO9E+9UgcQKBgQD1+HyFNy0OdRsITtjiCBLHSYujYWmIvq8xlbfp7pcIqsy9aU2JjIoX55PCaSbMQ0XGNamIZBNGLdsY+2QMYSMbDqExs5Anft0c1Eh+1/2y6lC45sCdAEjJrB73CYEY8Sa6C5L9cfYN/8IEbH6xP0gI2h/7hZNGXw04kYrwx97fcwKBgQDsxwEJ4eIR4Z73f8N3Y9zhcWYqOhMlMbI9iV3UptvUecDBxcRGQxYbZFo5+Vgd15sJ9B4h8niqCVmoMcY2CaAKcXje2FZPDK/p5+fSvP3yFIBVHCo9hlx1/8oHc6/rvNvAahY/UQ50l5gxcytwNIkr2tDV6INGUNthrzwi8BjoXQKBgGW15ue/NSZxTkhVMmHlLL6zrsZUlasyDofWfUKConm3Bwqb7LAgKUpRPEx75ss4VjXsIrp/h2jRtXPTID/uOvIJTqaatdVfJFezgHbTIdlGAzMyWBuT7oVWY0eL6pJBxd3Qw2uCIFkRlUz3ADyTClp+uBLt3USQMYtew7FlNMf5AoGAcKc6MkZ7dgB/zsfF6y7jL4vxjNO2ujKL2EVcFEoTO2N2N3ttp/RRN1UmrICa0Q/83t5727DughASzThpUtp/f5h/Zp9NaSzjIYnJvXVX6W6hpFzTKBSeNzItICCFqcZgU4rl7NgW5ZgevCBMoYUNYoUoaS3ID5N23WIvXXwYja0CgYEAqN30kjvwHkyNuGv6fUnJsTVpDNLq2CdNIOKZgg+1gVaWqIo9tmr7eD+Kuqyb2OIQSLngSR1j6jnmPS4KalwSX8c6JrqzN66dsceiwMikH8TGfPwQnxrX3EAG3TRF/NqNQsif6Gwq4adEmeZA6opU6UE565DBlp8M8N0OmJmEJ3s=",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1116107131.389
}

SecretBinaryに設定されている値は、derファイルをbase64エンコードした値と同じです。

以下コマンドの結果とイコールになります。

base64 private_key.der | tr -d '\n'

シークレットキー削除

シークレットキーを削除するコマンドです。

aws secretsmanager delete-secret --secret-id シークレットID名

シークレットキーに登録したderファイルをバイナリファイルとして戻す方法です。

aws secretsmanager get-secret-value --secret-id シークレットキー名 | jq -r .SecretBinary | base64 --decode > バイナリファイル.der

Windows環境のコマンドプロンプトの場合はbase64の変わりにcertutilコマンドがあるようです。

登録したderファイルを使って署名付きCookieの発行が可能になります。

AWS CloudFront+S3で署名付きCookieでプライベートコンテンツを配信する方法

コメント

タイトルとURLをコピーしました