Certbotで証明書更新時にドメイン変更によるエラーが発生した場合の対処法

bird, blue, clouds

問題の概要

Certbotを使用して SSL/TLS 証明書を管理している際、ドメインを変更した後に以下のようなエラーが発生することがあります:

[root@server ~]# /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
Renewal configuration file /etc/letsencrypt/renewal/old-domain.example.com.conf is broken.
The error was: target /etc/letsencrypt/archive/old-domain.example.com/cert3.pem of symlink /etc/letsencrypt/live/old-domain.example.com/cert.pem does not exist
Skipping.
0 renew failure(s), 1 parse failure(s)

この問題は、新しいドメインで証明書を作成したにもかかわらず、古いドメインの更新設定ファイルが残っているために発生します。

解決方法

以下の手順で問題を解決できます:

古い証明書の設定ファイルを削除します:

sudo rm /etc/letsencrypt/renewal/old-domain.example.com.conf

古い証明書のアーカイブとライブデータを削除します:

sudo rm -rf /etc/letsencrypt/archive/old-domain.example.com
sudo rm -rf /etc/letsencrypt/live/old-domain.example.com

certbotの更新をドライランで実行し、新しい証明書の設定が正しく機能することを確認します:

sudo certbot renew --dry-run

問題なく動作することを確認したら、実際の更新を実行します:

sudo /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

注意点

  • 証明書や設定ファイルを削除する前に、重要なデータのバックアップを取ることをお勧めします。
  • 新しいドメインの証明書が正しく作成され、Nginxの設定で使用されていることを確認してください。
  • この操作を行うと、古いドメインの証明書は完全に削除されます。もし古いドメインもまだ使用している場合は、別途証明書を取得する必要があります。

以上の手順により、Certbotによる証明書の自動更新が新しいドメインに対して正しく機能するようになります。