ウェブサイトのSSL化(その2)

この記事は約2分で読めます。

サイトをSSL化する作業は、この記事(ウェブサイトのSSL化(その1))にある通りだが、Let’s EncryptのSSL証明書は定期的に更新する必要がある。で、cronを使って自動化していたのだが、どうも、SSL証明書を取得する際に、Nginxを停止 → Nginxを再起動、としていたはずなのに、Nginxが起動していない様子で、定期的にウェブサーバが止まってしまっていた。

ウェブサーバが原因不明でよくとまるみたいだけど、なんでかなぁ、と思っていたのだが、Nginxを止める作業は、手作業ではしていないし、yumでアップデートするときは、必ず手作業で再起動しているし、SSL証明書の更新のときかも、と今更ながら気づいて、cronで動かしているシェルスクリプトを確認したところ、見事にNginxの再起動に失敗していた。

まあ、sudoで動かせばよかっただけです。ちゃんちゃん。

#!/bin/sh
LOGFILE=/var/log/letsencrypt/renew.log

sudo systemctl stop nginx.service

if [ -f "$LOGFILE" ]; then
    savelog -c 90 -q "$LOGFILE"
fi
if ! certbot renew > "$LOGFILE" 2>&1 ; then
    echo Automated renewal failed:
    cat "$LOGFILE"
    exit 1
fi
if [ -f "$LOGFILE".0 ]; then
    diff -u "$LOGFILE".0 "$LOGFILE"
fi

sudo systemctl start nginx.service

このスクリプトを、1週間に1回動かしています。これからは大丈夫、と思います。

コメント