【メモ】Let’s Encryptで発行した証明書をどうにかする

Let’s Encryptとは無料で証明書を発行してくれるヤツ。普通に証明書を取ろうとするとお金がかかるので、弱小学生には非常に嬉しいサービスである。

証明書を発行するのに便利なツールとしてCertbotというものがある。これがなかなか面白く、機能が豊富であるため、コマンド入力をよく忘れがちである。なので、ここに記そうと思う。

環境はCentOS 8.1、Nginxを使っていると想定する。

設定

nginxのconfファイルに応じた証明書を発行する

nginxのconfファイルを作成し、通常のHTTP通信の設定を構築後、以下のコマンドを入力。

certbot-auto --nginx 

あとはconfファイルに入力したドメインを選び、強制リダイレクトをかけるかの設定をすれば勝手にHTTPS通信になる。

証明書の発行だけ

上記の設定ではnginxのconfファイルを勝手に書き換えてくれるが、証明書の発行だけをしたい場合は以下のコマンドを入力する。

certbot-auto certonly --nginx 

certonlyをつけることによって /etc/letsencrypt/live/ に新しい証明書ができているので、自分でconfファイルをいじる。

更新

たしかこれ

certbot-auto renew 

証明書を失効させる

certbot-auto revoke --cert-path /etc/letsencrypt/archive/DOMAIN_NAME/cert.pem

付録

自動で証明書の更新を行う

Let’s Encryptは証明書の有効期限が他と比べて短い。上記のコマンドを入力して再発行してもよいが、自動化したほうが楽だし、ヒューマンエラーも防げる。

スケジューラーにはcrontabをつかう。

echo "0 0,12 * * * root python3 -c 'import random;  import time; time.sleep(random.random() * 3600)' &&  certbot-auto renew" | sudo tee -a /etc/crontab >  /dev/null 

crontabに一定間隔で更新させる処理を追加することで、更新忘れを防ぐことができる。

追記 2020/07/31

私のサイトではワイルドカード証明書を取得しているのですが、上記の方法では更新できませんでした。

certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -m mail-address@hoge.com -d hoge.com -d *.hoge.com

という感じで証明書を発行し、DNSサーバにTXTを設定してやっています。

更新も同じコマンドを入力して再発行しています。


参考文献

Certbot: https://certbot.eff.org