EV SSLクソ食らえ!の精神で,のLet’s Encrypt をいろんな環境で活用させてもらっていますが,NAT配下のテスト環境にもワイルドカード証明書を突っ込んでいます.
もちろん自動更新設定です.
certbot で Let’s Encrypt の認証をするときに,Route53を利用する方法です.
certbotのプラグインで,certbot-dns-route53プラグインがありますので,そちらを利用します.
しがらみの一部がCent6系で辛いですが,そちら前提で一度メモ書きを.
サービス起動コマンドとかだけ直せば基本的にCent7でも動きますね.
考え方は同じなので,certbot-autoではなくcertbotがいいと思いますけど.
まずcertbot-autoの取得
$ wget https://dl.eff.org/certbot-auto
どこでもいいですが,今回は, /usr/local/bin にでも置きましょう.
# mv ./certbot-auto /usr/local/bin/
適当にroot所有にしてから権限設定
# chown root /usr/local/bin/certbot-auto # chmod a+x certbot-auto /usr/local/bin/certbot-auto
まずは,セットアップ目的で実行します.
とりあえず環境を完成させてもらって,最後の証明書取得のあたりの適当なところで抜けます.
# /usr/local/bin/certbot-auto
当該環境のvenvがこちらにセットされますので
/opt/eff.org/certbot/venv/bin/pip
この環境に,certbot-dns-route53 をインストールします.
# /opt/eff.org/certbot/venv/bin/pip install certbot-dns-route53
これでとりあえず無事にプラグイン設定が終わりました.
次に,AWS側に専用ユーザを作成します.
DNS書き換えできればいいので,権限を最低限に絞ります.
AWSでIAMメニューから,グループまたはユーザに適宜権限を付与します.
私は面倒なので割とVisualEditorで作ってしまいます.
ここも自動化してもいいかもしれないですね.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "route53:GetChange", "route53:ListHostedZones" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/<ホストゾーンID>" } ] }
ちなみに,ホストゾーンIDはここです.
Route53の認証情報は,root実行の前提だと, /root/.aws/config あたりに入れる必要があります.
生成したキー情報を設定します.
[default] aws_access_key_id=<アクセスキー> aws_secret_access_key=<シークレットアクセスキー>
キー生成後にさくっと実行します.
面倒なので,ワイルドカード証明書の前提です.
# ./certbot-auto certonly --dns-route53 -d *.<対象ドメイン> -d <対象ドメイン> --server https://acme-v02.api.letsencrypt.org/directory
あとは,通常通り,出力された鍵情報を必要なサーバから読めるようにしましょう.
ついでに,更新はこちらですね.
月1回くらいバッチで自動実行しておけばバチは当たらないです.
renew-hookが地味に便利ですね.
renewが成功したときだけ,自動実行してくれますよ.
# /usr/local/bin/certbot-auto renew --renew-hook "/etc/init.d/httpd restart"