Let's Encrypt のチャレンジ方式

このページは、Let's Encrypt のチャレンジ方式 (HTTP-01, DNS-01) についてまとめる予定のページです。

HTTP-01 チャレンジ

HTTP-01 チャレンジは、あるドメインの SSL 証明書をリクエストしたユーザー (Web サーバー) がそのドメインに対する権限を有しているかを HTTP (80 番ポート) 通信経由で確認・認証する方式です。

Web サーバー上に認証用のファイルを生成し、Let's Encrypt 側からそのファイルに HTTP アクセスすることで認証を行います。

おおまかな動作イメージ

HTTP-01 のおおまかな動作イメージ

補足

  • 例えば certbot-auto コマンドでドキュメントルートでないサブディレクトリなどのディレクトリを --webroot -w で指定した場合、チャレンジは失敗します。

DNS-01 チャレンジ

DNS-01 チャレンジは、あるドメインの SSL 証明書をリクエストしたユーザーがそのドメインに対する権限を有しているかを DNS サーバー (権威 DNS サーバー) 上で確認・認証する方式です。

DNS サーバー上に認証用の TXT レコードを生成し、Let's Encrypt 側からその TXT レコードを読み取ることで認証を行います。(TXT レコードは手動で設定するか、自動化したスクリプトなどで設定します)

おおまかな動作イメージ

DNS-01 のおおまかな動作イメージ

補足

  • TXT レコードを自動で設定する仕組みが無いと DNS-01 の利便性は低くなります。
    (3か月ごとの証明書更新のたびに手動で TXT レコードの設定が必要になるため)
  • 権威 DNS サーバー (ドメインのプライマリー DNS サーバーとして指定されている DNS サーバー) のレコード編集権限がない場合、そもそも DNS-01 チャレンジは使用できません。

参考