lego を使い Route53 認証でサーバ証明書を取得する (2020/09/27 版)
以前に以下のメモを書きました。
lego を使えば certbot をインストールすること無く、Let's Encrypt の証明書を取得出来ますので非常に手軽です。 lego のバージョンは前回のメモ時点で 2.6.0 だったのですが、現時点の最新は 4.0.1 の為、改めてメモを書き直しておきます。 但し、バージョンによる差異が全く無い為、手順は全く同じです。 また、メモの最後にワイルドカード証明書を発行 / 更新する場合のメモを追加しておきました。
前提条件¶
今回は以下の環境で作業しました。
- AWS EC2 上に作成した AmazonLinux2
IAM ポリシーの作成¶
以下の内容で IAM ポリシーを新規作成します。 <INSERT_YOUR_HOSTED_ZONE_ID_HERE>
部分は Route53 の管理画面で該当 DNS Zone 情報から取得します。 IAM ポリシーを作成したら、それを参照するロールを作成し、更にそれを参照するように EC2 インスタンスを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
インストール¶
AmazonLinux2 上で lego をインストールします。
1 2 3 4 5 6 7 |
|
サーバ証明書を取得する¶
lego を使い、サーバ証明書を取得します。 IAM ポリシーが適切に設定され、EC2 インスタンスから該当 DNS Zone へ必要なアクセスが出来ていれば、じき終了するはずです。
1 2 3 4 5 6 7 |
|
サーバ証明書を更新する¶
サーバ証明書を更新するには renew
を指定します。 また、十分な有効期限が残っているサーバ証明書は無駄に更新処理を行わないよう、--days 30
オプションを指定し、「有効期限が 30 日未満の証明書のみ、更新処理を行う」ように設定します。 あとはこの処理を cron 等で定期実行させます。 --days
オプションは renew
よりも後ろに指定します。
1 2 3 4 5 6 7 8 |
|
ワイルドカード証明書を発行 / 更新する場合¶
ワイルドカード証明書を発行する場合は --domains
オプションに *.example.com
を含めます (ドメイン部分は実際のドメインに合わせます)。
1 2 3 4 5 6 7 8 |
|
同様に、ワイルドカード証明書を更新する場合は以下を実行します。
1 2 3 4 5 6 7 8 9 |
|