certbotを使って Let's Encrypt ワイルドカード証明書をスマートに(?)発行する(Route 53版)

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 を併用するとよいでしょう・・・

まあこんな感じで

コメント

タイトルとURLをコピーしました