7 Internet Engineering Task Force (IETF) P. Hoffman
8 Request for Comments: 6698 VPN Consortium
9 Category: Standards Track J. Schlyter
10 ISSN: 2070-1721 Kirei AB
14 The DNS-Based Authentication of Named Entities (DANE)
15 Transport Layer Security (TLS) Protocol: TLSA
19 Encrypted communication on the Internet often uses Transport Layer
20 Security (TLS), which depends on third parties to certify the keys
21 used. This document improves on that situation by enabling the
22 administrators of domain names to specify the keys used in that
23 domain's TLS servers. This requires matching improvements in TLS
24 client software, but no change in TLS server software.
28 This is an Internet Standards Track document.
30 This document is a product of the Internet Engineering Task Force
31 (IETF). It represents the consensus of the IETF community. It has
32 received public review and has been approved for publication by the
33 Internet Engineering Steering Group (IESG). Further information on
34 Internet Standards is available in Section 2 of RFC 5741.
36 Information about the current status of this document, any errata,
37 and how to provide feedback on it may be obtained at
38 http://www.rfc-editor.org/info/rfc6698.
42 Copyright (c) 2012 IETF Trust and the persons identified as the
43 document authors. All rights reserved.
45 This document is subject to BCP 78 and the IETF Trust's Legal
46 Provisions Relating to IETF Documents
47 (http://trustee.ietf.org/license-info) in effect on the date of
48 publication of this document. Please review these documents
49 carefully, as they describe your rights and restrictions with respect
50 to this document. Code Components extracted from this document must
51 include Simplified BSD License text as described in Section 4.e of
52 the Trust Legal Provisions and are provided without warranty as
53 described in the Simplified BSD License.
58 Hoffman & Schlyter Standards Track [Page 1]
60 RFC 6698 DNS-Based Authentication for TLS August 2012
65 1. Introduction ....................................................3
66 1.1. Background and Motivation ..................................3
67 1.2. Securing the Association of a Domain Name with a
68 Server's Certificate .......................................4
69 1.3. Method for Securing Certificate Associations ...............5
70 1.4. Terminology ................................................6
71 2. The TLSA Resource Record ........................................7
72 2.1. TLSA RDATA Wire Format .....................................7
73 2.1.1. The Certificate Usage Field .........................7
74 2.1.2. The Selector Field ..................................8
75 2.1.3. The Matching Type Field .............................9
76 2.1.4. The Certificate Association Data Field ..............9
77 2.2. TLSA RR Presentation Format ................................9
78 2.3. TLSA RR Examples ..........................................10
79 3. Domain Names for TLSA Certificate Associations .................10
80 4. Use of TLSA Records in TLS .....................................11
81 4.1. Usable Certificate Associations ...........................11
82 5. TLSA and DANE Use Cases and Requirements .......................13
83 6. Mandatory-to-Implement Features ................................15
84 7. IANA Considerations ............................................15
85 7.1. TLSA RRtype ...............................................15
86 7.2. TLSA Certificate Usages ...................................15
87 7.3. TLSA Selectors ............................................16
88 7.4. TLSA Matching Types .......................................16
89 8. Security Considerations ........................................16
90 8.1. Comparing DANE to Public CAs ..............................18
91 8.1.1. Risk of Key Compromise .............................19
92 8.1.2. Impact of Key Compromise ...........................20
93 8.1.3. Detection of Key Compromise ........................20
94 8.1.4. Spoofing Hostnames .................................20
95 8.2. DNS Caching ...............................................21
96 8.3. External DNSSEC Validators ................................21
97 9. Acknowledgements ...............................................22
98 10. References ....................................................22
99 10.1. Normative References .....................................22
100 10.2. Informative References ...................................23
101 Appendix A. Operational Considerations for Deploying TLSA
102 Records ...............................................25
103 A.1. Creating TLSA Records ......................................25
104 A.1.1. Ambiguities and Corner Cases When TLS Clients
105 Build Trust Chains .....................................26
106 A.1.2. Choosing a Selector Type ...............................26
107 A.2. Provisioning TLSA Records in DNS ...........................28
108 A.2.1. Provisioning TLSA Records with Aliases .................28
109 A.3. Securing the Last Hop ......................................30
110 A.4. Handling Certificate Rollover ..............................31
114 Hoffman & Schlyter Standards Track [Page 2]
116 RFC 6698 DNS-Based Authentication for TLS August 2012
119 Appendix B. Pseudocode for Using TLSA .............................32
120 B.1. Helper Functions ...........................................32
121 B.2. Main TLSA Pseudocode .......................................33
122 Appendix C. Examples ..............................................35
126 1.1. Background and Motivation
128 Applications that communicate over the Internet often need to prevent
129 eavesdropping, tampering, or forgery of their communications. The
130 Transport Layer Security (TLS) protocol provides this kind of
131 communications security over the Internet, using channel encryption.
133 The security properties of encryption systems depend strongly on the
134 keys that they use. If secret keys are revealed, or if public keys
135 can be replaced by fake keys (that is, a key not corresponding to the
136 entity identified in the certificate), these systems provide little
139 TLS uses certificates to bind keys and names. A certificate combines
140 a published key with other information such as the name of the
141 service that uses the key, and this combination is digitally signed
142 by another key. Having a key in a certificate is only helpful if one
143 trusts the other key that signed the certificate. If that other key
144 was itself revealed or substituted, then its signature is worthless
145 in proving anything about the first key.
147 On the Internet, this problem has been solved for years by entities
148 called "Certification Authorities" (CAs). CAs protect their secret
149 key vigorously, while supplying their public key to the software
150 vendors who build TLS clients. They then sign certificates, and
151 supply those to TLS servers. TLS client software uses a set of these
152 CA keys as "trust anchors" to validate the signatures on certificates
153 that the client receives from TLS servers. Client software typically
154 allows any CA to usefully sign any other certificate.
156 The public CA model upon which TLS has depended is fundamentally
157 vulnerable because it allows any of these CAs to issue a certificate
158 for any domain name. A single trusted CA that betrays its trust,
159 either voluntarily or by providing less-than-vigorous protection for
160 its secrets and capabilities, can undermine the security offered by
161 any certificates employed with TLS. This problem arises because a
162 compromised CA can issue a replacement certificate that contains a
163 fake key. Recent experiences with compromises of CAs or their
164 trusted partners have led to very serious security problems, such as
165 the governments of multiple countries attempting to wiretap and/or
166 subvert major TLS-protected web sites trusted by millions of users.
170 Hoffman & Schlyter Standards Track [Page 3]
172 RFC 6698 DNS-Based Authentication for TLS August 2012
175 The DNS Security Extensions (DNSSEC) provide a similar model that
176 involves trusted keys signing the information for untrusted keys.
177 However, DNSSEC provides three significant improvements. Keys are
178 tied to names in the Domain Name System (DNS), rather than to
179 arbitrary identifying strings; this is more convenient for Internet
180 protocols. Signed keys for any domain are accessible online through
181 a straightforward query using the standard DNSSEC protocol, so there
182 is no problem distributing the signed keys. Most significantly, the
183 keys associated with a domain name can only be signed by a key
184 associated with the parent of that domain name; for example, the keys
185 for "example.com" can only be signed by the keys for "com", and the
186 keys for "com" can only be signed by the DNS root. This prevents an
187 untrustworthy signer from compromising anyone's keys except those in
188 their own subdomains. Like TLS, DNSSEC relies on public keys that
189 come built into the DNSSEC client software, but these keys come only
190 from a single root domain rather than from a multiplicity of CAs.
192 DNS-Based Authentication of Named Entities (DANE) offers the option
193 to use the DNSSEC infrastructure to store and sign keys and
194 certificates that are used by TLS. DANE is envisioned as a
195 preferable basis for binding public keys to DNS names, because the
196 entities that vouch for the binding of public key data to DNS names
197 are the same entities responsible for managing the DNS names in
198 question. While the resulting system still has residual security
199 vulnerabilities, it restricts the scope of assertions that can be
200 made by any entity, consistent with the naming scope imposed by the
201 DNS hierarchy. As a result, DANE embodies the security "principle of
202 least privilege" that is lacking in the current public CA model.
204 1.2. Securing the Association of a Domain Name with a Server's
207 A TLS client begins a connection by exchanging messages with a TLS
208 server. For many application protocols, it looks up the server's
209 name using the DNS to get an Internet Protocol (IP) address
210 associated with the name. It then begins a connection to a
211 particular port at that address, and sends an initial message there.
212 However, the client does not yet know whether an adversary is
213 intercepting and/or altering its communication before it reaches the
214 TLS server. It does not even know whether the real TLS server
215 associated with that domain name has ever received its initial
218 The first response from the server in TLS may contain a certificate.
219 In order for the TLS client to authenticate that it is talking to the
220 expected TLS server, the client must validate that this certificate
221 is associated with the domain name used by the client to get to the
222 server. Currently, the client must extract the domain name from the
226 Hoffman & Schlyter Standards Track [Page 4]
228 RFC 6698 DNS-Based Authentication for TLS August 2012
231 certificate and must successfully validate the certificate, including
232 chaining to a trust anchor.
234 There is a different way to authenticate the association of the
235 server's certificate with the intended domain name without trusting
236 an external CA. Given that the DNS administrator for a domain name
237 is authorized to give identifying information about the zone, it
238 makes sense to allow that administrator to also make an authoritative
239 binding between the domain name and a certificate that might be used
240 by a host at that domain name. The easiest way to do this is to use
241 the DNS, securing the binding with DNSSEC.
243 There are many use cases for such functionality. [RFC6394] lists the
244 ones to which the DNS RRtype in this document apply. [RFC6394] also
245 lists many requirements, most of which this document is believed to
246 meet. Section 5 covers the applicability of this document to the use
247 cases in detail. The protocol in this document can generally be
248 referred to as the "DANE TLSA" protocol. ("TLSA" does not stand for
249 anything; it is just the name of the RRtype.)
251 This document applies to both TLS [RFC5246] and Datagram TLS (DTLS)
252 [RFC6347]. In order to make the document more readable, it mostly
253 only talks about "TLS", but in all cases, it means "TLS or DTLS".
254 Although the references in this paragraph are to TLS and DTLS
255 version 1.2, the DANE TLSA protocol can also be used with earlier
256 versions of TLS and DTLS.
258 This document only relates to securely associating certificates for
259 TLS and DTLS with host names; retrieving certificates from DNS for
260 other protocols is handled in other documents. For example, keys for
261 IPsec are covered in [RFC4025], and keys for Secure SHell (SSH) are
262 covered in [RFC4255].
264 1.3. Method for Securing Certificate Associations
266 A certificate association is formed from a piece of information
267 identifying a certificate and the domain name where the server
268 application runs. The combination of a trust anchor and a domain
269 name can also be a certificate association.
271 A DNS query can return multiple certificate associations, such as in
272 the case of a server that is changing from one certificate to another
273 (described in more detail in Appendix A.4).
275 This document only applies to PKIX [RFC5280] certificates, not
276 certificates of other formats.
282 Hoffman & Schlyter Standards Track [Page 5]
284 RFC 6698 DNS-Based Authentication for TLS August 2012
287 This document defines a secure method to associate the certificate
288 that is obtained from the TLS server with a domain name using DNS;
289 the DNS information needs to be protected by DNSSEC. Because the
290 certificate association was retrieved based on a DNS query, the
291 domain name in the query is by definition associated with the
292 certificate. Note that this document does not cover how to associate
293 certificates with domain names for application protocols that depend
294 on SRV, NAPTR, and similar DNS resource records. It is expected that
295 future documents will cover methods for making those associations,
296 and those documents may or may not need to update this one.
298 DNSSEC, which is defined in [RFC4033], [RFC4034], and [RFC4035], uses
299 cryptographic keys and digital signatures to provide authentication
300 of DNS data. Information that is retrieved from the DNS and that is
301 validated using DNSSEC is thereby proved to be the authoritative
302 data. The DNSSEC signature needs to be validated on all responses
303 that use DNSSEC in order to assure the proof of origin of the data.
305 This document does not specify how DNSSEC validation occurs because
306 there are many different proposals for how a client might get
307 validated DNSSEC results, such as from a DNSSEC-aware resolver that
308 is coded in the application, from a trusted DNSSEC resolver on the
309 machine on which the application is running, or from a trusted DNSSEC
310 resolver with which the application is communicating over an
311 authenticated and integrity-protected channel or network. This is
312 described in more detail in Section 7 of [RFC4033].
314 This document only relates to getting the DNS information for the
315 certificate association securely using DNSSEC; other secure DNS
316 mechanisms are out of scope.
320 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
321 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
322 document are to be interpreted as described in RFC 2119 [RFC2119].
324 This document also makes use of standard PKIX, DNSSEC, TLS, and DNS
325 terminology. See [RFC5280], [RFC4033], [RFC5246], and STD 13
326 [RFC1034] [RFC1035], respectively, for these terms. In addition,
327 terms related to TLS-protected application services and DNS names are
328 taken from [RFC6125].
338 Hoffman & Schlyter Standards Track [Page 6]
340 RFC 6698 DNS-Based Authentication for TLS August 2012
343 2. The TLSA Resource Record
345 The TLSA DNS resource record (RR) is used to associate a TLS server
346 certificate or public key with the domain name where the record is
347 found, thus forming a "TLSA certificate association". The semantics
348 of how the TLSA RR is interpreted are given later in this document.
350 The type value for the TLSA RR type is defined in Section 7.1.
352 The TLSA RR is class independent.
354 The TLSA RR has no special Time to Live (TTL) requirements.
356 2.1. TLSA RDATA Wire Format
358 The RDATA for a TLSA RR consists of a one-octet certificate usage
359 field, a one-octet selector field, a one-octet matching type field,
360 and the certificate association data field.
362 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
363 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
364 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
365 | Cert. Usage | Selector | Matching Type | /
366 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ /
368 / Certificate Association Data /
370 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
372 2.1.1. The Certificate Usage Field
374 A one-octet value, called "certificate usage", specifies the provided
375 association that will be used to match the certificate presented in
376 the TLS handshake. This value is defined in a new IANA registry (see
377 Section 7.2) in order to make it easier to add additional certificate
378 usages in the future. The certificate usages defined in this
381 0 -- Certificate usage 0 is used to specify a CA certificate, or
382 the public key of such a certificate, that MUST be found in any of
383 the PKIX certification paths for the end entity certificate given
384 by the server in TLS. This certificate usage is sometimes
385 referred to as "CA constraint" because it limits which CA can be
386 used to issue certificates for a given service on a host. The
387 presented certificate MUST pass PKIX certification path
388 validation, and a CA certificate that matches the TLSA record MUST
389 be included as part of a valid certification path. Because this
390 certificate usage allows both trust anchors and CA certificates,
394 Hoffman & Schlyter Standards Track [Page 7]
396 RFC 6698 DNS-Based Authentication for TLS August 2012
399 the certificate might or might not have the basicConstraints
402 1 -- Certificate usage 1 is used to specify an end entity
403 certificate, or the public key of such a certificate, that MUST be
404 matched with the end entity certificate given by the server in
405 TLS. This certificate usage is sometimes referred to as "service
406 certificate constraint" because it limits which end entity
407 certificate can be used by a given service on a host. The target
408 certificate MUST pass PKIX certification path validation and MUST
409 match the TLSA record.
411 2 -- Certificate usage 2 is used to specify a certificate, or the
412 public key of such a certificate, that MUST be used as the trust
413 anchor when validating the end entity certificate given by the
414 server in TLS. This certificate usage is sometimes referred to as
415 "trust anchor assertion" and allows a domain name administrator to
416 specify a new trust anchor -- for example, if the domain issues
417 its own certificates under its own CA that is not expected to be
418 in the end users' collection of trust anchors. The target
419 certificate MUST pass PKIX certification path validation, with any
420 certificate matching the TLSA record considered to be a trust
421 anchor for this certification path validation.
423 3 -- Certificate usage 3 is used to specify a certificate, or the
424 public key of such a certificate, that MUST match the end entity
425 certificate given by the server in TLS. This certificate usage is
426 sometimes referred to as "domain-issued certificate" because it
427 allows for a domain name administrator to issue certificates for a
428 domain without involving a third-party CA. The target certificate
429 MUST match the TLSA record. The difference between certificate
430 usage 1 and certificate usage 3 is that certificate usage 1
431 requires that the certificate pass PKIX validation, but PKIX
432 validation is not tested for certificate usage 3.
434 The certificate usages defined in this document explicitly only apply
435 to PKIX-formatted certificates in DER encoding [X.690]. If TLS
436 allows other formats later, or if extensions to this RRtype are made
437 that accept other formats for certificates, those certificates will
438 need their own certificate usage values.
440 2.1.2. The Selector Field
442 A one-octet value, called "selector", specifies which part of the TLS
443 certificate presented by the server will be matched against the
444 association data. This value is defined in a new IANA registry (see
445 Section 7.3). The selectors defined in this document are:
450 Hoffman & Schlyter Standards Track [Page 8]
452 RFC 6698 DNS-Based Authentication for TLS August 2012
455 0 -- Full certificate: the Certificate binary structure as defined
458 1 -- SubjectPublicKeyInfo: DER-encoded binary structure as defined
461 (Note that the use of "selector" in this document is completely
462 unrelated to the use of "selector" in DomainKeys Identified Mail
465 2.1.3. The Matching Type Field
467 A one-octet value, called "matching type", specifies how the
468 certificate association is presented. This value is defined in a new
469 IANA registry (see Section 7.4). The types defined in this document
472 0 -- Exact match on selected content
474 1 -- SHA-256 hash of selected content [RFC6234]
476 2 -- SHA-512 hash of selected content [RFC6234]
478 If the TLSA record's matching type is a hash, having the record use
479 the same hash algorithm that was used in the signature in the
480 certificate (if possible) will assist clients that support a small
481 number of hash algorithms.
483 2.1.4. The Certificate Association Data Field
485 This field specifies the "certificate association data" to be
486 matched. These bytes are either raw data (that is, the full
487 certificate or its SubjectPublicKeyInfo, depending on the selector)
488 for matching type 0, or the hash of the raw data for matching types 1
489 and 2. The data refers to the certificate in the association, not to
490 the TLS ASN.1 Certificate object.
492 2.2. TLSA RR Presentation Format
494 The presentation format of the RDATA portion (as defined in
495 [RFC1035]) is as follows:
497 o The certificate usage field MUST be represented as an 8-bit
500 o The selector field MUST be represented as an 8-bit unsigned
506 Hoffman & Schlyter Standards Track [Page 9]
508 RFC 6698 DNS-Based Authentication for TLS August 2012
511 o The matching type field MUST be represented as an 8-bit unsigned
514 o The certificate association data field MUST be represented as a
515 string of hexadecimal characters. Whitespace is allowed within
516 the string of hexadecimal characters, as described in [RFC1035].
518 2.3. TLSA RR Examples
520 In the following examples, the domain name is formed using the rules
523 An example of a hashed (SHA-256) association of a PKIX CA
526 _443._tcp.www.example.com. IN TLSA (
527 0 0 1 d2abde240d7cd3ee6b4b28c54df034b9
528 7983a1d16e8a410e4561cb106618e971 )
530 An example of a hashed (SHA-512) subject public key association of a
531 PKIX end entity certificate:
533 _443._tcp.www.example.com. IN TLSA (
534 1 1 2 92003ba34942dc74152e2f2c408d29ec
535 a5a520e7f2e06bb944f4dca346baf63c
536 1b177615d466f6c4b71c216a50292bd5
537 8c9ebdd2f74e38fe51ffd48c43326cbc )
539 An example of a full certificate association of a PKIX end entity
542 _443._tcp.www.example.com. IN TLSA (
543 3 0 0 30820307308201efa003020102020... )
545 3. Domain Names for TLSA Certificate Associations
547 Unless there is a protocol-specific specification that is different
548 than this one, TLSA resource records are stored at a prefixed DNS
549 domain name. The prefix is prepared in the following manner:
551 1. The decimal representation of the port number on which a TLS-
552 based service is assumed to exist is prepended with an underscore
553 character ("_") to become the left-most label in the prepared
554 domain name. This number has no leading zeros.
562 Hoffman & Schlyter Standards Track [Page 10]
564 RFC 6698 DNS-Based Authentication for TLS August 2012
567 2. The protocol name of the transport on which a TLS-based service
568 is assumed to exist is prepended with an underscore character
569 ("_") to become the second left-most label in the prepared domain
570 name. The transport names defined for this protocol are "tcp",
573 3. The base domain name is appended to the result of step 2 to
574 complete the prepared domain name. The base domain name is the
575 fully qualified DNS domain name [RFC1035] of the TLS server, with
576 the additional restriction that every label MUST meet the rules
577 of [RFC0952]. The latter restriction means that, if the query is
578 for an internationalized domain name, it MUST use the A-label
579 form as defined in [RFC5890].
581 For example, to request a TLSA resource record for an HTTP server
582 running TLS on port 443 at "www.example.com",
583 "_443._tcp.www.example.com" is used in the request. To request a
584 TLSA resource record for an SMTP server running the STARTTLS protocol
585 on port 25 at "mail.example.com", "_25._tcp.mail.example.com" is
588 4. Use of TLSA Records in TLS
590 Section 2.1 of this document defines the mandatory matching rules for
591 the data from the TLSA certificate associations and the certificates
592 received from the TLS server.
594 The TLS session that is to be set up MUST be for the specific port
595 number and transport name that was given in the TLSA query.
597 Some specifications for applications that run over TLS, such as
598 [RFC2818] for HTTP, require that the server's certificate have a
599 domain name that matches the host name expected by the client. Some
600 specifications, such as [RFC6125], detail how to match the identity
601 given in a PKIX certificate with those expected by the user.
603 If a TLSA record has certificate usage 2, the corresponding TLS
604 server SHOULD send the certificate that is referenced just like it
605 currently sends intermediate certificates.
607 4.1. Usable Certificate Associations
609 An implementation of this protocol makes a DNS query for TLSA
610 records, validates these records using DNSSEC, and uses the resulting
611 TLSA records and validation status to modify its responses to the TLS
618 Hoffman & Schlyter Standards Track [Page 11]
620 RFC 6698 DNS-Based Authentication for TLS August 2012
623 Determining whether a TLSA RRSet can be used MUST be based on the
624 DNSSEC validation state (as defined in [RFC4033]).
626 o A TLSA RRSet whose DNSSEC validation state is secure MUST be used
627 as a certificate association for TLS unless a local policy would
628 prohibit the use of the specific certificate association in the
631 o If the DNSSEC validation state on the response to the request for
632 the TLSA RRSet is bogus, this MUST cause TLS not to be started or,
633 if the TLS negotiation is already in progress, MUST cause the
634 connection to be aborted.
636 o A TLSA RRSet whose DNSSEC validation state is indeterminate or
637 insecure cannot be used for TLS and MUST be considered unusable.
639 Clients that validate the DNSSEC signatures themselves MUST use
640 standard DNSSEC validation procedures. Clients that rely on another
641 entity to perform the DNSSEC signature validation MUST use a secure
642 mechanism between themselves and the validator. Examples of secure
643 transports to other hosts include TSIG [RFC2845], SIG(0) [RFC2931],
644 and IPsec [RFC6071]. Note that it is not sufficient to use secure
645 transport to a DNS resolver that does not do DNSSEC signature
646 validation. See Section 8.3 for more security considerations related
647 to external validators.
649 If a certificate association contains a certificate usage, selector,
650 or matching type that is not understood by the TLS client, that
651 certificate association MUST be considered unusable. If the
652 comparison data for a certificate is malformed, the certificate
653 association MUST be considered unusable.
655 If a certificate association contains a matching type or certificate
656 association data that uses a cryptographic algorithm that is
657 considered too weak for the TLS client's policy, the certificate
658 association MUST be considered unusable.
660 If an application receives zero usable certificate associations from
661 a DNS request or from its cache, it processes TLS in the normal
662 fashion without any input from the TLSA records. If an application
663 receives one or more usable certificate associations, it attempts to
664 match each certificate association with the TLS server's end entity
665 certificate until a successful match is found. During the TLS
666 handshake, if none of the certificate associations matches the
667 certificate given by the TLS server, the TLS client MUST abort the
674 Hoffman & Schlyter Standards Track [Page 12]
676 RFC 6698 DNS-Based Authentication for TLS August 2012
679 An attacker who is able to divert a user to a server under his
680 control is also likely to be able to block DNS requests from the user
681 or DNS responses being sent to the user. Thus, in order to achieve
682 any security benefit from certificate usage 0 or 1, an application
683 that sends a request for TLSA records needs to get either a valid
684 signed response containing TLSA records or verification that the
685 domain is insecure or indeterminate. If a request for a TLSA record
686 does not meet one of those two criteria but the application continues
687 with the TLS handshake anyway, the application has gotten no benefit
688 from TLSA and SHOULD NOT make any internal or external indication
689 that TLSA was applied. If an application has a configuration setting
690 that has turned on TLSA use, or has any indication that TLSA is in
691 use (regardless of whether or not this is configurable), that
692 application either MUST NOT start a TLS connection or it MUST abort a
693 TLS handshake if both of the two criteria above are not met.
695 The application can perform the TLSA lookup before initiating the TLS
696 handshake, or do it during the TLS handshake: the choice is up to the
699 5. TLSA and DANE Use Cases and Requirements
701 The different types of certificate associations defined in TLSA are
702 matched with various sections of [RFC6394]. The use cases from
703 Section 3 of [RFC6394] are covered in this document as follows:
705 3.1 CA Constraints -- Implemented using certificate usage 0.
707 3.2 Certificate Constraints -- Implemented using certificate usage 1.
709 3.3 Trust Anchor Assertion and Domain-Issued Certificates --
710 Implemented using certificate usages 2 and 3, respectively.
712 The requirements from Section 4 of [RFC6394] are covered in this
715 Multiple Ports -- The TLSA records for different application services
716 running on a single host can be distinguished through the service
717 name and port number prefixed to the host name (see Section 3).
719 No Downgrade -- Section 4 specifies the conditions under which a
720 client can process and act upon TLSA records. Specifically, if
721 the DNSSEC status for the TLSA resource record set is determined
722 to be bogus, the TLS connection (if started) will fail.
724 Encapsulation -- Encapsulation is covered in the TLSA response
730 Hoffman & Schlyter Standards Track [Page 13]
732 RFC 6698 DNS-Based Authentication for TLS August 2012
735 Predictability -- The appendices of this specification provide
736 operational considerations and implementation guidance in order to
737 enable application developers to form a consistent interpretation
738 of the recommended client behavior.
740 Opportunistic Security -- If a client conformant to this
741 specification can reliably determine the presence of a TLSA
742 record, it will attempt to use this information. Conversely, if a
743 client can reliably determine the absence of any TLSA record, it
744 will fall back to processing TLS in the normal fashion. This is
745 discussed in Section 4.
747 Combination -- Multiple TLSA records can be published for a given
748 host name, thus enabling the client to construct multiple TLSA
749 certificate associations that reflect different assertions. No
750 support is provided to combine two TLSA certificate associations
751 in a single operation.
753 Roll-over -- TLSA records are processed in the normal manner within
754 the scope of the DNS protocol, including the TTL expiration of the
755 records. This ensures that clients will not latch onto assertions
756 made by expired TLSA records, and will be able to transition from
757 using one public key or certificate usage to another.
759 Simple Key Management -- The SubjectPublicKeyInfo selector in the
760 TLSA record provides a mode that enables a domain holder to only
761 have to maintain a single long-lived public/private key pair
762 without the need to manage certificates. Appendix A outlines the
763 usefulness and the potential downsides to using this mode.
765 Minimal Dependencies -- This specification relies on DNSSEC to
766 protect the origin authenticity and integrity of the TLSA resource
767 record set. Additionally, if DNSSEC validation is not performed
768 on the system that wishes to use TLSA certificate bindings, this
769 specification requires that the "last mile" be over a secure
770 transport. There are no other deployment dependencies for this
773 Minimal Options -- The operating modes map precisely to the DANE use
774 cases and requirements. DNSSEC use is mandatory in that this
775 specification encourages applications to use only those TLSA
776 records that are shown to be validated.
778 Wildcards -- Wildcards are covered in a limited manner in the TLSA
779 request syntax; see Appendix A.
781 Redirection -- Redirection is covered in the TLSA request syntax; see
786 Hoffman & Schlyter Standards Track [Page 14]
788 RFC 6698 DNS-Based Authentication for TLS August 2012
791 6. Mandatory-to-Implement Features
793 TLS clients conforming to this specification MUST be able to
794 correctly interpret TLSA records with certificate usages 0, 1, 2,
795 and 3. TLS clients conforming to this specification MUST be able to
796 compare a certificate association with a certificate from the TLS
797 handshake using selector types 0 and 1, and matching type 0 (no hash
798 used) and matching type 1 (SHA-256), and SHOULD be able to make such
799 comparisons with matching type 2 (SHA-512).
801 7. IANA Considerations
803 IANA has made the assignments in this section.
805 In the following sections, "RFC Required" was chosen for TLSA
806 certificate usages and "Specification Required" for selectors and
807 matching types because of the amount of detail that is likely to be
808 needed for implementers to correctly implement new certificate usages
809 as compared to new selectors and matching types.
813 This document uses a new DNS RR type, TLSA, whose value (52) was
814 allocated by IANA from the Resource Record (RR) TYPEs subregistry of
815 the Domain Name System (DNS) Parameters registry.
817 7.2. TLSA Certificate Usages
819 This document creates a new registry, "TLSA Certificate Usages". The
820 registry policy is "RFC Required". The initial entries in the
823 Value Short description Reference
824 ----------------------------------------------------------
825 0 CA constraint RFC 6698
826 1 Service certificate constraint RFC 6698
827 2 Trust anchor assertion RFC 6698
828 3 Domain-issued certificate RFC 6698
832 Applications to the registry can request specific values that have
842 Hoffman & Schlyter Standards Track [Page 15]
844 RFC 6698 DNS-Based Authentication for TLS August 2012
849 This document creates a new registry, "TLSA Selectors". The registry
850 policy is "Specification Required". The initial entries in the
853 Value Short description Reference
854 ----------------------------------------------------------
855 0 Full certificate RFC 6698
856 1 SubjectPublicKeyInfo RFC 6698
860 Applications to the registry can request specific values that have
863 7.4. TLSA Matching Types
865 This document creates a new registry, "TLSA Matching Types". The
866 registry policy is "Specification Required". The initial entries in
869 Value Short description Reference
870 ----------------------------------------------------------
871 0 No hash used RFC 6698
877 Applications to the registry can request specific values that have
880 8. Security Considerations
882 The security of the DNS RRtype described in this document relies on
883 the security of DNSSEC to verify that the TLSA record has not been
886 A rogue DNS administrator who changes the A, AAAA, and/or TLSA
887 records for a domain name can cause the client to go to an
888 unauthorized server that will appear authorized, unless the client
889 performs PKIX certification path validation and rejects the
890 certificate. That administrator could probably get a certificate
891 issued by some CA anyway, so this is not an additional threat.
898 Hoffman & Schlyter Standards Track [Page 16]
900 RFC 6698 DNS-Based Authentication for TLS August 2012
903 If the authentication mechanism for adding or changing TLSA data in a
904 zone is weaker than the authentication mechanism for changing the A
905 and/or AAAA records, a man-in-the-middle who can redirect traffic to
906 his site may be able to impersonate the attacked host in TLS if he
907 can use the weaker authentication mechanism. A better design for
908 authenticating DNS would be to have the same level of authentication
909 used for all DNS additions and changes for a particular domain name.
911 Secure Socket Layer (SSL) proxies can sometimes act as a man-in-the-
912 middle for TLS clients. In these scenarios, the clients add a new
913 trust anchor whose private key is kept on the SSL proxy; the proxy
914 intercepts TLS requests, creates a new TLS session with the intended
915 host, and sets up a TLS session with the client using a certificate
916 that chains to the trust anchor installed in the client by the proxy.
917 In such environments, using TLSA records will prevent the SSL proxy
918 from functioning as expected because the TLS client will get a
919 certificate association from the DNS that will not match the
920 certificate that the SSL proxy uses with the client. The client,
921 seeing the proxy's new certificate for the supposed destination, will
922 not set up a TLS session.
924 Client treatment of any information included in the trust anchor is a
925 matter of local policy. This specification does not mandate that
926 such information be inspected or validated by the server's domain
929 If a server's certificate is revoked, or if an intermediate CA in a
930 chain between the server and a trust anchor has its certificate
931 revoked, a TLSA record with a certificate usage of 2 that matches the
932 revoked certificate would in essence override the revocation because
933 the client would treat that revoked certificate as a trust anchor and
934 thus not check its revocation status. Because of this, domain
935 administrators need to be responsible for being sure that the keys or
936 certificates used in TLSA records with a certificate usage of 2 are
937 in fact able to be used as reliable trust anchors.
939 Certificates that are delivered in TLSA with certificate usage 2
940 fundamentally change the way the TLS server's end entity certificate
941 is evaluated. For example, the server's certificate might chain to
942 an existing CA through an intermediate CA that has certain policy
943 restrictions, and the certificate would not pass those restrictions
944 and thus normally be rejected. That intermediate CA could issue
945 itself a new certificate without the policy restrictions and tell its
946 customers to use that certificate with certificate usage 2. This in
947 essence allows an intermediate CA to become a trust anchor for
948 certificates that the end user might have expected to chain to an
949 existing trust anchor.
954 Hoffman & Schlyter Standards Track [Page 17]
956 RFC 6698 DNS-Based Authentication for TLS August 2012
959 If an administrator wishes to stop using a TLSA record, the
960 administrator can simply remove it from the DNS. Normal clients will
961 stop using the TLSA record after the TTL has expired. Replay attacks
962 against the TLSA record are not possible after the expiration date on
963 the RRsig of the TLSA record that was removed.
965 Generators of TLSA records should be aware that the client's full
966 trust of a certificate association retrieved from a TLSA record may
967 be a matter of local policy. While such trust is limited to the
968 specific domain name, protocol, and port for which the TLSA query was
969 made, local policy may decline to accept the certificate (for reasons
970 such as weak cryptography), as is also the case with PKIX trust
973 8.1. Comparing DANE to Public CAs
975 As stated above, the security of the DNS RRtype described in this
976 document relies on the security of DNSSEC to verify that the TLSA
977 record has not been altered. This section describes where the
978 security of public CAs and the security of TLSA are similar and
979 different. This section applies equally to other security-related
980 DNS RRtypes such as keys for IPsec and SSH.
982 DNSSEC forms certificates (the binding of an identity to a key) by
983 combining a DNSKEY, DS, or DLV resource record with an associated
984 RRSIG record. These records then form a signing chain extending from
985 the client's trust anchors to the RR of interest.
987 Although the DNSSEC protocol does not enforce it, DNSKEYs are often
988 marked with a SEP flag indicating whether the key is a Zone Signing
989 Key (ZSK) or a Key Signing Key (KSK). ZSKs protect records in the
990 zone (including DS and DLV records), and KSKs protect ZSK DNSKEY
991 records. This allows KSKs to be stored offline.
993 The TLSA RRtype allows keys from the DNSSEC PKI hierarchy to
994 authenticate keys wrapped in PKIX certificates for a particular host
995 name, protocol, and port.
997 With the exception of the DLV RRtype, all of these certificates
998 constrain the keys they identify to names that are within the zone
999 signing the certificate. In order for a domain's DLV resource
1000 records to be honored, the domain must be configured as a DLV domain,
1001 and the domain's DNSKEYs must be configured as trust anchors or be
1002 authentic [RFC5074].
1010 Hoffman & Schlyter Standards Track [Page 18]
1012 RFC 6698 DNS-Based Authentication for TLS August 2012
1015 8.1.1. Risk of Key Compromise
1017 The risk that a given certificate that has a valid signing chain is
1018 fake is related to the number of keys that can contribute to the
1019 validation of the certificate, the quality of protection each private
1020 key receives, the value of each key to an attacker, and the value of
1021 falsifying the certificate.
1023 DNSSEC allows any set of domains to be configured as trust anchors
1024 and/or DLVs, but most clients are likely to use the root zone as
1025 their only trust anchor. Also, because a given DNSKEY can only sign
1026 resource records for that zone, the number of private keys capable of
1027 compromising a given TLSA resource record is limited to the number of
1028 zones between the TLSA resource record and the nearest trust anchor,
1029 plus any configured DLV domains. Typically, this will be six keys,
1030 half of which will be KSKs.
1032 PKIX only describes how to validate a certificate based on a client-
1033 chosen set of trust anchors, but says nothing about how many trust
1034 anchors to use or how they should be constrained. As currently
1035 deployed, most PKIX clients use a large number of trust anchors
1036 provided with the client or operating system software. These trust
1037 anchors are selected carefully, but with a desire for broad
1038 interoperability. The trust anchors and CA certificates for public
1039 CAs rarely have name constraints applied.
1041 A combination of technical protections, process controls, and
1042 personnel experience contribute to the quality of security that keys
1045 o The security surrounding DNSSEC DNSKEYs varies significantly. The
1046 KSK/ZSK split allows the KSK to be stored offline and protected
1047 more carefully than the ZSK, but not all domains do so. The
1048 security applied to a zone's DNSKEYs should be proportional to the
1049 value of the domain, but that is difficult to estimate. For
1050 example, the root DNSKEY has protections and controls comparable
1051 to or exceeding those of public CAs. On the other end of the
1052 spectrum, small domains might provide no more protection to their
1053 keys than they do to their other data.
1055 o The security surrounding public CAs also varies. However, due to
1056 financial incentives and standards imposed by clients for
1057 acceptance into their trust anchor stores, CAs generally employ
1058 security experts and protect their keys carefully, though highly
1059 public compromises have occurred.
1066 Hoffman & Schlyter Standards Track [Page 19]
1068 RFC 6698 DNS-Based Authentication for TLS August 2012
1071 8.1.2. Impact of Key Compromise
1073 The impact of a key compromise differs significantly between the two
1076 o DNSKEYs are inherently limited in what they can sign, so a
1077 compromise of the DNSKEY for "example.com" provides no avenue of
1078 attack against "example.org". Even the impact of a compromise of
1079 .com's DNSKEY, while considerable, would be limited to .com
1080 domains. Only the compromise of the root DNSKEY would have the
1081 equivalent impact of an unconstrained public CA.
1083 o Public CAs are not typically constrained in what names they can
1084 sign, and therefore a compromise of even one CA allows the
1085 attacker to generate a certificate for any name in the DNS. A
1086 domain holder can get a certificate from any willing CA, or even
1087 multiple CAs simultaneously, making it impossible for a client to
1088 determine whether the certificate it is validating is legitimate
1091 Because a TLSA certificate association is constrained to its
1092 associated name, protocol, and port, the PKIX certificate is
1093 similarly constrained, even if its public CAs signing the certificate
1096 8.1.3. Detection of Key Compromise
1098 If a key is compromised, rapid and reliable detection is important in
1099 order to limit the impact of the compromise. In this regard, neither
1100 model prevents an attacker from near-invisibly attacking their
1101 victim, provided that the necessary keys are compromised.
1103 If a public CA is compromised, only the victim will see the
1104 fraudulent certificate, as there is typically no publicly accessible
1105 directory of all the certificates issued by a CA that can be
1106 inspected. DNS resource records are typically published publicly.
1107 However, the attacker could also allow the uncompromised records to
1108 be published to the Internet as usual but provide a compromised DNS
1109 view to the victim to achieve the same effect.
1111 8.1.4. Spoofing Hostnames
1113 Some CAs implement technical controls to ensure that certificates are
1114 not issued to domains with names similar to domains that are popular
1115 and prone to attack. Of course, an attacker can attempt to
1116 circumvent this restriction by finding a CA willing to issue the
1117 certificate anyway. However, by using DNSSEC and TLSA, the attacker
1118 can circumvent this check completely.
1122 Hoffman & Schlyter Standards Track [Page 20]
1124 RFC 6698 DNS-Based Authentication for TLS August 2012
1129 Implementations of this protocol rely heavily on the DNS, and are
1130 thus prone to security attacks based on the deliberate
1131 mis-association of TLSA records and DNS names. Implementations need
1132 to be cautious in assuming the continuing validity of an association
1133 between a TLSA record and a DNS name.
1135 In particular, implementations SHOULD rely on their DNS resolver for
1136 confirmation of an association between a TLSA record and a DNS name,
1137 rather than caching the result of previous domain name lookups. Many
1138 platforms already can cache domain name lookups locally when
1139 appropriate, and they SHOULD be configured to do so. It is proper
1140 for these lookups to be cached, however, only when the TTL (Time To
1141 Live) information reported by the DNS makes it likely that the cached
1142 information will remain useful.
1144 If implementations cache the results of domain name lookups in order
1145 to achieve a performance improvement, they MUST observe the TTL
1146 information reported by DNS. Implementations that fail to follow
1147 this rule could be spoofed or have access denied when a previously
1148 accessed server's TLSA record changes, such as during a certificate
1151 8.3. External DNSSEC Validators
1153 Due to a lack of DNSSEC support in the most commonly deployed stub
1154 resolvers today, some ISPs have begun checking DNSSEC in the
1155 recursive resolvers they provide to their customers, setting the
1156 Authentic Data (AD) flag as appropriate. DNSSEC-aware clients could
1157 use that data, ignoring the fact that the DNSSEC data has been
1158 validated externally. Because there is typically no authentication
1159 of the recursive resolver or integrity protection of the data and AD
1160 flag between the client and the recursive resolver, this can be
1161 trivially spoofed by an attacker.
1163 However, even with secure communications between a host and the
1164 external validating resolver, there is a risk that the external
1165 validator could become compromised. Nothing prevents a compromised
1166 external DNSSEC validator from claiming that all the records it
1167 provides are secure, even if the data is falsified, unless the client
1168 checks the DNSSEC data itself (rendering the external validator
1171 For this reason, DNSSEC validation is best performed on-host, even
1172 when a secure path to an external validator is available.
1178 Hoffman & Schlyter Standards Track [Page 21]
1180 RFC 6698 DNS-Based Authentication for TLS August 2012
1185 Many of the ideas in this document have been discussed over many
1186 years. More recently, the ideas have been discussed by the authors
1187 and others in a more focused fashion. In particular, some of the
1188 ideas and words here originated with Paul Vixie, Dan Kaminsky, Jeff
1189 Hodges, Phillip Hallam-Baker, Simon Josefsson, Warren Kumari, Adam
1190 Langley, Ben Laurie, Ilari Liusvaara, Ondrej Mikle, Scott Schmit,
1191 Ondrej Sury, Richard Barnes, Jim Schaad, Stephen Farrell, Suresh
1192 Krishnaswamy, Peter Palfrader, Pieter Lexis, Wouter Wijngaards, John
1193 Gilmore, and Murray Kucherawy.
1195 This document has also been greatly helped by many active
1196 participants of the DANE Working Group.
1200 10.1. Normative References
1202 [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
1203 STD 13, RFC 1034, November 1987.
1205 [RFC1035] Mockapetris, P., "Domain names - implementation and
1206 specification", STD 13, RFC 1035, November 1987.
1208 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1209 Requirement Levels", BCP 14, RFC 2119, March 1997.
1211 [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
1212 Rose, "DNS Security Introduction and Requirements",
1213 RFC 4033, March 2005.
1215 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
1216 Rose, "Resource Records for the DNS Security Extensions",
1217 RFC 4034, March 2005.
1219 [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
1220 Rose, "Protocol Modifications for the DNS Security
1221 Extensions", RFC 4035, March 2005.
1223 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
1224 (TLS) Protocol Version 1.2", RFC 5246, August 2008.
1226 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
1227 Housley, R., and W. Polk, "Internet X.509 Public Key
1228 Infrastructure Certificate and Certificate Revocation List
1229 (CRL) Profile", RFC 5280, May 2008.
1234 Hoffman & Schlyter Standards Track [Page 22]
1236 RFC 6698 DNS-Based Authentication for TLS August 2012
1239 [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
1240 Verification of Domain-Based Application Service Identity
1241 within Internet Public Key Infrastructure Using X.509
1242 (PKIX) Certificates in the Context of Transport Layer
1243 Security (TLS)", RFC 6125, March 2011.
1245 [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
1246 Security Version 1.2", RFC 6347, January 2012.
1248 10.2. Informative References
1250 [RFC0952] Harrenstien, K., Stahl, M., and E. Feinler, "DoD Internet
1251 host table specification", RFC 952, October 1985.
1253 [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
1254 specifying the location of services (DNS SRV)", RFC 2782,
1257 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
1259 [RFC2845] Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B.
1260 Wellington, "Secret Key Transaction Authentication for DNS
1261 (TSIG)", RFC 2845, May 2000.
1263 [RFC2931] Eastlake 3rd, D., "DNS Request and Transaction Signatures
1264 ( SIG(0)s)", RFC 2931, September 2000.
1266 [RFC4025] Richardson, M., "A Method for Storing IPsec Keying
1267 Material in DNS", RFC 4025, March 2005.
1269 [RFC4255] Schlyter, J. and W. Griffin, "Using DNS to Securely
1270 Publish Secure Shell (SSH) Key Fingerprints", RFC 4255,
1273 [RFC4641] Kolkman, O. and R. Gieben, "DNSSEC Operational Practices",
1274 RFC 4641, September 2006.
1276 [RFC5074] Weiler, S., "DNSSEC Lookaside Validation (DLV)", RFC 5074,
1279 [RFC5890] Klensin, J., "Internationalized Domain Names for
1280 Applications (IDNA): Definitions and Document Framework",
1281 RFC 5890, August 2010.
1283 [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS)
1284 Extensions: Extension Definitions", RFC 6066,
1290 Hoffman & Schlyter Standards Track [Page 23]
1292 RFC 6698 DNS-Based Authentication for TLS August 2012
1295 [RFC6071] Frankel, S. and S. Krishnan, "IP Security (IPsec) and
1296 Internet Key Exchange (IKE) Document Roadmap", RFC 6071,
1299 [RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms
1300 (SHA and SHA-based HMAC and HKDF)", RFC 6234, May 2011.
1302 [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed.,
1303 "DomainKeys Identified Mail (DKIM) Signatures", RFC 6376,
1306 [RFC6394] Barnes, R., "Use Cases and Requirements for DNS-Based
1307 Authentication of Named Entities (DANE)", RFC 6394,
1310 [X.690] "Recommendation ITU-T X.690 (2002) | ISO/IEC 8825-1:2002,
1311 Information technology - ASN.1 encoding rules:
1312 Specification of Basic Encoding Rules (BER), Canonical
1313 Encoding Rules (CER) and Distinguished Encoding Rules
1346 Hoffman & Schlyter Standards Track [Page 24]
1348 RFC 6698 DNS-Based Authentication for TLS August 2012
1351 Appendix A. Operational Considerations for Deploying TLSA Records
1353 A.1. Creating TLSA Records
1355 When creating TLSA records, care must be taken to avoid
1356 misconfigurations. Section 4 of this document states that a TLSA
1357 RRSet whose validation state is secure MUST be used. This means that
1358 the existence of such a RRSet effectively disables other forms of
1359 name and path validation. A misconfigured TLSA RRSet will
1360 effectively disable access to the TLS server for all conforming
1361 clients, and this document does not provide any means of making a
1362 gradual transition to using TLSA.
1364 When creating TLSA records with certificate usage 0 (CA certificate)
1365 or usage 2 (trust anchor), one needs to understand the implications
1366 when choosing between selector type 0 (Full certificate) and 1
1367 (SubjectPublicKeyInfo). A careful choice is required because
1368 different methods for building trust chains are used by different TLS
1369 clients. The following outlines the cases that one ought to be aware
1370 of and discusses the implications of the choice of selector type.
1372 Certificate usage 2 is not affected by the different types of chain
1373 building when the end entity certificate is the same as the trust
1376 A.1.1. Ambiguities and Corner Cases When TLS Clients Build Trust Chains
1378 TLS clients can implement their own chain-building code rather than
1379 rely on the chain presented by the TLS server. This means that,
1380 except for the end entity certificate, any certificate presented in
1381 the suggested chain might or might not be present in the final chain
1382 built by the client.
1384 Certificates that the client can use to replace certificates from the
1385 original chain include:
1387 o Client's trust anchors
1389 o Certificates cached locally
1391 o Certificates retrieved from a URI listed in an Authority
1392 Information Access X.509v3 extension
1394 CAs frequently reissue certificates with different validity periods,
1395 signature algorithms (such as a different hash algorithm in the
1396 signature algorithm), CA key pairs (such as for a cross-certificate),
1402 Hoffman & Schlyter Standards Track [Page 25]
1404 RFC 6698 DNS-Based Authentication for TLS August 2012
1407 or PKIX extensions where the public key and subject remain the same.
1408 These reissued certificates are the certificates that the TLS client
1409 can use in place of an original certificate.
1411 Clients are known to exchange or remove certificates that could cause
1412 TLSA certificate associations that rely on the full certificate to
1415 o The client considers the signature algorithm of a certificate to
1416 no longer be sufficiently secure.
1418 o The client might not have an associated root certificate in its
1419 trust store and instead uses a cross-certificate with an identical
1420 subject and public key.
1422 A.1.2. Choosing a Selector Type
1424 In this section, "false-negative failure" means that a client will
1425 not accept the TLSA certificate association for a certificate
1426 designated by the DNS administrator. Also, "false-positive
1427 acceptance" means that the client accepts a TLSA association for a
1428 certificate that is not designated by the DNS administrator.
1430 A.1.2.1. Selector Type 0 (Full Certificate)
1432 The "Full certificate" selector provides the most precise
1433 specification of a TLSA certificate association, capturing all
1434 fields of the PKIX certificate. For a DNS administrator, the best
1435 course to avoid false-negative failures in the client when using this
1438 1. If a CA issued a replacement certificate, don't associate to CA
1439 certificates that have a signature algorithm with a hash that is
1440 considered weak by local policy.
1442 2. Determine how common client applications process the TLSA
1443 certificate association using a fresh client installation -- that
1444 is, with the local certificate cache empty.
1458 Hoffman & Schlyter Standards Track [Page 26]
1460 RFC 6698 DNS-Based Authentication for TLS August 2012
1463 A.1.2.2. Selector Type 1 (SubjectPublicKeyInfo)
1465 A SubjectPublicKeyInfo selector gives greater flexibility in avoiding
1466 some false-negative failures caused by trust-chain-building
1467 algorithms used in clients.
1469 One specific use case ought to be noted: creating a TLSA certificate
1470 association to CA certificate I1 that directly signed end entity
1471 certificate S1 of the server. The case can be illustrated by the
1482 Certificate chain sent by A different validation path
1483 server in TLS handshake built by the TLS client
1485 I2 is a reissued version of CA certificate I1 (that is, it has a
1486 different hash in its signature algorithm).
1488 In the above scenario, both certificates I1 and I2 that sign S1 need
1489 to have identical SubjectPublicKeyInfo fields because the key used to
1490 sign S1 is fixed. An association to SubjectPublicKeyInfo (selector
1491 type 1) will always succeed in such a case, but an association with a
1492 full certificate (selector type 0) might not work due to a false-
1495 The attack surface is a bit broader compared to the "Full
1496 certificate" selector: the DNS administrator might unintentionally
1497 specify an association that would lead to false-positive acceptance.
1499 o The administrator must know or trust that the CA does not engage
1500 in bad practices, such as not sharing the key of I1 for unrelated
1501 CA certificates (which would lead to trust-chain redirection). If
1502 possible, the administrator ought to review all CA certificates
1503 that have the same SubjectPublicKeyInfo field.
1505 o The administrator ought to understand whether some PKIX extension
1506 may adversely affect security of the association. If possible,
1507 administrators ought to review all CA certificates that share the
1508 SubjectPublicKeyInfo.
1514 Hoffman & Schlyter Standards Track [Page 27]
1516 RFC 6698 DNS-Based Authentication for TLS August 2012
1519 o The administrator ought to understand that any CA could, in the
1520 future, issue a certificate that contains the same
1521 SubjectPublicKeyInfo. Therefore, new chains can crop up in the
1522 future without any warning.
1524 Using the SubjectPublicKeyInfo selector for association with a
1525 certificate in a chain above I1 needs to be decided on a case-by-case
1526 basis: there are too many possibilities based on the issuing CA's
1527 practices. Unless the full implications of such an association are
1528 understood by the administrator, using selector type 0 is a better
1529 option from a security perspective.
1531 A.2. Provisioning TLSA Records in DNS
1533 A.2.1. Provisioning TLSA Records with Aliases
1535 The TLSA resource record is not special in the DNS; it acts exactly
1536 like any other RRtype where the queried name has one or more labels
1537 prefixed to the base name, such as the SRV RRtype [RFC2782]. This
1538 affects the way that the TLSA resource record is used when aliasing
1541 Note that the IETF sometimes adds new types of aliasing in the DNS.
1542 If that happens in the future, those aliases might affect TLSA
1543 records, hopefully in a good way.
1545 A.2.1.1. Provisioning TLSA Records with CNAME Records
1547 Using CNAME to alias in DNS only aliases from the exact name given,
1548 not any zones below the given name. For example, assume that a zone
1549 file has only the following:
1551 sub1.example.com. IN CNAME sub2.example.com.
1553 In this case, a request for the A record at "bottom.sub1.example.com"
1554 would not return any records because the CNAME given only aliases the
1555 name given. Assume, instead, the zone file has the following:
1557 sub3.example.com. IN CNAME sub4.example.com.
1558 bottom.sub3.example.com. IN CNAME bottom.sub4.example.com.
1560 In this case, a request for the A record at bottom.sub3.example.com
1561 would in fact return whatever value for the A record exists at
1562 bottom.sub4.example.com.
1570 Hoffman & Schlyter Standards Track [Page 28]
1572 RFC 6698 DNS-Based Authentication for TLS August 2012
1575 Application implementations and full-service resolvers request DNS
1576 records using libraries that automatically follow CNAME (and DNAME)
1577 aliasing. This allows hosts to put TLSA records in their own zones
1578 or to use CNAME to do redirection.
1580 If the owner of the original domain wants a TLSA record for the same,
1581 they simply enter it under the defined prefix:
1583 ; No TLSA record in target domain
1585 sub5.example.com. IN CNAME sub6.example.com.
1586 _443._tcp.sub5.example.com. IN TLSA 1 1 1 308202c5308201ab...
1587 sub6.example.com. IN A 192.0.2.1
1588 sub6.example.com. IN AAAA 2001:db8::1
1590 If the owner of the original domain wants to have the target domain
1591 host the TLSA record, the original domain uses a CNAME record:
1593 ; TLSA record for original domain has CNAME to target domain
1595 sub5.example.com. IN CNAME sub6.example.com.
1596 _443._tcp.sub5.example.com. IN CNAME _443._tcp.sub6.example.com.
1597 sub6.example.com. IN A 192.0.2.1
1598 sub6.example.com. IN AAAA 2001:db8::1
1599 _443._tcp.sub6.example.com. IN TLSA 1 1 1 536a570ac49d9ba4...
1601 Note that it is acceptable for both the original domain and the
1602 target domain to have TLSA records, but the two records are
1603 unrelated. Consider the following:
1605 ; TLSA record in both the original and target domain
1607 sub5.example.com. IN CNAME sub6.example.com.
1608 _443._tcp.sub5.example.com. IN TLSA 1 1 1 308202c5308201ab...
1609 sub6.example.com. IN A 192.0.2.1
1610 sub6.example.com. IN AAAA 2001:db8::1
1611 _443._tcp.sub6.example.com. IN TLSA 1 1 1 ac49d9ba4570ac49...
1613 In this example, someone looking for the TLSA record for
1614 sub5.example.com would always get the record whose value starts with
1615 "308202c5308201ab"; the TLSA record whose value starts with
1616 "ac49d9ba4570ac49" would only be sought by someone who is looking for
1617 the TLSA record for sub6.example.com, and never for sub5.example.com.
1618 Note that deploying different certificates for multiple services
1619 located at a shared TLS listener often requires the use of TLS SNI
1620 (Server Name Indication) [RFC6066].
1626 Hoffman & Schlyter Standards Track [Page 29]
1628 RFC 6698 DNS-Based Authentication for TLS August 2012
1631 Note that these methods use the normal method for DNS aliasing using
1632 CNAME: the DNS client requests the record type that they actually
1635 A.2.1.2. Provisioning TLSA Records with DNAME Records
1637 Using DNAME records allows a zone owner to alias an entire subtree of
1638 names below the name that has the DNAME. This allows the wholesale
1639 aliasing of prefixed records such as those used by TLSA, SRV, and so
1640 on without aliasing the name itself. However, because DNAME can only
1641 be used for subtrees of a base name, it is rarely used to alias
1642 individual hosts that might also be running TLS.
1644 ; TLSA record in target domain, visible in original domain via DNAME
1646 sub5.example.com. IN CNAME sub6.example.com.
1647 _tcp.sub5.example.com. IN DNAME _tcp.sub6.example.com.
1648 sub6.example.com. IN A 192.0.2.1
1649 sub6.example.com. IN AAAA 2001:db8::1
1650 _443._tcp.sub6.example.com. IN TLSA 1 1 1 536a570ac49d9ba4...
1652 A.2.1.3. Provisioning TLSA Records with Wildcards
1654 Wildcards are generally not terribly useful for RRtypes that require
1655 prefixing because one can only wildcard at a layer below the host
1656 name. For example, if one wants to have the same TLSA record for
1657 every TCP port for www.example.com, the result might be:
1659 *._tcp.www.example.com. IN TLSA 1 1 1 5c1502a6549c423b...
1661 This is possibly useful in some scenarios where the same service is
1662 offered on many ports or the same certificate and/or key is used for
1663 all services on a host. Note that the domain being searched for is
1664 not necessarily related to the domain name found in the certificate,
1665 so a certificate with a wildcard in it is not searched for using a
1666 wildcard in the search request.
1668 A.3. Securing the Last Hop
1670 As described in Section 4, an application processing TLSA records
1671 must know the DNSSEC validity of those records. There are many ways
1672 for the application to determine this securely, and this
1673 specification does not mandate any single method.
1682 Hoffman & Schlyter Standards Track [Page 30]
1684 RFC 6698 DNS-Based Authentication for TLS August 2012
1687 Some common methods for an application to know the DNSSEC validity of
1688 TLSA records include:
1690 o The application can have its own DNS resolver and DNSSEC
1693 o The application can communicate through a trusted channel (such as
1694 requests to the operating system under which the application is
1695 running) to a local DNS resolver that does DNSSEC validation.
1697 o The application can communicate through a secured channel (such as
1698 requests running over TLS, IPsec, TSIG, or SIG(0)) to a non-local
1699 DNS resolver that does DNSSEC validation.
1701 o The application can communicate through a secured channel (such as
1702 requests running over TLS, IPsec, TSIG, or SIG(0)) to a non-local
1703 DNS resolver that does not do DNSSEC validation, but gets
1704 responses through a secured channel from a different DNS resolver
1705 that does DNSSEC validation.
1707 A.4. Handling Certificate Rollover
1709 Certificate rollover is handled in much the same way as for rolling
1710 DNSSEC zone signing keys using the pre-publish key rollover method
1711 [RFC4641]. Suppose example.com has a single TLSA record for a TLS
1712 service on TCP port 990:
1714 _990._tcp.example.com IN TLSA 1 1 1 1CFC98A706BCF3683015...
1716 To start the rollover process, obtain or generate the new certificate
1717 or SubjectPublicKeyInfo to be used after the rollover and generate
1718 the new TLSA record. Add that record alongside the old one:
1720 _990._tcp.example.com IN TLSA 1 1 1 1CFC98A706BCF3683015...
1721 _990._tcp.example.com IN TLSA 1 1 1 62D5414CD1CC657E3D30...
1723 After the new records have propagated to the authoritative
1724 nameservers and the TTL of the old record has expired, switch to the
1725 new certificate on the TLS server. Once this has occurred, the old
1726 TLSA record can be removed:
1728 _990._tcp.example.com IN TLSA 1 1 1 62D5414CD1CC657E3D30...
1730 This completes the certificate rollover.
1738 Hoffman & Schlyter Standards Track [Page 31]
1740 RFC 6698 DNS-Based Authentication for TLS August 2012
1743 Appendix B. Pseudocode for Using TLSA
1745 This appendix describes, in pseudocode format, the interactions given
1746 earlier in this specification. If the steps below disagree with the
1747 text earlier in the document, the steps earlier in the document ought
1748 to be considered correct and this text incorrect.
1750 Note that this pseudocode is more strict than the normative text.
1751 For instance, it forces an order on the evaluation of criteria, which
1752 is not mandatory from the normative text.
1754 B.1. Helper Functions
1756 // implement the function for exiting
1757 function Finish (F) = {
1758 if (F == ABORT_TLS) {
1759 abort the TLS handshake or prevent TLS from starting
1764 fall back to non-TLSA certificate validation
1769 accept the TLS connection
1776 // implement the selector function
1777 function Select (S, X) = {
1780 return X in DER encoding
1783 // SubjectPublicKeyInfo
1785 return X.SubjectPublicKeyInfo in DER encoding
1794 Hoffman & Schlyter Standards Track [Page 32]
1796 RFC 6698 DNS-Based Authentication for TLS August 2012
1799 // implement the matching function
1800 function Match (M, X, Y) {
1801 // Exact match on selected content
1806 // SHA-256 hash of selected content
1808 return (SHA-256(X) == Y)
1811 // SHA-512 hash of selected content
1813 return (SHA-512(X) == Y)
1819 B.2. Main TLSA Pseudocode
1821 TLS connect using [transport] to [name] on [port] and receiving end
1822 entity cert C for the TLS server:
1824 (TLSArecords, ValState) = DNSSECValidatedLookup(
1825 domainname=_[port]._[transport].[name], RRtype=TLSA)
1827 // check for states that would change processing
1828 if (ValState == BOGUS) {
1831 if ((ValState == INDETERMINATE) or (ValState == INSECURE)) {
1834 // if here, ValState must be SECURE
1836 for each R in TLSArecords {
1837 // unusable records include unknown certUsage, unknown
1838 // selectorType, unknown matchingType, erroneous RDATA, and
1839 // prohibited by local policy
1840 if (R is unusable) {
1841 remove R from TLSArecords
1844 if (length(TLSArecords) == 0) {
1850 Hoffman & Schlyter Standards Track [Page 33]
1852 RFC 6698 DNS-Based Authentication for TLS August 2012
1855 // A TLS client might have multiple trust anchors that it might use
1856 // when validating the TLS server's end entity (EE) certificate.
1857 // Also, there can be multiple PKIX certification paths for the
1858 // certificates given by the server in TLS. Thus, there are
1859 // possibly many chains that might need to be tested during
1860 // PKIX path validation.
1862 for each R in TLSArecords {
1864 // pass PKIX certificate validation and chain through a CA cert
1865 // that comes from TLSA
1866 if (R.certUsage == 0) {
1867 for each PKIX certification path H {
1868 if (C passes PKIX certification path validation in H) {
1870 if ((D is a CA certificate) and
1871 Match(R.matchingType, Select(R.selectorType, D),
1880 // pass PKIX certificate validation and match EE cert from TLSA
1881 if (R.certUsage == 1) {
1882 for each PKIX certification path H {
1883 if ((C passes PKIX certificate validation in H) and
1884 Match(R.matchingType, Select(R.selectorType, C),
1891 // pass PKIX certification validation using TLSA record as the
1893 if (R.certUsage == 2) {
1894 // the following assert() is merely a formalization of the
1895 // "trust anchor" condition for a certificate D matching R
1896 assert(Match(R.matchingType, Select(R.selectorType, D), R.cert))
1906 Hoffman & Schlyter Standards Track [Page 34]
1908 RFC 6698 DNS-Based Authentication for TLS August 2012
1911 for each PKIX certification path H that has certificate D
1912 matching R as the trust anchor {
1913 if (C passes PKIX validation in H) {
1919 // match the TLSA record and the TLS certificate
1920 if (R.certUsage == 3) {
1921 if Match(R.matchingType, Select(R.selectorType, C), R.cert)
1928 // if here, then none of the TLSA records ended in "Finish(ACCEPT)"
1932 Appendix C. Examples
1934 The following are examples of self-signed certificates that have been
1935 generated with various selectors and matching types. They were
1936 generated with one piece of software, and validated by an individual
1942 S M Association Data
1943 0 0 30820454308202BC020900AB58D24E77AD2AF6300D06092A86
1944 4886F70D0101050500306C310B3009060355040613024E4C31163014
1945 0603550408130D4E6F6F72642D486F6C6C616E643112301006035504
1946 071309416D7374657264616D310C300A060355040A13034F53333123
1947 30210603550403131A64616E652E6B6965762E70726163746963756D
1948 2E6F73332E6E6C301E170D3132303131363136353730335A170D3232
1949 303131333136353730335A306C310B3009060355040613024E4C3116
1950 30140603550408130D4E6F6F72642D486F6C6C616E64311230100603
1951 5504071309416D7374657264616D310C300A060355040A13034F5333
1952 312330210603550403131A64616E652E6B6965762E70726163746963
1953 756D2E6F73332E6E6C308201A2300D06092A864886F70D0101010500
1954 0382018F003082018A0282018100E62C84A5AFE59F0A2A6B250DEE68
1955 7AC8C5C604F57D26CEB2119140FFAC38C4B9CBBE8923082E7F81626B
1956 6AD5DEA0C8771C74E3CAA7F613054AEFA3673E48FFE47B3F7AF987DE
1957 281A68230B24B9DA1A98DCBE51195B60E42FD7517C328D983E26A827
1958 C877AB914EE4C1BFDEAD48BD25BE5F2C473BA9C1CBBDDDA0C374D0D5
1962 Hoffman & Schlyter Standards Track [Page 35]
1964 RFC 6698 DNS-Based Authentication for TLS August 2012
1967 8C389CC3D6D8C20662E19CF768F32441B7F7D14AEA8966CE7C32A172
1968 2AB38623D008029A9E4702883F8B977A1A1E5292BF8AD72239D40393
1969 37B86A3AC60FA001290452177BF1798609A05A130F033457A5212629
1970 FBDDB8E70E2A9E6556873C4F7CA46AE4A8B178F05FB319005E1C1C7D
1971 4BD77DFA34035563C126AA2C3328B900E7990AC9787F01DA82F74C3D
1972 4B6674CCECE1FD4C6EF9E6644F4635EDEDA39D8B0E2F7C8E06DAE775
1973 6213BD3D60831175BE290442B4AFC5AE6F46B769855A067C1097E617
1974 962529E166F22AEE10DDB981B8CD6FF17D3D70723169038DBFBC1A44
1975 9C8D0D31BC683C5F3CE26148E42EC9BBD4D9F261569B25B53C1D7FC2
1976 DDFF6B4CAC050203010001300D06092A864886F70D01010505000382
1977 0181002B2ABE063E9C86AC4A1F7835372091079C8276A9C2C5D1EC57
1978 64DE523FDDABDEAB3FD34E6FE6CBA054580A6785A663595D90132B93
1979 D473929E81FA0887D2FFF78A81C7D014B97778AB6AC9E5E690F6F5A9
1980 E92BB5FBAB71B857AE69B6E18BDCCB0BA6FCD9D4B084A34F3635148C
1981 495D48FE635903B888EC1DEB2610548EDD48D63F86513A4562469831
1982 48C0D5DB82D73A4C350A42BB661D763430FC6C8E5F9D13EA1B76AA52
1983 A4C358E5EA04000F794618303AB6CEEA4E9A8E9C74D73C1B0B7BAF16
1984 DEDE7696B5E2F206F777100F5727E1684D4132F5E692F47AF6756EA8
1985 B421000BE031B5D8F0220E436B51FB154FE9595333C13A2403F9DE08
1986 E5DDC5A22FD6182E339593E26374450220BC14F3E40FF33F084526B0
1987 9C34250702E8A352B332CCCB0F9DE2CF2B338823B92AFC61C0B6B8AB
1988 DB5AF718ED8DDA97C298E46B82A01B14814868CFA4F2C36268BFFF4A
1989 591F42658BF75918902D3E426DFE1D5FF0FC6A212071F6DA8BD833FE
1990 2E560D87775E8EE9333C05B6FB8EB56589D910DB5EA903
1992 0 1 EFDDF0D915C7BDC5782C0881E1B2A95AD099FBDD06D7B1F779
1995 0 2 81EE7F6C0ECC6B09B7785A9418F54432DE630DD54DC6EE9E3C
1996 49DE547708D236D4C413C3E97E44F969E635958AA410495844127C04
1997 883503E5B024CF7A8F6A94
1999 1 0 308201A2300D06092A864886F70D01010105000382018F0030
2000 82018A0282018100E62C84A5AFE59F0A2A6B250DEE687AC8C5C604F5
2001 7D26CEB2119140FFAC38C4B9CBBE8923082E7F81626B6AD5DEA0C877
2002 1C74E3CAA7F613054AEFA3673E48FFE47B3F7AF987DE281A68230B24
2003 B9DA1A98DCBE51195B60E42FD7517C328D983E26A827C877AB914EE4
2004 C1BFDEAD48BD25BE5F2C473BA9C1CBBDDDA0C374D0D58C389CC3D6D8
2005 C20662E19CF768F32441B7F7D14AEA8966CE7C32A1722AB38623D008
2006 029A9E4702883F8B977A1A1E5292BF8AD72239D4039337B86A3AC60F
2007 A001290452177BF1798609A05A130F033457A5212629FBDDB8E70E2A
2008 9E6556873C4F7CA46AE4A8B178F05FB319005E1C1C7D4BD77DFA3403
2009 5563C126AA2C3328B900E7990AC9787F01DA82F74C3D4B6674CCECE1
2010 FD4C6EF9E6644F4635EDEDA39D8B0E2F7C8E06DAE7756213BD3D6083
2011 1175BE290442B4AFC5AE6F46B769855A067C1097E617962529E166F2
2012 2AEE10DDB981B8CD6FF17D3D70723169038DBFBC1A449C8D0D31BC68
2013 3C5F3CE26148E42EC9BBD4D9F261569B25B53C1D7FC2DDFF6B4CAC05
2018 Hoffman & Schlyter Standards Track [Page 36]
2020 RFC 6698 DNS-Based Authentication for TLS August 2012
2023 1 1 8755CDAA8FE24EF16CC0F2C918063185E433FAAF1415664911
2026 1 2 D43165B4CDF8F8660AECCCC5344D9D9AE45FFD7E6AAB7AB9EE
2027 C169B58E11F227ED90C17330CC17B5CCEF0390066008C720CEC6AAE5
2028 33A934B3A2D7E232C94AB4
2035 EMail: paul.hoffman@vpnc.org
2041 EMail: jakob@kirei.se
2074 Hoffman & Schlyter Standards Track [Page 37]