CloudShellでサクッと自己証明書を作成してACMにインポートする
はじめに
こんにちは。大阪オフィスの林です。
検証用途で自己証明書を発行して、その証明書をACMにインポートして何らかの検証を行いたいケースはそれなりにあるかと思います。
以前、下記のエントリを投稿していましたが、同じような内容をAWS CloudShellからやってみたいと思います。
AWS CloudShellのホームディレクトリ($HOME)はセッション切断後も中身が保持される永続ストレージですが、120日間CloudShellへのアクセスが無い場合は自動的に削除されるなどの特徴もあります。
AWS CloudShellについては下記エントリでよくまとまっていますので是非併せて参照してみてください!
やってみた
- AWS CloudShellに接続します。
-
openssl
を使って自己証明書を発行していきますので、openssl
をインストールします。[cloudshell-user@ip-10-0-24-213 ~]$ sudo yum install openssl -y ~省略~ Installed: openssl.x86_64 1:1.0.2k-24.amzn2.0.2 Complete! [cloudshell-user@ip-10-0-24-213 ~]$
-
下記のスクリプトをコピーして保存します。(この検証では
create_ca.sh
という名前で保存します)※証明書作成時のパラメータ(暗号強度、有効期限など)は必要に応じて適宜変更してください。#!/bin/bash #ドメインを入力させる echo -n ドメイン名を入力してください: read domain echo $domain #各種鍵の保管場所作成 dir=/home/cloudshell-user/certdir/ mkdir ${dir} #プライベートルート証明書の作成 openssl genrsa -out ${dir}privaterootca.key 2048 openssl req -new -x509 -key ${dir}privaterootca.key -sha256 -days 366 -extensions v3_ca -out ${dir}myrootca.pem -subj "/C=JP/ST=Osaka/O=mycorp./CN=testCN" #中間証明書の作成 openssl genrsa -out ${dir}myintermediateca.key 2048 openssl req -new -key ${dir}myintermediateca.key -sha256 -outform PEM -keyform PEM -out ${dir}myintermediateca.csr -subj "/C=JP/ST=Osaka/O=mycorp./CN=testCN" touch ${dir}myintermediateca.cnf echo "[ v3_ca ]" >> ${dir}myintermediateca.cnf echo "basicConstraints = CA:true, pathlen:0" >> ${dir}myintermediateca.cnf echo "keyUsage = cRLSign, keyCertSign" >> ${dir}myintermediateca.cnf echo "nsCertType = sslCA, emailCA" >> ${dir}myintermediateca.cnf openssl x509 -extfile ${dir}myintermediateca.cnf -req -in ${dir}myintermediateca.csr -sha256 -CA ${dir}myrootca.pem -CAkey ${dir}privaterootca.key -set_serial 01 -extensions v3_ca -days 366 -out ${dir}myintermediateca.pem #サーバ証明書の作成 openssl genrsa 2048 > ${dir}myserver.key openssl req -new -key ${dir}myserver.key -outform PEM -keyform PEM -sha256 -out ${dir}myserver.csr -subj "/C=JP/ST=Osaka/O=mycorp./CN=*.${domain}" openssl x509 -req -in ${dir}myserver.csr -sha256 -CA ${dir}myintermediateca.pem -CAkey ${dir}myintermediateca.key -set_serial 01 -days 366 -out ${dir}myserver.pem #AWS ACMへ証明書をインポートする aws acm import-certificate --certificate fileb://${dir}myserver.pem --private-key fileb://${dir}myserver.key --certificate-chain fileb://${dir}myintermediateca.pem
-
スクリプトを実行し、
ドメイン名を入力してください:
のプロンプトでドメイン名を入力します。その後、処理が開始して最後にCertificateArn
が表示されればインポート完了です。[cloudshell-user@ip-10-0-24-213 ~]$ sh create_ca.sh ドメイン名を入力してください:my-test-domain.local my-test-domain.local Generating RSA private key, 2048 bit long modulus .........+++ ..........................+++ e is 65537 (0x10001) Generating RSA private key, 2048 bit long modulus ..+++ ......................................+++ e is 65537 (0x10001) Signature ok subject=/C=JP/ST=Osaka/O=mycorp./CN=testCN Getting CA Private Key Generating RSA private key, 2048 bit long modulus ..............+++ ...........+++ e is 65537 (0x10001) Signature ok subject=/C=JP/ST=Osaka/O=mycorp./CN=my-test-domain.local Getting CA Private Key { "CertificateArn": "arn:aws:acm:ap-northeast-1:123456789012:certificate/51d4e192-129c-417c-994b-7f40fa111769" } [cloudshell-user@ip-10-0-24-213 ~]$
まとめ
サクッと自己証明書を発行して検証したい方の参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!