Secrets Managerにバイナリファイルを保存する方法
pemファイルをSecrets Managerに保存しようとしたのですが、Javaと.netの場合署名付きCoookie作成にはpemではなくderファイルに変換する必要があるようなのでpemをderファイルに変換してSecrets Managerに登録します。
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という名前で登録されていることが確認できます。
バイナリファイルの場合はマネジメントコンソールからキーの値を見ることが出来ません。
コマンド
シークレットキーの一覧を確認するコマンドです。
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でプライベートコンテンツを配信する方法
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント