AWS Certificate Manager(ACM) に、COMODOなどで発行した証明書をコマンドラインでインポートする手順を紹介します。
ELBや AWS API Gatewayなどに独自ドメインを設定してhttpsでアクセスするようにしている場合、SSL証明書の設定が必要になります。
ELBは証明書の更新が楽でダウンタイムもないのですが、API Gatewayの場合手順によってはダウンタイムが発生します。
API Gatewayでは、直接証明書を設定することもできるのですが、この場合は証明書の更新のために 独自ドメイン設定を一度削除して、設定し直す 必要があるようです。
当然、削除してから再設定までの間は、ドメインが利用できずダウンタイムが発生してしまいますが、ACMを使えば無停止での証明書の更新ができるので、この手順をまとめます。
前提条件
- 最新版のAWS CLI がインストール済み
- jqがインストール済み
- 実行環境が *nix(含むMAC OSX)
- 証明書ファイルはnopass設定で用意済み
- 秘密鍵
- 公開鍵
- 中間証明書
手順
1. ACM に証明書をインポートする
aws acm import-certificate --certificate file://{PATH_TO_CERTIFICATE} --private-key file://file://{PATH_TO_PRIVATEKEY} --certificate-chain file://file://{PATH_TO_CERTIFICATE_CHAIN}
※ もしリージョン指定が必要なら --region {AWS_REGION}
を追加する
結果
2. インポートした証明書にNameタグを追加する
インポートしただけだとNameタグが空なので、設定しておく
登録済みの証明書一覧
証明書の一覧を表示して、タグを追加したい証明書のarnをコピーします
aws acm list-certificates
タグを追加
xargs aws acm add-tags-to-certificate --tags Key=Name,Value={NAME} --certificate-arn #{CERTIFICATE_ARN}
結果
参考
参考にしたWebサイトや技術書などを列挙する
- acm - AWS CLI Command Reference
- http://qiita.com/pm11op/items/7449ed600c02fb70cbf4
- http://stackoverflow.com/questions/35590419/how-to-update-certificate-on-aws-apigateway-custom-domain
次にやること
あとは、ELBなりApi Gatewayなりで、インポートした証明書を指定して設定するだけです。
注意点としては、 Api Gatewayを利用する場合、証明書をインポートするリージョンは us-east-1
でなくてはいけません。
私は、最初 ap-northeast-1
に上げて、作業をやり直しました。(画像のリージョンがTokyoになっているのはそのため)
必要に応じてコマンドに --region us-east-1
を追加して実行してください。