【Lightsail】SSL証明書の期限切れエラーを復旧する方法|Bitnami Apache環境で更新
ある日、Amazon Web Services の Amazon Lightsail 上で運用している Web サーバーへアクセスすると、「保護されていない通信」と表示され、SSL証明書エラーが発生していました。
本記事では、Bitnami Apache 環境で実際に実施した調査方法と、Let’s Encrypt 証明書の再発行手順を紹介します。
記事の目次
前提条件
今回の環境は以下の構成です。
- AWS Lightsail
- Bitnami Apache
- Let’s Encrypt
- Lightsailロードバランサー未使用
- certbot未使用(lego を利用)
certbot は導入していないため、下記コマンドは利用できません。
sudo certbot certificates
証明書期限切れを確認
ブラウザで対象サイトへアクセスし、URL左上に表示されている「保護されていない通信」をクリックします。
その後、「証明書の詳細」をクリックします。
証明書情報を確認すると、有効期限が切れていました。
Lightsail に SSH 接続し証明書を探す
まずはサーバー上に存在する証明書ファイルを確認します。
sudo find / -name "*.crt" 2>/dev/null | grep -vE "/usr/share|/lib|/ca-certificates"下記の証明書が存在していました。
/opt/bitnami/apache/conf/muchstd.solutions.crt
/opt/bitnami/apache/conf/muchstd.solutions.key
※ server.crt は Bitnami のデフォルト証明書です。
Apache が使用している証明書を確認する
Apache が実際にどの証明書を参照しているか確認します。
sudo grep -R "SSLCertificate" /opt/bitnami/apache/conf/vhosts確認すると、下記ファイルを使用していることが分かりました。
/opt/bitnami/apache/conf/vhosts/wordpress-https-vhost.conf:SSLCertificateFile "/opt/bitnami/apache/conf/muchstd.solutions.crt"
/opt/bitnami/apache/conf/vhosts/wordpress-https-vhost.conf:SSLCertificateKeyFile "/opt/bitnami/apache/conf/muchstd.solutions.key"つまり、現在 Apache が使用している証明書は以下になります。
SSLCertificateFile "/opt/bitnami/apache/conf/muchstd.solutions.crt"
SSLCertificateKeyFile "/opt/bitnami/apache/conf/muchstd.solutions.key"openssl で証明書の有効期限を確認する
現在 Apache が使用している証明書の有効期限を確認します。
sudo openssl x509 -in /opt/bitnami/letsencrypt/certificates/muchstd.solutions.crt -noout -dates
Let’s Encrypt証明書を再発行する
以前レンタルサーバーから移行した影響もあり、今回は新規に証明書を再発行することにしました。
証明書発行時は 443 ポートを使用するため、Apache が起動したままだと失敗する場合があります。
そのため、一度 Apache を停止します。
sudo /opt/bitnami/ctlscript.sh stop apache続いて、lego コマンドで証明書を発行します。
sudo /opt/bitnami/letsencrypt/lego \
--tls \
--email "あなたのメールアドレス" \
--domains "あなたの使用しているドメイン" \
--path "/opt/bitnami/letsencrypt" \
run
証明書発行後、Apache を起動します。
sudo /opt/bitnami/ctlscript.sh start apache作成された証明書のタイムスタンプを確認します。
sudo ls -la /opt/bitnami/letsencrypt/certificates/
新規発行した証明書を Apache へ反映する
まずはバックアップを取得します。
sudo cp /opt/bitnami/apache/conf/muchstd.solutions.crt \
/opt/bitnami/apache/conf/muchstd.solutions.crt_bk_20251106
sudo cp /opt/bitnami/apache/conf/muchstd.solutions.key \
/opt/bitnami/apache/conf/muchstd.solutions.key_bk_20251106続いて、新しく発行した証明書で上書きします。
sudo cp /opt/bitnami/letsencrypt/certificates/muchstd.solutions.crt \
/opt/bitnami/apache/conf/muchstd.solutions.crt
sudo cp /opt/bitnami/letsencrypt/certificates/muchstd.solutions.key \
/opt/bitnami/apache/conf/muchstd.solutions.keyApache を再起動します。
sudo /opt/bitnami/ctlscript.sh restart apache無事HTTPS化になりました。
cronでSSL証明書更新を自動化する
毎回手動更新するのは大変なため、cronへ登録して自動更新します。
crontab を編集します。
sudo EDITOR=vi crontab -e下記を追加します。
0 3 1 * * /opt/bitnami/letsencrypt/lego --tls --email "<YOUR_MAIL>" --domains "muchstd.solutions" --path "/opt/bitnami/letsencrypt" renew && /opt/bitnami/ctlscript.sh restart apache
毎月1日 03:00 に証明書更新を実施し、更新後に Apache を再起動する設定です。
まとめ
Bitnami 環境では、Apache がどの証明書を参照しているか分かりづらく、証明書更新後もエラーが継続する場合があります。
今回のように、
- Apache設定確認
- openssl による期限確認
- Let’s Encrypt 証明書再発行
- Apache への反映
- cron 自動更新
の流れで確認することで、SSL証明書エラーを解消できました。
- タグ:
- LightSail