前の記事ではサブドメインまで決め打ちの証明書を作りました。 suzu-ha.com
これをワイルドカード証明書にしてみます。
*.<ドメイン> と <ドメイン> に対して有効な証明書を作ります。
(ドメインがexample.comなら、「*.example.com」「example.com」に対して有効な証明書です。)
証明書発行コマンドです。
sudo certbot から --agree-tos までで1つのコマンドです。
長いので \ で折り返しています。
myuser@myhost:~ $ sudo certbot certonly --manual \ --preferred-challenges dns \ -d *.<証明書発行対象のドメイン> -d <証明書発行対象のドメイン> \ -m <メールアドレス> --agree-tos Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Requesting a certificate for *.example.com and example.com Performing the following challenges: dns-01 challenge for example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.example.com with the following value: XXXX...................................XXXX Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue
ここまで来たら、指示どおりDNSサーバにTXTレコードを作ります。
ホスト名 | TYPE | VALUE |
---|---|---|
_acme-challenge.<証明書発行対象のドメイン> | TXT | XXXX...................................XXXX |
設定後反映されるまでタイムラグがあるので、別ウインドウあるいは別PCから確認しましょう。
digコマンドを使う場合は以下のとおり。設定したVALUEが表示されたらOKです。
myuser@myhost:~ $ dig -t txt _acme-challenge.<証明書発行対象のドメイン> (中略) ;; ANSWER SECTION: _acme-challenge.example.com. 3600 IN TXT "XXXX...................................XXXX"
certbotコマンドを実行しているウインドウが「Press Enter to Continue」で止まっているはずですので、Enterキーを押して先に進めます。
Press Enter to Continue Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your certificate will expire on 2023-04-14. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
nginxのサイト設定ファイルを編集、nginxを再起動します。前の記事と同様なので省略します。
証明書の更新ですが、ワイルドカード証明書の場合はDNS認証(TXTレコードを仕込む)が必要なため自動更新は難しいです。
certbotコマンドのDNSプラグインが提供されていれば自動更新できるかもしれません。
User Guide — Certbot 2.9.0 documentation
うちの場合は、自動更新はあきらめて3か月に1回手動更新することにしました。
手動更新の場合は、証明書発行と同じコマンドでOKです。