certbot について
certbot の使い方は,こちらがとても良くまとまっている.
私も参考にさせていただいた.
Let's encrypt運用のベストプラクティス - Qiita
課題
ただし私の場合は,上の記事では省略されている以下の場合に該当するサーバが私の場合は多かったので,メモっておく.
certbot自体をWebサーバとして機能させる、standaloneプラグインもありますが、利用するケースは限られるはずです。動作確認でも、実際の運用でも、webrootプラグインを使うほうが簡単でしょう。
例えば,表題の owncloud とか gitbucket とか,document root にテキトーにファイルを置いても持っていってくれない認証つきサービスなどを動作させている場合は,webrootプラグインで動かせないんで,頑張らないといけない.
私の運用しているサーバの場合,過半数がこっちだったりして.
手順
初回
初回の取得は,大人しく手で止めて取得する.
また,私の常用する debian (old stable) では,certbot が古いんで certbot/certbot をcloneしている.
さらに,変数 EMAIL にはドメインマスターのメールアドレスを,DOMAIN には FQDN を指定してあるものとする.
ちなみに -m オプションによるメールアドレスの指定はなくても良いかも.
git clone https://github.com/certbot/certbot.git
sudo service nginx stop
sudo certbot/certbot-auto -m $EMAIL --agree-tos --standalone -d $DOMAIN
設定は上の記事と同じだけど,一応再掲しておくと
ssl_certificate /etc/letsencrypt/live/DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/DOMAIN/privkey.pem;
忘れないよう,サーバを上げておく.
sudo service nginx start
2回目以降
実はすげー簡単なんだけど,webrootプラグインの場合と違って事前に --pre-hook で80番と443番のポートを見ているプロセスを停止しておかないといけない点だけ注意.
当たり前だけど.
で,nginxの場合はこんな感じ.
# !/bin/sh
certbot/certbot-auto renew -q --pre-hook 'service nginx stop' --post-hook 'service nginx start'
こいつをroot権限でcrontabでdailyくらいで実行するように指定しておけば良い.
すぐに実行しても不都合はあんましないので,試しに手でも実行しておいた方が良い.
例えばパーミッションに実行権限つけ忘れてたりとかに気付けるから.