DNS-01とは
LetsEncryptから発行されるワンタイムトークンをDNSのTXTレコードに設定する認証方式。
IP制限などでHTTP-01での認証ができない場合に有効。
Route53を使ったDNS-01を行う環境が入ったDockerイメージ
Certbotのdns_route53
プラグインでRoute53を使ったDNS-01認証ができるが、CertbotはAmazonLinuxに対応していないのでDockerを使う。
- DockerHub: https://hub.docker.com/r/certbot/dns-route53/
- certbot-dns-route53のドキュメント: https://certbot-dns-route53.readthedocs.io/en/stable/
手順
1. Route53のレコードを編集するIAMポリシーを作成
{
"Version": "2012-10-17",
"Id": "certbot-dns-route53 sample policy",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:GetChange"
],
"Resource": [
"*"
]
},
{
"Effect" : "Allow",
"Action" : [
"route53:ChangeResourceRecordSets"
],
"Resource" : [
"arn:aws:route53:::hostedzone/YOURHOSTEDZONEID"
]
}
]
}
-
YOURHOSTEDZONEID
は ドメインの Hosted Zone ID をコピー
2. 作成したポリシーを証明書を作成するEC2のロールにセット
省略
3. 証明書を作成するEC2で以下を実行
# 事前にDockerをインストールしておく
yum install docker
service docker start
chkconfig docker on
docker run -v "/etc/letsencrypt:/etc/letsencrypt" certbot/dns-route53 certonly -n --agree-tos --email [LetsEncryptアカウントメールアドレス] --dns-route53 -d [ドメイン名]
-
/etc/letsencrypt/live/[ドメイン名]
ディレクトリに秘密鍵(privkey1.pem)と証明書(cert1.pem)がインストールされる