私の管理するグンマストドンで行ったLet’s EncryptのSSL証明書の更新方法をご紹介します。2017年4月頃に流行りだしたマストドンインスタンスで、証明書の自動更新がうまくいっていないところはそろそろ証明書の期限を迎えることになります。証明書が失効するとインスタンスに接続できなくなるので、それまでに対応することが必須となります。当時紹介されていた自動更新の方法ではうまく動かないというケースがあるので、まずはご自分のインスタンスの証明書の有効期限を確認して、うまくいっていないようでしたらすぐに手動更新して暫定的に対応することをおすすめします。
証明書の有効期限を確認する
1 2 3 4 |
openssl s_client -connect gunmastodon.com:443 < /dev/null 2> /dev/null | openssl x509 -text | grep Not Not Before: Apr 18 14:00:00 2017 GMT Not After : Jul 17 14:00:00 2017 GMT User Notice: |
>Not After : Jul 17 14:00:00 2017 GMT
これが有効期限です。
証明書の更新を行う
1 2 3 4 5 6 7 8 |
#nginx停止 systemctl stop nginx #証明書更新 /opt/certbot/letsencrypt-auto renew --force-renew #nginx再起動 systemctl start nginx |
証明書の更新を行うときはnginxのインスタンスを停止する必要があります。実行中に証明書の更新コマンドを実行するとエラーになるますのでご注意ください。こういうエラーが起こります。
1 |
Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping |
crontab自動更新設定をします
1 |
10 2 15 * * systemctl stop nginx && /opt/certbot/letsencrypt-auto renew --force-renew && systemctl start nginx |
毎月15日の2:10にコマンドを実行するにはこのように書けばOKです。タイミングは任意ですのでお好きな時間に設定してください。