😽

Let's Encrypt 証明書発行でつまずいたこと③

2025/01/28に公開

事象

今回もLet's Encryptの証明書更新エラーが起きた事象があったのでその事象を共有します。

使用環境

  • AWS
  • VPC
  • AWS EC2 (OSはUbuntu)
  • セキュリティグループでのIP制限

状況

  • Let's Encrypt証明書が更新できるかを確認するために更新前に"--dry run"オプションを付随させて、コマンド実行をしてみる。
certbot renew --dry-run
  • エラーが発生する。
Failed to renew certificate amex.stg.i-sma.com with error: Some challenges have failed.

解決策

  • AWSのセキュリティグループに80番ポートを開ければ、大丈夫です。Let's Encryptのドメインの所有権を確認するプロセスは80番ポート(HTTP)を使用して行われるからです。80番ポート(HTTP)を"0.0.0.0/0"で開ければ大丈夫です。(AWSのセキュリティグループの設定方法は多くの情報があると思いますので今回は割愛します)

まとめ

今回はAWSの事例をお出ししましたが、Azure(NSG)やGCP等も同様だと思いますので、Let's Encryptとサーバー間の接続ができるように80番ポートを開けておく必要があります。

その他

  • 443ポートは必ずしも開ける必要はありません。下記が理由となります。
    • 証明書発行の検証プロセス:Let's Encryptのドメインの所有権を確認します。このプロセスは80番ポート(HTTP)を使用して行われます。
    • .well-knownディレクトリへのアクセス:証明書の発行と更新時に、Let's Encryptは.well-knownディレクトリに特定のファイルを配置し、それにHTTPでアクセスして検証を行います。
    • HTTPSリダイレクト:多くの場合、80番ポートでのアクセスを443番ポート(HTTPS)にリダイレクトする設定が推奨されますが、これは証明書発行プロセス自体には必要ありません。
    • 証明書のインストール後の利用:443番ポートは、証明書が発行された後にHTTPS通信を行うために使用されます。証明書の発行プロセス自体には必要ありません。
ヘッドウォータース

Discussion