Lets's encrypt自動更新 on Debian

このサーバーはDebian GNU/Linuxで動いているのですが、Debian系OSでcertbotでSSL証明書の自動更新をするメモ。

そもそもの証明書取得

証明書を取得するには、まずcertbotをインストールします。 ついでに、nginxを動かすのでnginx pluginも入れておきます。

$ sudo apt install certbot python3-certbot-nginx

certbotパッケージをインストールするとcertboxコマンドが使えるようになります。nginx pluginをいれたことにより、nginxの明示的な再起動も不要です。

$ sudo certbot --nginx -d *.theta.tokyo

リダイレクションまで設定ファイルに書き込んでくれます。

SSLまで含め自分で設定したければ、

$ sudo certbot certonly --nginx -d *.theta.tokyo

として、/etc/nginx/sites-available/xxxに

listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/xxx/fullchain.pem; # xxx: domain
ssl_certificate_key /etc/letsencrypt/live/xxx/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

とか書き込んで、sites-enabledにsimlinkを張っておくといいでしょう。

自動更新

/etc/cron.d/certbotというファイルがありますが、これは関係ないです。systemdが動いている場合、これではなく/lib/systemd/system/certbot.timerが/lib/systemd/system/certbot.serviceを実行してくれます。何か加えたければこれを編集すればいいですが、–nginxオプション付きでcertbotを実行しておけば特にnginxの終了と再起動などは一切しなくて大丈夫です。実際/etc/letsencrypt/renewal/xxx.confを見てみると

# Options used in the renewal process
[renewalparams]
account = ...
authenticator = nginx
installer = nginx

となっており、renewal processでもこれが使われることがわかります。もし最初オプションを付け忘れてstandaloneモードで起動してしまっても、これを書き換えればokです。

雑感

どっかのwebページから–pre-hookだのcertbot –standaloneだのをコピペしてきた結果正しく証明書の更新ができていませんでした。マニュアルはよく読もう。

Comments

comments powered by Disqus