Dockerコンテナ越しのSSL/TLS証明書の自動更新
|
2019年5月に、ブログをマイグレーションしたのですが、SSL/TLS証明書の自動更新設定をまだしていなかったので、先日実施しました。
手順を簡単にまとめます。
SSL/TLS証明書の取得
このブログはdocker composeを使って下記3つのコンテナが動いています。
- WordPressのコンテナ
- Nginxのコンテナ
- MySQLのコンテナ
CertbotをNginxのコンテナにインストールしてあり、証明書の取得と更新はこのコンテナで実行します。
Certbotのインストール方法や使い方は割愛しますが、取り急ぎ証明書のみの取得は下記のコマンドで行えます。
certbot certonly
あまりコンテナの中に入ってコマンドを打ちたくない場合は下記
docker container exec -it NGINX_CONTAINER_NAME certbot certonly
自動更新の設定
Certbotでの証明書更新は下記のコマンドで行います。
certbot renew
ホスト側から実行する場合は下記↓
docker container exec -it NGINX_CONTAINER_NAME certbot renew
自動更新の設定はホスト側のCronで行います。
# Cronの編集
crontab -e
# 下記のような感じで追記
30 4 * * * docker container exec -it NGINX_CONTAINER_NAME certbot renew > /var/log/certbot_job.log 2>&1
毎日AM4:30にNginxのコンテナに対して certbot renew
コマンドを実行。実行結果は /var/log/certbot_job.log
へログファイルとして書き出すようにしています。こうしてロギングしていれば、万が一エラーが発生した場合の調査に役立ちます。
まとめ
そろそろ静的ジェネレータに移行するか、少なくとも固定額制のVPSに移りたいですね。。今は現プロジェクトで手一杯なので、そのうちがんばります。