Let’s Encryptでcertbotをちょっとアタマ使ってスマートに使おう(?)編)
Let’s Encrypt の証明書管理ツール pythonだとあんまゴニョゴニョしすぎるといろんな所に影響でちゃう・・・だったら pyenv を利用してその辺すっきりとスマートに使おう!というヤツ
以下 *.example.jp の証明書を取得する場合について書いていく
(example.jp の Name Server は AWS Route53 利用)
① root ユーザで pyenv 導入
# curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash # vi /root/.bashrc → ファイルの最後に下記3行追加 export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
② 一度 root でログインし直してから pyenv を利用して python 3.8.3 (2020/07/02現在の 3.8系最新版)をインストール
# pyenv install 3.8.3
インストールに失敗する場合はググりましょう()
まあ大抵 libffi がインストールされていないのが原因だったりするんですが・・・
③ pyenv 環境下で利用するデフォルトバージョンを 3.8.3 にする
# pyenv global 3.8.3
④ pip を最新化(しなくてもいいかも)した後、プラグインをインストール
# pip install pip -U # pip install certbot certbot-dns-route53
⑤ Access Key を取得する
・Web GUI等から Route 53 の example.jp ホストゾーンについて Hosted Zone ID を確認する
・下記Access Key を発行する
{ "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/<Hosted Zone ID>" } ] }
・Access Key を下記のいずれかに設定する(複数設定した場合は上から順に参照される)
ACCESS_KEY_ID
ファイル /root/.aws/config (credentials)
AWS_CONFIG_FILE に設定されているファイル
※ aws/config に書いちゃった方が楽(たぶん)
※ ファイルに書く場合は下記のフォーマットにすること
[default] aws_access_key_id = <Access Key> aws_secret_access_key = <Secret Access Key>
⑥ certbot コマンドを実行して証明書発行処理を行う
# certbot certonly --dns-route53 -d *.example.jp
※以前の古い ACME v2 での対応だったため)が、現在の最新版では不要です
※環境変数を設定して実行したい場合は env を併用するとよいでしょう・・・
まあこんな感じで
コメント