Let’s Encryptで発行したSSL証明書の更新を忘れないようにする【Bitnami on GCP】

GCP
スポンサーリンク
引用:https://letsencrypt.org/ja/

記事概要

ブログの運用期間が長くなってきた先日、Let’s Encryptで発行したSSL証明書の期限がいつの間にか切れていました。
日々確認することは現実的ではないので、自動更新できるように設定したので、そのやり方を記載します。

証明書発行に関する内容は下記のページを参考にしてください。

本記事は2021年9月時点のものです。

前提条件

本手順は、サイトで紹介している「WordPress with NGINX and SSL Certified」を前提としています。
初期導入の方法については、以下の記事前編を参考に構築してください。
※類似環境であれば同様の手順で実行できると思います。

また、Linuxの基本操作はある程度できる方を前提としています。
Linuxのログインの仕方やviの使い方は別途お調べください。

自動化の仕様と事前準備

毎月1日の夜間にSSL証明書を自動更新します。また合わせて実行ログも出力します。

注意点として、SSL証明書を更新する際、nginxを停止する必要があります。
今回は夜間としていますが、実行する時間には気を付けてください。

時刻は、dateコマンドで確認できます。クラウド環境の場合UTCで設定されている場合が多いので気をつけましょう。
タイムゾーンの変更は以下のコマンドで行うことができます。

# timedatectl set-timezone Asia/Tokyo

実施手順

サーバへSSHログイン後、まずはディレクトリを作成します。

# sudo su -
# mkdir -p /ssl/script
# mkdir -p /ssl/log

作成したディレクトリに以下のスクリプトを作成します。
※ファイル名は任意で構いません。

# vi /ssl/script/auto-renew.sh

shファイル編集画面で、以下の自動更新スクリプトのコードを記載します。

#!/bin/bash

Mail="メールアドレスを記載"
Domain_root="サイトのドメイン名を記載(サブドメインが必要な場合は同じ内容の別名変数を用意)"
Log="/ssl/log/ssl-renew.txt"

date '+%Y-%m-%d %H:%M:%S' >> ${Log}
/opt/bitnami/ctlscript.sh stop nginx >> ${Log}
/opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --tls --email=${Mail} --domains=${Domain_root} renew --days 90 >> ${Log}
/opt/bitnami/ctlscript.sh start nginx >> ${Log}

スクリプトの権限を変更します。

# chmod -R 775 /ssl/script/
# chmod -R 755 /ssl/log

cron実行ファイルを作成します。

# vi /etc/cron.d/ssl

実行ファイル編集画面で、以下のcronコードを記載します。

HELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
CONTENT_TYPE=text/plain; charset=UTF-8

0 5 1 * * root /bin/sh /ssl/script/auto-renew.sh 2> /dev/null

cronを再起動します。

# /etc/init.d/cron restart

後は待つだけで毎月1日に更新が行われます。

実行後の確認

設定した日(今回の場合は毎月1日)の後、実行後以下のコマンドを実行し、ログを確認します。

# cat /ssl/log/ssl-renew.txt

1日に実行されたログファイルが、[INFO]と表示され正常に終了していることを確認します。

2021/09/01 05:00:21 [INFO] [xxxxx] Server responded with a certificate.

最後にウェブページを確認して期限が更新されているか確認します。

もし実行されていなかった場合、
・cronが実行されていない
・スクリプトが誤っている
ことが考えられます。
まずは、cronの時間を直近に変更して動作するか確認してみてください。

まとめ

簡単ですが、以上で自動更新ができます。

やっていることは単純ですが、SSL証明書はウェブページにおいてとても重要な役割を持っていますので、更新し忘れがないように気をつけましょう。

タイトルとURLをコピーしました