目次
はじめに
GCPで運用している WordPress サイト(Bitnami スタック)で、Let’s Encrypt の SSL証明書の自動更新がされていない問題に直面しました。
本記事では、発見から対応完了までのステップを実際のやり取りを元にまとめています。
証明書の確認で異常を検知
SSHでVMにログインし、まずは証明書の状態を確認。
sudo openssl x509 -noout -dates -in /opt/bitnami/letsencrypt/cert.pem
出力結果:
Unable to load certificate
No such file or directory: /opt/bitnami/letsencrypt/cert.pem
正しい証明書ファイルの場所を確認
Bitnamiスタックでは、証明書は certificates/ ディレクトリ内に格納されていました。
sudo ls -l /opt/bitnami/letsencrypt/certificates
中には以下のファイルが:
- bayashimo.jp.crt
- bayashimo.jp.key
続いて、有効期限を確認:
sudo openssl x509 -noout -dates -in /opt/bitnami/letsencrypt/certificates/bayashimo.jp.crt
結果:
notBefore=Oct 28 2024
notAfter=Jan 26 2025
すでに失効済みでした。
SSL証明書を再取得
Nginxの一時停止
sudo /opt/bitnami/ctlscript.sh stop nginx
証明書の再取得(初回はrun)
sudo /opt/bitnami/letsencrypt/lego \
--tls --email="hogehoge@example.jp" \
--domains="bayashimo.jp" \
--path="/opt/bitnami/letsencrypt" \
run
※emailのところは自分のメールをいれました
Nginxを再起動
sudo /opt/bitnami/ctlscript.sh start nginx
更新後の確認
sudo openssl x509 -noout -dates -in /opt/bitnami/letsencrypt/certificates/bayashimo.jp.crt
notBefore=Jun 9 2025
notAfter=Sep 7 2025
問題なく更新できていました!

自動更新の設定(cron)
スクリプトの確認
sudo nano /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
スクリプトに実行権限を付与
sudo chmod +x /opt/bitnami/letsencrypt/scripts/renew-certificate.sh
crontabの編集
sudo crontab -e
以下を追記。毎日0時に更新を実行
0 0 * * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 2> /dev/null
登録内容を確認:
sudo crontab -l

- https://bayashimo.jp でブラウザからアクセスし、SSL証明書の期限が更新されている
- cron により今後は自動で更新される設定になっている
上記が実現できたのでこれでSSLの自動化に成功といえそうです!
おわりに
Bitnami環境の Let’s Encrypt 更新は、パスやスクリプトの構造に独特な部分があるため、マニュアル通りにやってもうまく動かないことがあります。
本記事の手順で、同じように困っている方の参考になれば幸いです。