【Lightsail】SSL証明書の期限切れエラーを復旧する方法|Bitnami Apache環境で更新

LightSailアイキャッチ

ある日、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.key

Apache を再起動します。

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証明書エラーを解消できました。