Let's Encrypt のチャレンジ方式
このページは、Let's Encrypt のチャレンジ方式 (HTTP-01, DNS-01) についてまとめる予定のページです。
HTTP-01 チャレンジ
HTTP-01 チャレンジは、あるドメインの SSL 証明書をリクエストしたユーザー (Web サーバー) がそのドメインに対する権限を有しているかを HTTP (80 番ポート) 通信経由で確認・認証する方式です。
Web サーバー上に認証用のファイルを生成し、Let's Encrypt 側からそのファイルに HTTP アクセスすることで認証を行います。
おおまかな動作イメージ

補足
- 例えば
certbot-auto
コマンドでドキュメントルートでないサブディレクトリなどのディレクトリを--webroot -w
で指定した場合、チャレンジは失敗します。
DNS-01 チャレンジ
DNS-01 チャレンジは、あるドメインの SSL 証明書をリクエストしたユーザーがそのドメインに対する権限を有しているかを DNS サーバー (権威 DNS サーバー) 上で確認・認証する方式です。
DNS サーバー上に認証用の TXT レコードを生成し、Let's Encrypt 側からその TXT レコードを読み取ることで認証を行います。(TXT レコードは手動で設定するか、自動化したスクリプトなどで設定します)
おおまかな動作イメージ

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