certbotでLet’s Encrypt あれこれ

最近webコンパネのあるソフトはどれもhttpsになっていて、owncloudやesxi,zabbixなど証明書のエラーがうるさいのでLet’s Encryptで証明書を取った。
webrootとstandaloneの2種類があるみだいだけど、webrootがうまく行かなかったのでstandaloneにしている。

証明書を取るためのcertbotはepelにあるのでyumでインストールできる。gitから持ってきてもいい。

yum install certbot

証明書の取得はいかのコマンドでできる。初回のみ、–agree-tosオプションが必要になるかもしれない。

certbot certonly --standalone -d depra.net

この段階でなんらかのエラーが出たときには、だいたい80か443を他のプロセスが開いている。certbotが使うので証明書取得の際は開けておく必要がある。
もしくはゾーン情報が浸透していないと、指定したドメインの名前解決ができなくて失敗する。新しいレコードの場合は待たないといけないかもしれない。

証明書を取るともろもろ/etc/letsencrypt/live/配下に保管される。多分取得したあとのコマンドの結果に書いてある。nginxにはこの中にある証明書と鍵を指定してあげる。
serverディレクティブに以下を書いておけば大丈夫なはず。

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/depra.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/depra.net/privkey.pem;

だけども90日ごとに更新が必要だし、standaloneだとnginxをとめないといけない。めんどくさいのでcronとcertbotのオプションで自動にした。
毎月20日の朝4時に動かすようにした。

00 4 20 * * certbot renew --pre-hook "systemctl stop nginx" --post-hook  "systemctl start nginx"

証明書の更新は必要なしと判断された場合はpre-hookもpost-hookも動かないので安心。定期再起動感覚で動かしている。サーバー停止させたくない場合は、webrootのほうがいい。
実際のところはlocal利用のサーバーに証明書を渡したりしているので、post-hookにはスクリプトを指定して、nginxのスタートと証明書をrsyncするようにしている。

証明書のエラーがないだけで、ストレスフリーです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください