Let’s Encrypt が証明書の更新時に “Could not connect to example.com” とエラーを返す場合の対処

mahata.org は Let’s Encrypt で SSL 証明書を作成/更新している。

Cron に仕込んでいた SSL 証明書の更新スクリプトが “Could not connect to mahata.org” というエラーメッセージで失敗していたので、少し調べてみた。全体のエラーメッセージは次の通りだ:

Failed authorization procedure. www.mahata.org (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Could not connect to www.mahata.org, mahata.org (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Could not connect to mahata.org

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: www.mahata.org
   Type:   connection
   Detail: Could not connect to www.mahata.org

   Domain: mahata.org
   Type:   connection
   Detail: Could not connect to mahata.org

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

Let’s Encrypt の更新スクリプトは GitHub に上げてある。これを何もオプションをつけずに実行するだけだ (注意: スクリプト先頭の環境変数は僕の環境固有のもの)。

少し調べてみたところ、Let’s Encrypt の認証サーバが mahata.org ドメインのバリデーションをするとき、80 番と 443 番ポートのどちらでバリデートしてもらうか選択できるようであった。公式のドキュメントには次のように書かれている:

To obtain a cert using a “standalone” webserver, you can use the standalone plugin by including certonly and –standalone on the command line. This plugin needs to bind to port 80 or 443 in order to perform domain validation, so you may need to stop your existing webserver. To control which port the plugin uses, include one of the options shown below on the command line.

  • –preferred-challenges http to use port 80
  • –preferred-challenges tls-sni to use port 443

僕は --preferred-challenges を指定せず、手を抜いて 80 番ポートを公開することで問題を解決した。

Let’s Encrypt が証明書の更新時に “Could not connect to example.com” とエラーを返す場合の対処」への1件のフィードバック

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中