DNS-01はワイルドカード証明書(*.example.com)に対応するACMEチャレンジタイプです。DNSにTXTレコードを追加することでドメインの所有権を証明します。Webサーバーやポート80のアクセスは不要です。
仕組み
- Let’s Encryptが各ドメインにトークンを提供
- GetHTTPSがキー認証のSHA-256ダイジェストを計算し、base64urlエンコード
_acme-challenge.yourdomain.comにこの値のTXTレコードを作成- Let’s EncryptがパブリックDNSでTXTレコードを照会
- 値が一致すれば、チャレンジに合格し証明書が発行
GetHTTPSでは、ステップ1〜2は自動です。レコード名と値をDNSプロバイダーにコピー&ペーストするだけです。
ステップバイステップの設定
ステップ1:GetHTTPSからTXTレコードの詳細を取得
GetHTTPSが表示するもの:
- レコード名:
_acme-challenge.yourdomain.com - レコード値: base64urlエンコードされた文字列(約43文字)
ステップ2:DNSプロバイダーでTXTレコードを追加
| フィールド | 値 |
|---|---|
| タイプ | TXT |
| 名前 | _acme-challenge(一部のプロバイダーはドメインを自動追加) |
| 値 | GetHTTPSに表示された文字列 — 正確にコピー&ペースト |
| TTL | 60秒(プロバイダーが許可する最小値) |
プロバイダー別手順:
Cloudflare
- ダッシュボード → ドメイン → DNS → レコード → レコードを追加
- タイプ:TXT、名前:
_acme-challenge、内容:値を貼り付け - TTL:Auto
- 保存をクリック
AWS Route 53
- ホストゾーン → ドメイン → レコードを作成
- レコード名:
_acme-challenge - レコードタイプ:TXT
- 値:
"paste-value-here"(二重引用符を含める — Route 53では必須) - レコードを作成をクリック
GoDaddy
- DNS管理 → 追加
- タイプ:TXT、名前:
_acme-challenge、値:値を貼り付け - TTL:1 Hour
- 保存をクリック
Namecheap
- ドメインリスト → 管理 → 高度なDNS → 新しいレコードを追加
- タイプ:TXT、ホスト:
_acme-challenge、値:値を貼り付け - TTL:Automatic
- すべての変更を保存をクリック
ステップ3:DNS伝播を待つ
DNS変更はプロバイダーとTTL設定により1〜15分かかります。GetHTTPSの事前チェックがLet’s Encryptに送信する前にTXTレコードが公開インターネットから見えることを確認します。
手動で伝播を確認:
dig TXT _acme-challenge.yourdomain.com +short
ステップ4:GetHTTPSで検証
検証をクリックします。GetHTTPSがLet’s Encryptにチャレンジを送信します。TXTレコードが正しければ、証明書が発行されます。
ステップ5:クリーンアップ
証明書が発行されたら、DNSから**_acme-challenge TXTレコードを削除**してください。不要になっており、古いレコードは更新時に混乱を招く可能性があります。
DNS-01でのワイルドカード証明書
*.yourdomain.com の証明書を取得するには、DNS-01を使用しなければなりません。HTTP-01はワイルドカードを検証できません。ワイルドカードは無限のホスト名をカバーするため、ファイルを配置する単一のサーバーがないためです。
DNS-01 vs HTTP-01
| DNS-01 | HTTP-01 | |
|---|---|---|
| 操作内容 | DNSにTXTレコードを追加 | サーバーにファイルを配置 |
| 必要なアクセス | ドメインのDNS設定 | Webサーバーのファイルシステム |
| ポート要件 | なし | ポート80が開いている必要 |
| ワイルドカード対応 | ✅ ワイルドカードに必須 | ❌ |
| サーバーなしで動作 | ✅ | ❌ |
| 速度 | 1〜15分(DNS伝播) | 即時(ファイルがアクセス可能なら) |
| CDN背後で動作 | ✅ 常に | ⚠️ CDNバイパスが必要な場合あり |
よくある質問
DNS-01チャレンジを自動化できますか?
はい、CLIツールで。acme.shは150以上のDNSプロバイダーのAPI統合が組み込まれており、TXTレコードの追加と削除を自動化できます。GetHTTPSは手動でのDNS変更が必要です(ブラウザベースのため、APIコールは行いません)。
TXTレコードをどのくらい保持する必要がありますか?
検証中のみです(通常数分)。証明書が発行されたらレコードを削除してください。更新時に新しい値で新しいレコードを作成します。
DNS-01はCloudflareプロキシ(オレンジクラウド)で動作しますか?
はい。DNS-01検証はHTTPではなくDNS経由でTXTレコードを照会するため、Cloudflareのプロキシ状態(オレンジ vs グレークラウド)は関係ありません。これはHTTP-01(プロキシによりブロックされる可能性がある)に対する主要な利点です。