今回は、複数のサブドメインが1つの証明書で利用可能なワイルドカード証明書を取得してみます。
取得するwebサーバはCentOS7.5です。DNSは別サーバのBINDで同じDMZ内にあります。nsupdateが使用できるようにあらかじめnamed.confの該当ゾーンのallow-updateにIPを登録しておき、firewallやUTMの設定をしておきます。今回は面倒なので鍵認証はしません。
certbotというLet's Encryptとの通信クライアントをインストールします。
# yum install --enablerepo=epel certbot -yLet's Encryptにドメインの管理権があることを証明するために外部から参照できるzoneファイルに一時的に次のようなTXTレコードを書く必要があります。
_acme-challenge.example.com. IN TXT "hogehoge"nsupdateでTXTレコードを追加できるように次のようなスクリプトを作成しておきます。
certbot-auth.sh
#!/usr/bin/bash DNSSERVER="dns.example.com" ZONE="example.com" TTL=300 printf "server %s\nzone %s.\nupdate add _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${DNSSERVER}" "${ZONE}" "${CERTBOT_DOMAIN}" "${TTL}" "${CERTBOT_VALIDATION}" | nsupdate発行されたら追加したTXTレコードを削除すためのスクリプトを作成しておきます。
certbot-clean.sh
#!/usr/bin/bash DNSSERVER="dns.example.com" ZONE="example.com" TTL=300 printf "server %s\nzone %s.\nupdate delete _acme-challenge.%s. %d in TXT \"%s\"\nsend\n" "${DNSSERVER}" "${ZONE}" "${CERTBOT_DOMAIN}" "${TTL}" "${CERTBOT_VALIDATION}" | nsupdate証明書が更新された時にapacheを再起動します。
certbot-deploy.sh
#!/usr/bin/bash systemctl restart httpd3つのファイルを/usr/local/binに移して、パーミッションを変更して実行できるようにします。
証明書を取得します。
# certbot certonly -n \ -d *.example.com \ -m root@example.com \ --agree-tos \ --manual-public-ip-logging-ok \ --manual \ --preferred-challenges dns \ --manual-auth-hook /usr/local/bin/certbot-auth.sh \ --manual-cleanup-hook /usr/local/bin/certbot-clean.sh \ --deploy-hook /usr/local/bin/certbot-deploy.sh更新は
$ certbot renewでOKです。crontab -eで1日1回実行するように登録しておけば、期限切れ1ヵ月前に更新されます。
0 件のコメント:
コメントを投稿