← RFC Reference

DANE — SMTP TLS用のDNSベース認証

Standards Track Transport Security Published March 2026
ELI5: ウェブサイトにアクセスすると、ブラウザは数百の認証局を信頼してサイトのアイデンティティを保証します。DANEを使うと、ドメイン所有者は仲介者を排除できます。「私のメールサーバーが使用する正確な証明書(またはCA)はこちらです。DNSSECで署名したDNSに公開しているので、自分で検証できます。」CA信頼は不要です。

このサイトが存在する理由

SMTP with STARTTLS には2つの根本的な問題があります:

  1. 認証がない。 送信サーバーが受信サーバーのTLS証明書が正当であることを確認する信頼できる方法がありません。SMTPはウェブのCA信頼モデルを使用していません — 歴史的に、ほとんどのメールサーバーは自己署名証明書を使用していたため、送信者は何でも受け入れるように学びました。
  2. ダウングレード攻撃。 アクティブなネットワーク攻撃者がEHLO応答からSTARTTLS広告を削除して、平文配信を強制できます。

MTA-STS (RFC 8461) はHTTPSとWeb PKIを使用してこれらの問題を解決します。DANEはDNSSECとTLSAレコードを使用してそれらを解決します。2つのアプローチは相補的です: DANEは暗号学的に強い (CA信頼が不要) 一方、MTA-STSはデプロイが簡単です (DNSSECは不要)。

動作方法

SMTP向けDANE (RFC 7672で定義され、RFC 6698のベースDANE仕様の上に構築) は3つのステップで動作します:

ステップ1: DNSSEC署名済みゾーン

受信ドメインのDNSゾーン — およびMXターゲットのゾーン — はDNSSECで署名されている必要があります。これは交渉の余地がありません。DNSSECなしでは、攻撃者がTLSAレコードを偽造でき、DANEが役に立たなくなるどころか悪化します。

ステップ2: TLSAレコードを公開

ドメインは各MXホストのSMTPポート用のTLSAレコードを公開します。TLSAレコードはTLS証明書 (またはその公開鍵、またはそのCA) を特定のサービスにバインドします。

; TLSAレコード形式: _port._protocol.hostname TLSA usage selector matching-type data _25._tcp.mail.example.com. IN TLSA 3 1 1 a]b2c3d4e5f6...sha256hash...

TLSAレコードフィールド

フィールド 説明
用途 0 — CA制約 (PKIX-TA)
1 — 証明書制約 (PKIX-EE)
2 — トラストアンカーアサーション (DANE-TA)
3 — ドメイン発行証明書 (DANE-EE)
検証に証明書データがどのように使用されるか。
セレクタ 0 — 完全な証明書
1 — SubjectPublicKeyInfo
マッチする証明書のどの部分。
マッチングタイプ 0 — 完全一致
1 — SHA-256
2 — SHA-512
データがどのように表現されるか。

ステップ3: 送信者が検証

DANE対応の送信サーバーが example.com にメールを配信する場合:

  1. example.com のMXレコードをDNSSEC検証で解決します。
  2. 各MXホスト (例: mail.example.com) に対して、DNSSEC検証で _25._tcp.mail.example.com TLSA を検索します。
  3. DNSSEC検証済みTLSAレコードが存在する場合: 接続し、STARTTLSを実行し、サーバー証明書をTLSAデータに対して検証します。
  4. 検証に失敗した場合: 配信しません。 メッセージは再試行のためキューに入ります。
  5. TLSAレコードが存在しない場合 (またはDNSSECがデプロイされていない場合): 前のように機会的TLSにフォールバックします。

主なテクニカルディテール

推奨TLSA設定

SMTPサーバーの場合、RFC 7672は DANE-EE(3) SPKI(1) SHA-256(1) を推奨しています:

_25._tcp.mail.example.com. IN TLSA 3 1 1 <sha256-of-public-key>

これは最も堅牢な選択です。理由:

TLSAレコードを生成

# サーバーの公開鍵のSHA-256ハッシュを抽出
openssl x509 -in server.crt -noout -pubkey | \
  openssl pkey -pubin -outform DER | \
  openssl dgst -sha256 -hex
(stdin)= 2a9f8e3b1c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f

# 生成されたTLSAレコード:
_25._tcp.mail.example.com. IN TLSA 3 1 1 2a9f8e3b1c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f

DANE vs. MTA-STS

DANE MTA-STS
信頼モデル DNSSEC (CAは不要) Web PKI (CA発行証明書)
DNSSECが必要 はい (必須) いいえ
自己署名証明書 サポート (用途3) 非サポート
初回使用セキュリティ 初回使用時から安全 初回使用を信頼 (TOFU)
デプロイメント障壁 DNSSEC (重大) HTTPSホスティング (低)
採用 オランダ、ドイツ、チェコで強い; その他の地域では限定的 広くサポート

一般的な間違い

配信可能性への影響

Related RFCs