🦈

AWS R53 ドメイン Let’s Encrypt

2021/12/26に公開

みなさんこんにちは。

本日のお題

お名前ドットコムで取得した独自ドメインをAWSに登録して、そこにHTTPSの証明書を入手してみました。

媒体のVL確認

どうやら、Let’s Encryptの証明書を手に入れるには、LEGOというツールを利用するのがよさそうです。
https://github.com/go-acme/lego

https://github.com/go-acme/lego/releases/

見た感じ、2021/12/26時点では、4.5.3が一番新しいようなので、これを利用させていただくことにする。
たくさんありますが、Amazon LinuxのINTEL系CPUを利用しているEC2なので、lego_v4.5.3_linux_386.tar.gzを利用させていただこうと思います。

インストールというか展開

[root@meet opt]# mkdir -p /opt/lego
[root@meet opt]# cd /opt/lego
[root@meet lego]# wget https://github.com/go-acme/lego/releases/download/v4.5.3/lego_v4.5.3_linux_386.tar.gz

root@meet lego]# ls
lego_v4.5.3_linux_386.tar.gz
[root@meet lego]# tar zxf lego_v4.5.3_linux_386.tar.gz
[root@meet lego]# rm -rf lego_v4.5.3_linux_386.tar.gz
[root@meet lego]# ls
CHANGELOG.md  lego  LICENSE
[root@meet lego]# ll
total 32456
-rw-r--r-- 1 ssm-user docker    30424 Oct  6 10:35 CHANGELOG.md
-rwxr-xr-x 1 ssm-user docker 33198080 Oct  6 11:11 lego
-rw-r--r-- 1 ssm-user docker     1088 Oct  6 10:35 LICENSE

動作を確認する。

動いたようです。

[root@meet lego]# /opt/lego/lego -v
lego version 4.5.3 linux/386
[root@meet lego]#

AWS R53 の設定確認

ホストゾーンIDが必要なので、コピーしましょう。

AWS R53 へのアクセスロール作成

https://go-acme.github.io/lego/dns/route53/


HOSTZONEのところは、「AWS R53 の設定確認」のホストゾーンIDの入力が必要。


作ったポリシーは、EC2のロールにアタッチしてください。

LEGO を実行して、R53に証明書を登録します。

[root@meet lego]# ls
CHANGELOG.md  lego  LICENSE

[root@meet lego]# ./lego --accept-tos --path=/home/yukkuri --email="yukkuri@gmail.com" --dns="route53" --domains="yukkuri.me" --domains="*.yukkuri.me" run

2021/12/25 17:45:06 No key found for account yukkuri@gmail.com. Generating a P256 key.
2021/12/25 17:45:06 Saved key to /home/yukkuri/accounts/acme-v02.api.letsencrypt.org/yukkuri@gmail.com/keys/yukkuri@gmail.com.key
2021/12/25 17:45:07 [INFO] acme: Registering account for yukkuri@gmail.com
!!!! HEADS UP !!!!

Your account credentials have been saved in your Let's Encrypt
configuration directory at "/home/yukkuri/accounts".

You should make a secure backup of this folder now. This
configuration directory will also contain certificates and
private keys obtained from Let's Encrypt so making regular
backups of this folder is ideal.
2021/12/25 17:45:07 [INFO] [*.yukkuri.me] acme: Obtaining bundled SAN certificate
2021/12/25 17:45:08 [INFO] [*.yukkuri.me] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/61928383100
2021/12/25 17:45:08 [INFO] [*.yukkuri.me] acme: use dns-01 solver
2021/12/25 17:45:08 [INFO] [*.yukkuri.me] acme: Preparing to solve DNS-01
2021/12/25 17:45:09 [INFO] Wait for route53 [timeout: 2m0s, interval: 4s]
2021/12/25 17:45:36 [INFO] [*.yukkuri.me] acme: Trying to solve DNS-01
2021/12/25 17:45:36 [INFO] [*.yukkuri.me] acme: Checking DNS record propagation using [10.0.10.2:53]
2021/12/25 17:45:40 [INFO] Wait for propagation [timeout: 2m0s, interval: 4s]
2021/12/25 17:45:47 [INFO] [*.yukkuri.me] The server validated our request
2021/12/25 17:45:47 [INFO] [*.yukkuri.me] acme: Cleaning DNS-01 challenge
2021/12/25 17:45:49 [INFO] Wait for route53 [timeout: 2m0s, interval: 4s]
2021/12/25 17:46:19 [INFO] [*.yukkuri.me] acme: Validations succeeded; requesting certificates
2021/12/25 17:46:21 [INFO] [*.yukkuri.me] Server responded with a certificate.
[root@meet lego]#

ファイルができていることを確認

このファイルをWEBサーバーなどで利用する。

[root@meet certificates]# pwd
/home/yukkuri/certificates
[root@meet certificates]# ls
yukkuri.me.crt  yukkuri.me.issuer.crt  yukkuri.me.json  yukkuri.me.key
[root@meet certificates]#

証明書の更新の場合

試しに実行してみましたが、残期間が30日を切らないと入力できないようです。

[root@meet lego]# ./lego --accept-tos --path=/home/yukkuri --email="yukkuri@gmail.com" --dns="route53" --domains="*.yukkuri.me" renew

今回の所要時間

不慣れなこともあったので、調査も含めて4時間ぐらいですかね。
OSインストールや、インフラ初期設定を考えると、短いといえば短い時間です。

Discussion