CerbotでLet's Encriptの自動更新がうまくいかなかった話
[10/21, 2019] |
こんにちは、最近「まいばすけっと」の魅力に気がつきました。こんにちは、トモです。
最近はTSLがきれていると、Chromeなどのブラウザで警告が出て、表示することができない仕様担っていますよね。
このTomo.LogはTSLの証明書の発行をLet's Encriptを使って行なっています。さらに、Certbotを使って自動更新しているのですが、年に1回くらい更新に失敗して、気づいたら証明書の有効機嫌がきれていてよく焦ります😅
毎回証明書がきれてから気づいて戸惑ってしまうので、メモしておきます。
Cerbot自体の更新(アップデート)
よくあるのが、Cerbot自体が更新されていなくて、更新しないとrenewさせないよーって怒られたりします。なのでひとまずCerbotを更新します。
//パッケージの更新
sudo apt-get update
//パッケージのインストール
sudo apt-get install
//もしくは cerbotだけインストール
sudo apt-get install --only-upgrade certbot
CerbotでRenewを試してみる
certbot renew --dry-run //更新のテスト
上記のコマンドで更新のテストをしてみます。だいたいOK なのですが、今回初めて怒らて下記のエラーが出ました。
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for tomolog.reafo.io
nginx: [error] invalid PID number "" in "/run/nginx.pid"
Cleaning up challenges
nginx: [error] invalid PID number "" in "/run/nginx.pid"
・・・さらにエラーは続く
「nginx: [error] invalid PID number "" in "/run/nginx.pid"」この辺が怪しそうですね。
Nginxの停止と再起動
とりあえずリスタート
とりあえずリスタートしてみました。
nginx -s reload //nginxのリロード
しかしまたしても、怒られてしまいました。
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
・・・さらにエラーは続く
そこで、停止を試みます。
nginx stop //nginxの停止
ダメなようです。。。なぜ??
Failed to stop nginx.service: Access denied
See system logs and 'systemctl status nginx.service' for details.
プロセスを切る(Kill)
下記コマンドでngnxのプロセス一覧を表示します。
ps aux | grep nginx //プロセス一覧の表示
「nginx: worker process」と書かれたプロセスがいくつか出ると思います。
user_name 12345 0.0 0.4 127248 4072 ? S Aug09 14:19 nginx: worker process
なので、左から二番目のプロセス番号を使ってkillしてあげます。
kill 12345 //プロセスの停止
再起動
nginxは「nginx」と打てば起動できます。
nginx //nginx起動
再度Cerbotで更新してみる
再度dry runで更新できるか試してみます。もしも問題がなければdry runを外して更新をする。
certbot renew //更新の問い合わせ
ちなみに、dry runをせずにrenewで一定回数失敗すると、一定時間アクセスできない制限がかかってしまうので、試すときは必ずdry runオプションをつけるようにしましょう。
今回はこれで直り、無事更新できました。
ふー焦った😅