| < draft-ietf-dane-srv-08.txt | draft-ietf-dane-srv-09.txt > | |||
|---|---|---|---|---|
| DNS-Based Authentication of Named Entities (DANE) T. Finch | DNS-Based Authentication of Named Entities (DANE) T. Finch | |||
| Internet-Draft University of Cambridge | Internet-Draft University of Cambridge | |||
| Intended status: Standards Track M. Miller | Intended status: Standards Track M. Miller | |||
| Expires: April 24, 2015 Cisco Systems, Inc. | Expires: August 17, 2015 Cisco Systems, Inc. | |||
| P. Saint-Andre | P. Saint-Andre | |||
| &yet | &yet | |||
| October 21, 2014 | February 13, 2015 | |||
| Using DNS-Based Authentication of Named Entities (DANE) TLSA Records | Using DNS-Based Authentication of Named Entities (DANE) TLSA Records | |||
| with SRV Records | with SRV Records | |||
| draft-ietf-dane-srv-08 | draft-ietf-dane-srv-09 | |||
| Abstract | Abstract | |||
| The DANE specification (RFC 6698) describes how to use TLSA resource | The DANE specification (RFC 6698) describes how to use TLSA resource | |||
| records in the DNS to associate a server's host name with its TLS | records secured by DNSSEC (RFC 4033) to associate a server's | |||
| certificate, where the association is secured with DNSSEC. However, | connection endpoint with its TLS certificate. However, application | |||
| application protocols that use SRV records (RFC 2782) to indirectly | protocols that use SRV records (RFC 2782) to indirectly name the | |||
| name the target server host names for a service domain cannot apply | target server connection endpoints for a service domain cannot apply | |||
| the rules from RFC 6698. Therefore this document provides guidelines | the rules from RFC 6698. Therefore this document provides guidelines | |||
| that enable such protocols to locate and use TLSA records. | that enable such protocols to locate and use TLSA records. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on April 24, 2015. | This Internet-Draft will expire on August 17, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. DNS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. DNS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. SRV Query . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3.1. SRV Query . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Address Queries . . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Address Queries . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.3. TLSA Queries . . . . . . . . . . . . . . . . . . . . . . 4 | 3.3. TLSA Queries . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.4. Impact on TLS Usage . . . . . . . . . . . . . . . . . . . 5 | 3.4. Impact on TLS Usage . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. TLS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. TLS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. SRV Records Only . . . . . . . . . . . . . . . . . . . . 5 | 4.1. SRV Records Only . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.2. TLSA Records . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. TLSA Records . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Guidance for Protocol Authors . . . . . . . . . . . . . . . . 6 | 5. Guidance for Protocol Authors . . . . . . . . . . . . . . . . 7 | |||
| 6. Guidance for Server Operators . . . . . . . . . . . . . . . . 7 | 6. Guidance for Server Operators . . . . . . . . . . . . . . . . 7 | |||
| 7. Guidance for Application Developers . . . . . . . . . . . . . 8 | 7. Guidance for Application Developers . . . . . . . . . . . . . 8 | |||
| 8. Internationalization Considerations . . . . . . . . . . . . . 8 | 8. Internationalization Considerations . . . . . . . . . . . . . 8 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 10.1. Mixed Security Status . . . . . . . . . . . . . . . . . 8 | 10.1. Mixed Security Status . . . . . . . . . . . . . . . . . 9 | |||
| 10.2. A Service Domain Trusts its Servers . . . . . . . . . . 8 | 10.2. Certificate Subject Name Matching . . . . . . . . . . . 9 | |||
| 10.3. Certificate Subject Name Matching . . . . . . . . . . . 9 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 11.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 9 | ||||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 10 | ||||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 11 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| A.1. IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | A.1. IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| A.2. XMPP . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | A.2. XMPP . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Appendix B. Rationale . . . . . . . . . . . . . . . . . . . . . 12 | Appendix B. Rationale . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 13 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
| 1. Introduction | 1. Introduction | |||
| The base DANE specification [RFC6698] describes how to use TLSA | The base DANE specification [RFC6698] describes how to use TLSA | |||
| resource records in the DNS to associate a server's host name with | resource records secured by DNSSEC [RFC4033] to associate a target | |||
| its TLS certificate, where the association is secured using DNSSEC. | server's connection endpoint with its TLS certificate. Some | |||
| That document "only relates to securely associating certificates for | application protocols locate connection endpoints indirectly via SRV | |||
| TLS and DTLS with host names" (see the last paragraph of section 1.2 | records [RFC2782]. As a result of this indirection, the rules | |||
| of [RFC6698]). | specified in [RFC6698] cannot be directly applied to such application | |||
| protocols. (Rules for SMTP [RFC5321], which uses MX resource records | ||||
| Some application protocols do not use host names directly; instead, | instead of SRV records, are described in | |||
| they use a service domain, and the relevant target server host names | [I-D.ietf-dane-smtp-with-dane].) | |||
| are located indirectly via SRV records [RFC2782]. Because of this | ||||
| intermediate resolution step, the normal DANE rules specified in | ||||
| [RFC6698] cannot be applied to protocols that use SRV records. | ||||
| (Rules for SMTP [RFC5321], which uses MX records instead of SRV | ||||
| records, are described in [I-D.ietf-dane-smtp-with-dane].) | ||||
| This document describes how to use DANE TLSA records with SRV | This document describes how to use DANE TLSA records with SRV | |||
| records. To summarize: | records. To summarize: | |||
| o We rely on DNSSEC to secure the association between the service | o We rely on DNSSEC to secure SRV records that map the desired | |||
| domain and the target server host names (i.e., the host names that | service, transport protocol, and service domain to the | |||
| are discovered by the SRV query). | corresponding target server connection endpoints (i.e., the target | |||
| server host names and port numbers returned in the SRV records for | ||||
| that service type). | ||||
| o The TLSA records are located using the port, protocol, and target | o The TLSA records for each connection endpoint are located using | |||
| server host name fields (not the service domain). | the transport protocol, port number, and host name for the target | |||
| server (not the service domain). | ||||
| o Clients always use TLS when connecting to servers with TLSA | o When DNSSEC-validated TLSA records are published for a particular | |||
| records. | connection endpoint, clients always use TLS when connecting (even | |||
| if the connection endpoint supports cleartext communication). | ||||
| o Assuming that the association is secure, the server's certificate | o If there is at least one usable TLSA record, the connection | |||
| is expected to authenticate the target server host name, rather | endpoint's TLS certificate or public key needs to match at least | |||
| than the service domain. | one of those usable TLSA records. | |||
| Note: The "CertID" specification [RFC6125] does not use the terms | o If there are no usable TLSA records, the target server host name | |||
| "service domain" and "target server host name", but refers to the | is used as one of the acceptable reference identifiers, as | |||
| same entities with the terms "source domain" and "derived domain". | described in [RFC6125]. Other reference identifiers might arise | |||
| through CNAME expansion of either the service domain or target | ||||
| server host name, as detailed in [I-D.ietf-dane-ops]. | ||||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this memo are to be interpreted as described in | "OPTIONAL" in this memo are to be interpreted as described in | |||
| [RFC2119]. | [RFC2119]. | |||
| This draft uses the definitions for "secure", "insecure", "bogus", | This draft uses the definitions for "secure", "insecure", "bogus", | |||
| and "indeterminate" from [RFC4035]. This draft uses the acronyms | and "indeterminate" from [RFC4035]. This draft uses the acronyms | |||
| from [RFC7218] for the values of TLSA fields where appropriate. | from [RFC7218] for the values of TLSA fields where appropriate. | |||
| Additionally, this document uses the following terms: | ||||
| connection endpoint: A tuple of a fully qualified DNS host name, | ||||
| transport protocol, and port number that a client uses to | ||||
| establish a connection to the target server. | ||||
| service domain: The fully qualified DNS domain name that identifies | ||||
| an application service; corresponds to the term "source domain" | ||||
| from [RFC6125]. | ||||
| This document uses the term "target server host name" in place of the | ||||
| term "derived domain" from the CertID specification [RFC6125]. | ||||
| 3. DNS Checks | 3. DNS Checks | |||
| 3.1. SRV Query | 3.1. SRV Query | |||
| When the client makes an SRV query, a successful result will | When the client makes an SRV query, a successful result will | |||
| typically be a list of one or more SRV records (or possibly a chain | typically be a list of one or more SRV records (or possibly a chain | |||
| of CNAME / DNAME aliases leading to such a list). Implementers need | of CNAME / DNAME aliases leading to such a list). | |||
| to be aware that unsuccessful results can occur because of various | ||||
| DNS-related errors; a helpful summary can be found in section 2.1 of | NOTE: Implementers need to be aware that unsuccessful results can | |||
| [I-D.ietf-dane-smtp-with-dane]. | occur because of various DNS-related errors; guidance on avoiding | |||
| downgrade attacks can be found in Section 2.1 of | ||||
| [I-D.ietf-dane-smtp-with-dane]. | ||||
| For this specification to apply, the entire DNS RRset that is | For this specification to apply, the entire DNS RRset that is | |||
| returned MUST be "secure" according to DNSSSEC validation ([RFC4033] | returned MUST be "secure" according to DNSSEC validation (Section 5 | |||
| section 5). In the case of aliases, the whole chain of CNAME and | of [RFC4035]). In the case where the answer is obtained via a chain | |||
| DNAME RRsets MUST be secure as well. This corresponds to the AD bit | of CNAME and/or DNAME aliases, the whole chain of CNAME and DNAME | |||
| being set in the response(s); see [RFC4035] section 3.2.3. | RRsets MUST also be secure. | |||
| If the the entire RRset is "insecure", this protocol has not been | If the lookup result is "insecure" (or no SRV records are located), | |||
| correctly deployed. The client SHOULD fall back to its non-DNSSEC, | this protocol does not apply and the client SHOULD fall back to its | |||
| non-DANE behavior (this corresponds to the AD bit being unset). If | non-DNSSEC, non-DANE (and possibly non-SRV) behavior. If the SRV | |||
| the entire RRset is "bogus", the client MUST abort the attempt. | lookup fails because the RRset is "bogus", the client MUST abort its | |||
| attempt to connect to the desired service. | ||||
| In the successful case, the client now has an authentic list of | When the lookup returns a "secure" RRset (possibly via a chain of | |||
| target server host names with weight and priority values. It | "secure" CNAME/DNAME records), the client now has an authentic list | |||
| performs server ordering and selection using the weight and priority | of target server connection endpoints with weight and priority | |||
| values without regard to the presence or absence of DNSSEC or TLSA | values. It performs server ordering and selection using the weight | |||
| records. It also takes note of the DNSSEC validation status of the | and priority values without regard to the presence or absence of | |||
| SRV response for use when checking certificate names (see Section 4). | DNSSEC or TLSA records. It also takes note of the DNSSEC validation | |||
| The client can now proceed to making address queries on the target | status of the SRV response for use when checking certificate names | |||
| server host names as described in the next section. | (see Section 4). The client can then proceed to making address | |||
| queries on the target server host names as described in the following | ||||
| section. | ||||
| 3.2. Address Queries | 3.2. Address Queries | |||
| For each SRV target server host name, the client makes A and AAAA | For each SRV target server connnection endpoint, the client makes A | |||
| queries, performs DNSSEC validation on the address (A or AAAA) | and/or AAAA queries, performs DNSSEC validation on the address (A or | |||
| response, and continues as follows based on the results: | AAAA) response, and continues as follows based on the results: | |||
| o If the response is "secure" and usable, the client MUST perform a | o If either the A or AAAA RRSets are "secure", the client MUST | |||
| TLSA query for that target server host name as described in the | perform a TLSA query for that target server connection endpoint as | |||
| next section. | described in the next section. | |||
| o If the response is "insecure", the client MUST NOT perform a TLSA | o If both RRsets are "insecure", the client MUST NOT perform a TLSA | |||
| query for that target server host name; the TLSA query will most | query for that target server connection endpoint; the TLSA query | |||
| likely fail. | will most likely fail or produce spurious results. | |||
| o If the response is "bogus" or "indeterminate", the client MUST NOT | o If the address record lookup fails (this a validation status of | |||
| connect to this target server; instead it uses the next most | either "bogus" or "indeterminate"), the client MUST NOT connect to | |||
| appropriate SRV target. | this connection endpoint; instead it uses the next most | |||
| appropriate SRV target. This mitigates against downgrade attacks. | ||||
| 3.3. TLSA Queries | 3.3. TLSA Queries | |||
| The client SHALL construct the TLSA query name as described in | The client SHALL construct the TLSA query name as described in | |||
| [RFC6698] section 3, based on fields from the SRV record: the port | Section 3 of [RFC6698], based on the fields from the SRV record: the | |||
| from the SRV RDATA, the protocol from the SRV query name, and the | port number from the SRV RDATA, the transport protocol from the SRV | |||
| TLSA base domain set to the SRV target server host name. | query name, and the TLSA base domain from the SRV target server host | |||
| name. | ||||
| For example, the following SRV record for IMAP (see [RFC6186]) leads | For example, the following SRV record for IMAP (see [RFC6186]): | |||
| to the TLSA query shown below: | ||||
| _imap._tcp.example.com. 86400 IN SRV 10 0 9143 imap.example.net. | _imap._tcp.example.com. 86400 IN SRV 10 0 9143 imap.example.net. | |||
| _9143._tcp.imap.example.net. IN TLSA ? | leads to the TLSA query shown below: | |||
| _9143._tcp.imap.example.net. IN TLSA ? | ||||
| 3.4. Impact on TLS Usage | 3.4. Impact on TLS Usage | |||
| The client SHALL determine if the TLSA record(s) returned in the | The client SHALL determine if the TLSA records returned in the | |||
| previous step are usable according to section 4.1 of [RFC6698]. This | previous step are usable according to Section 4.1 of [RFC6698]. This | |||
| affects the use TLS as follows: | affects the use TLS as follows: | |||
| o If the TLSA response is "secure" and usable, then the client MUST | o If the TLSA response is "secure" and usable, then the client MUST | |||
| use TLS when connecting to the target server. The TLSA records | use TLS when connecting to the target server. The TLSA records | |||
| are used when validating the server's certificate as described | are used when validating the server's certificate as described in | |||
| under Section 4. | Section 4. | |||
| o If the TLSA response is "insecure", then the client SHALL proceed | o If the TLSA lookup fails, then the client SHALL proceed as if the | |||
| as if the target server had no TLSA records. It MAY connect to | target server had no TLSA records. It MAY connect to the target | |||
| the target server with or without TLS, subject to the policies of | server with or without TLS, subject to the policies of the | |||
| the application protocol or client implementation. | application protocol or client implementation. | |||
| o If the TLSA response is "bogus" or "indeterminate", then the | o If the TLSA response is "bogus" or "indeterminate", then the | |||
| client MUST NOT connect to the target server (the client can still | client MUST NOT connect to the target server (the client can still | |||
| use other SRV targets). | use other SRV targets). | |||
| 4. TLS Checks | 4. TLS Checks | |||
| When connecting to a server, the client MUST use TLS if the responses | When connecting to a server, the client MUST use TLS if the responses | |||
| to the SRV and TLSA queries were "secure" as described above. The | to the SRV and TLSA queries were "secure" as described above. The | |||
| rules described in the next two sections apply. | rules described in the next two sections apply to such secure | |||
| responses; Section 4.2 where there is at least one usable TLSA | ||||
| record, and Section 4.1 otherwise. | ||||
| 4.1. SRV Records Only | 4.1. SRV Records Only | |||
| If the client received zero usable TLSA certificate associations, it | If the client received zero usable TLSA certificate associations, it | |||
| SHALL validate the server's TLS certificate using the normal PKIX | SHALL validate the server's TLS certificate using the normal PKIX | |||
| rules [RFC5280] or protocol-specific rules (e.g., following | rules [RFC5280] or protocol-specific rules (e.g., following | |||
| [RFC6125]) without further input from the TLSA records. | [RFC6125]) without further input from the TLSA records. In this | |||
| case, the client uses the information in the server certificate and | ||||
| In this case, the client uses the information in the server | the DNSSEC validation status of the SRV query in its authentication | |||
| certificate and the DNSSEC validation status of the SRV query in its | checks. It SHOULD use the Server Name Indication extension (TLS SNI) | |||
| authentication checks. It SHOULD use the Server Name Indication | [RFC6066] or its functional equivalent in the relevant application | |||
| extension (TLS SNI) [RFC6066] or its functional equivalent in the | protocol (e.g., in XMPP [RFC6120] this is the 'to' address of the | |||
| relevant application protocol (e.g., in XMPP [RFC6120] this is the | initial stream header). The preferred name SHALL be chosen as | |||
| 'to' address of the initial stream header). The preferred name SHALL | follows, and the client SHALL verify the identity asserted by the | |||
| be chosen as follows, and the client SHALL verify the identity | server's certificate according to Section 6 of [RFC6125], using a | |||
| asserted by the server's certificate according to section 6 of | list of reference identifiers constructed as follows (note again that | |||
| in RFC 6125 the terms "source domain" and "derived domain" to refer | ||||
| [RFC6125], using a list of reference identifiers constructed as | to the same things as "service domain" and "target server host name" | |||
| follows (note again that in RFC 6125 the terms "source domain" and | in this document). The examples below assume a service domain of | |||
| "derived domain" refer to the same things as "service domain" and | "im.example.com" and a target server host name of | |||
| "target server host name" in this document). The examples below | "xmpp23.hosting.example.net". | |||
| assume a service domain of "im.example.com" and a target server host | ||||
| name of "xmpp23.hosting.example.net". | ||||
| SRV is insecure: The reference identifiers SHALL include the service | SRV is insecure: The reference identifiers SHALL include the service | |||
| domain and MUST NOT include the SRV target server host name (e.g., | domain and MUST NOT include the SRV target server host name (e.g., | |||
| include "im.example.com" but not "xmpp23.hosting.example.net"). | include "im.example.com" but not "xmpp23.hosting.example.net"). | |||
| The service domain is the preferred name for TLS SNI or its | The service domain is the preferred name for TLS SNI or its | |||
| equivalent. | equivalent. | |||
| SRV is secure: The reference identifiers SHALL include both the | SRV is secure: The reference identifiers SHALL include both the | |||
| service domain and the SRV target server host name (e.g., include | service domain and the SRV target server host name (e.g., include | |||
| both "im.example.com" and "xmpp23.hosting.example.net"). The | both "im.example.com" and "xmpp23.hosting.example.net"). The | |||
| target server host name is the preferred name for TLS SNI or its | target server host name is the preferred name for TLS SNI or its | |||
| equivalent. | equivalent. | |||
| In the latter case, the client will accept either identity to ensure | In the latter case, the client will accept either identity to ensure | |||
| compatibility with servers that support this specification as well as | compatibility with servers that support this specification as well as | |||
| servers that do not support this specification. | servers that do not support this specification. | |||
| 4.2. TLSA Records | 4.2. TLSA Records | |||
| If the client received one or more usable TLSA certificate | If the client received one or more usable TLSA certificate | |||
| associations, it SHALL process them as described in section 2.1 of | associations, it SHALL process them as described in Section 2.1 of | |||
| [RFC6698]. | [RFC6698]. | |||
| If the TLS server's certificate -- or the public key of the server's | If the TLS server's certificate -- or the public key of the server's | |||
| certificate -- matches a usable TLSA record with Certificate Usage | certificate -- matches a usable TLSA record with Certificate Usage | |||
| "DANE-EE", the client MUST consider the server to be authenticated. | "DANE-EE", the client MUST ignore expiration checks from [RFC5280] | |||
| Because the information in such a TLSA record supersedes the non-key | and reference identifier checks from [RFC6125]. The information in | |||
| information in the certificate, all other [RFC5280] and [RFC6125] | such a TLSA record supersedes the non-key information in the | |||
| authentication checks (e.g., reference identifier, key usage, | certificate. | |||
| expiration, issuance) MUST be ignored or omitted. | ||||
| 5. Guidance for Protocol Authors | 5. Guidance for Protocol Authors | |||
| This document describes how to use DANE with application protocols in | This document describes how to use DANE with application protocols in | |||
| which target servers are discovered via SRV records. Although this | which target servers are discovered via SRV records. Although this | |||
| document attempts to provide generic guidance applying to all such | document attempts to provide generic guidance applying to all such | |||
| protocols, additional documents for particular application protocols | protocols, additional documents for particular application protocols | |||
| could cover related topics, such as: | could cover related topics, such as: | |||
| o Fallback logic in the event that a client is unable to connect | o Fallback logic in the event that a client is unable to connect | |||
| skipping to change at page 7, line 41 ¶ | skipping to change at page 8, line 17 ¶ | |||
| that do not support this specification from successfully connecting | that do not support this specification from successfully connecting | |||
| with TLS. | with TLS. | |||
| For TLSA records with Certificate Usage types other than "DANE-EE", | For TLSA records with Certificate Usage types other than "DANE-EE", | |||
| the certificate(s) MUST contain an identifier that matches: | the certificate(s) MUST contain an identifier that matches: | |||
| o the service domain name (the "source domain" in [RFC6125] terms, | o the service domain name (the "source domain" in [RFC6125] terms, | |||
| which is the SRV query domain); and/or | which is the SRV query domain); and/or | |||
| o the target server host name (the "derived domain" in [RFC6125] | o the target server host name (the "derived domain" in [RFC6125] | |||
| terms, which is the SRV target). | terms, which is the SRV target host name). | |||
| Servers that support multiple service domains (i.e., so-called | Servers that support multiple service domains (i.e., so-called | |||
| "multi-tenanted environments") can implement the Transport Layer | "multi-tenanted environments") can implement the Transport Layer | |||
| Security Server Name Indication (TLS SNI) [RFC6066] or its functional | Security Server Name Indication (TLS SNI) [RFC6066] or its functional | |||
| equivalent to determine which certificate to offer. Clients that do | equivalent to determine which certificate to offer. Clients that do | |||
| not support this specification will indicate a preference for the | not support this specification will indicate a preference for the | |||
| service domain name, while clients that support this specification | service domain name, while clients that support this specification | |||
| will indicate the target server host name. However, the server | will indicate the target server host name. However, the server | |||
| determines what certificate to present in the TLS handshake; e.g., | determines what certificate to present in the TLS handshake; e.g., | |||
| the presented certificate might only authenticate the target server | the presented certificate might only authenticate the target server | |||
| host name. | host name. | |||
| 7. Guidance for Application Developers | 7. Guidance for Application Developers | |||
| Developers of application clients that depend on DANE-SRV often would | Developers of application clients that depend on DANE-SRV often would | |||
| like to prepare as quickly as possible for making a connection to the | like to prepare as quickly as possible for making a connection to the | |||
| intended service, thus reducing the wait time for end users. To make | intended service, thus reducing the wait time for end users. To make | |||
| this optimization possible, a DNS library might perform the SRV | this optimization possible, a DNS library might perform the SRV | |||
| queries, address queries, and TLSA queries in parallel (because a | queries, address queries, and TLSA queries in parallel. (Because a | |||
| TLSA record can be ignored if it turns out that the address record on | TLSA record can be ignored if it turns out that the address record on | |||
| which it depends is not secure, performing the TLSA queries in | which it depends is not secure, performing the TLSA queries in | |||
| parallel with the SRV queries and address queries is not harmful from | parallel with the SRV queries and address queries is not harmful from | |||
| a security perspective and can yield some operational benefits). | a security perspective and can yield some operational benefits.) | |||
| 8. Internationalization Considerations | 8. Internationalization Considerations | |||
| If any of the DNS queries are for an internationalized domain name, | If any of the DNS queries are for an internationalized domain name, | |||
| then they need to use the A-label form [RFC5890]. | then they need to use the A-label form [RFC5890]. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| No IANA action is required. | No IANA action is required. | |||
| 10. Security Considerations | 10. Security Considerations | |||
| 10.1. Mixed Security Status | 10.1. Mixed Security Status | |||
| We do not specify that clients checking all of a service domain's | We do not specify that all of the target server connection endpoints | |||
| target server host names are consistent in whether they have or do | for a service domain need to be consistent in whether they have or do | |||
| not have TLSA records. This is so that partial or incremental | not have TLSA records. This is so that partial or incremental | |||
| deployment does not break the service. Different levels of | deployment does not break the service. Different levels of | |||
| deployment are likely if a service domain has a third-party fallback | deployment are likely if a service domain has a third-party fallback | |||
| server, for example. | server, for example. | |||
| The SRV sorting rules are unchanged; in particular they have not been | The SRV sorting rules are unchanged; in particular they have not been | |||
| altered in order to prioritize secure servers over insecure servers. | altered in order to prioritize secure connection endpoints over | |||
| If a site wants to be secure it needs to deploy this protocol | insecure connection endpoints. If a site wants to be secure it needs | |||
| completely; a partial deployment is not secure and we make no special | to deploy this protocol completely; a partial deployment is not | |||
| effort to support it. | secure and we make no special effort to support it. | |||
| 10.2. A Service Domain Trusts its Servers | ||||
| By signing their zone with DNSSEC, service domain operators | ||||
| implicitly instruct their clients to check their server TLSA records. | ||||
| This implies another point in the trust relationship between service | ||||
| domain holders and their server operators. Most of the setup | ||||
| requirements for this protocol fall on the server operator: | ||||
| installing a TLS certificate with the correct name (where necessary), | ||||
| and publishing a TLSA record for that certificate. If these are not | ||||
| correct then connections from TLSA-aware clients might fail. | ||||
| 10.3. Certificate Subject Name Matching | 10.2. Certificate Subject Name Matching | |||
| Section 4 of the TLSA specification [RFC6698] leaves the details of | Section 4 of the TLSA specification [RFC6698] leaves the details of | |||
| checking names in certificates to higher level application protocols, | checking names in certificates to higher level application protocols, | |||
| though it suggests the use of [RFC6125]. | though it suggests the use of [RFC6125]. | |||
| Name checks are not necessary if the matching TLSA record is of | Name checks are not necessary if the matching TLSA record is of | |||
| Certificate Usage "DANE-EE". Because such a record identifies the | Certificate Usage "DANE-EE". Because such a record identifies the | |||
| specific certificate (or public key of the certificate), additional | specific certificate (or public key of the certificate), additional | |||
| checks are superfluous and potentially conflicting. | checks are superfluous and potentially conflicting. | |||
| Otherwise, while DNSSEC provides a secure binding between the server | Otherwise, while DNSSEC provides a secure binding between the server | |||
| name and the TLSA record, and the TLSA record provides a binding to a | name and the TLSA record, and the TLSA record provides a binding to a | |||
| certificate, this latter step can be indirect via a chain of | certificate, this latter step can be indirect via a chain of | |||
| certificates. For example, a Certificate Usage "PKIX-TA" TLSA record | certificates. For example, a Certificate Usage "PKIX-TA" TLSA record | |||
| only authenticates the CA that issued the certificate, and third | only authenticates the CA that issued the certificate, and third | |||
| parties can obtain certificates from the same CA. Therefore, clients | parties can obtain certificates from the same CA. Therefore, clients | |||
| need to check whether the server's certificate matches one of the | need to check whether the server's certificate matches one of the | |||
| expected reference identifiers to ensure that the certificate was | expected reference identifiers to ensure that the certificate was | |||
| issued by the CA to the server the client expects. | issued by the CA to the server the client expects. | |||
| 11. Acknowledgements | 11. References | |||
| Thanks to Mark Andrews for arguing that authenticating the target | ||||
| server host name is the right thing, and that we ought to rely on | ||||
| DNSSEC to secure the SRV lookup. Thanks to James Cloos, Viktor | ||||
| Dukhovni, Ned Freed, Olafur Gudmundsson, Paul Hoffman, Phil Pennock, | ||||
| Hector Santos, Jonas Schneider, and Alessandro Vesely for helpful | ||||
| suggestions. | ||||
| 12. References | 11.1. Normative References | |||
| 12.1. Normative References | [I-D.ietf-dane-ops] | |||
| Dukhovni, V. and W. Hardaker, "Updates to and Operational | ||||
| Guidance for the DANE Protocol", draft-ietf-dane-ops-07 | ||||
| (work in progress), October 2014. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | |||
| specifying the location of services (DNS SRV)", RFC 2782, | specifying the location of services (DNS SRV)", RFC 2782, | |||
| February 2000. | February 2000. | |||
| [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", RFC | Rose, "DNS Security Introduction and Requirements", RFC | |||
| skipping to change at page 10, line 10 ¶ | skipping to change at page 10, line 25 ¶ | |||
| [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Protocol Modifications for the DNS Security | Rose, "Protocol Modifications for the DNS Security | |||
| Extensions", RFC 4035, March 2005. | Extensions", RFC 4035, March 2005. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, May 2008. | (CRL) Profile", RFC 5280, May 2008. | |||
| [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | ||||
| October 2008. | ||||
| [RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
| RFC 5890, August 2010. | RFC 5890, August 2010. | |||
| [RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | [RFC6066] Eastlake, D., "Transport Layer Security (TLS) Extensions: | |||
| Extension Definitions", RFC 6066, January 2011. | Extension Definitions", RFC 6066, January 2011. | |||
| [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence | ||||
| Protocol (XMPP): Core", RFC 6120, March 2011. | ||||
| [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | |||
| Verification of Domain-Based Application Service Identity | Verification of Domain-Based Application Service Identity | |||
| within Internet Public Key Infrastructure Using X.509 | within Internet Public Key Infrastructure Using X.509 | |||
| (PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
| Security (TLS)", RFC 6125, March 2011. | Security (TLS)", RFC 6125, March 2011. | |||
| [RFC6186] Daboo, C., "Use of SRV Records for Locating Email | ||||
| Submission/Access Services", RFC 6186, March 2011. | ||||
| [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | |||
| of Named Entities (DANE) Transport Layer Security (TLS) | of Named Entities (DANE) Transport Layer Security (TLS) | |||
| Protocol: TLSA", RFC 6698, August 2012. | Protocol: TLSA", RFC 6698, August 2012. | |||
| [RFC7218] Gudmundsson, O., "Adding Acronyms to Simplify | [RFC7218] Gudmundsson, O., "Adding Acronyms to Simplify | |||
| Conversations about DNS-Based Authentication of Named | Conversations about DNS-Based Authentication of Named | |||
| Entities (DANE)", RFC 7218, April 2014. | Entities (DANE)", RFC 7218, April 2014. | |||
| 12.2. Informative References | 11.2. Informative References | |||
| [I-D.ietf-dane-smtp-with-dane] | [I-D.ietf-dane-smtp-with-dane] | |||
| Dukhovni, V. and W. Hardaker, "SMTP security via | Dukhovni, V. and W. Hardaker, "SMTP security via | |||
| opportunistic DANE TLS", draft-ietf-dane-smtp-with-dane-05 | opportunistic DANE TLS", draft-ietf-dane-smtp-with-dane-10 | |||
| (work in progress), February 2014. | (work in progress), May 2014. | |||
| [I-D.ietf-xmpp-dna] | [I-D.ietf-xmpp-dna] | |||
| Saint-Andre, P. and M. Miller, "Domain Name Associations | Saint-Andre, P. and M. Miller, "Domain Name Associations | |||
| (DNA) in the Extensible Messaging and Presence Protocol | (DNA) in the Extensible Messaging and Presence Protocol | |||
| (XMPP)", draft-ietf-xmpp-dna-05 (work in progress), | (XMPP)", draft-ietf-xmpp-dna-05 (work in progress), | |||
| February 2014. | February 2014. | |||
| [RFC3403] Mealling, M., "Dynamic Delegation Discovery System (DDDS) | [RFC3403] Mealling, M., "Dynamic Delegation Discovery System (DDDS) | |||
| Part Three: The Domain Name System (DNS) Database", RFC | Part Three: The Domain Name System (DNS) Database", RFC | |||
| 3403, October 2002. | 3403, October 2002. | |||
| [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | ||||
| October 2008. | ||||
| [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence | ||||
| Protocol (XMPP): Core", RFC 6120, March 2011. | ||||
| [RFC6186] Daboo, C., "Use of SRV Records for Locating Email | ||||
| Submission/Access Services", RFC 6186, March 2011. | ||||
| Appendix A. Examples | Appendix A. Examples | |||
| In the following, most of the DNS resource data is elided for | In the following, most of the DNS resource data is elided for | |||
| simplicity. | simplicity. | |||
| A.1. IMAP | A.1. IMAP | |||
| ; mail domain | ; mail domain | |||
| _imap._tcp.example.com. SRV 10 0 9143 imap.example.net. | _imap._tcp.example.com. SRV 10 0 9143 imap.example.net. | |||
| example.com. RRSIG SRV ... | example.com. RRSIG SRV ... | |||
| skipping to change at page 11, line 31 ¶ | skipping to change at page 11, line 46 ¶ | |||
| imap.example.net. A 192.0.2.1 | imap.example.net. A 192.0.2.1 | |||
| imap.example.net. RRSIG A ... | imap.example.net. RRSIG A ... | |||
| imap.example.net. AAAA 2001:db8:212:8::e:1 | imap.example.net. AAAA 2001:db8:212:8::e:1 | |||
| imap.example.net. RRSIG ... | imap.example.net. RRSIG ... | |||
| ; TLSA resource record | ; TLSA resource record | |||
| _9143._tcp.imap.example.net. TLSA ... | _9143._tcp.imap.example.net. TLSA ... | |||
| _9143._tcp.imap.example.net. RRSIG TLSA ... | _9143._tcp.imap.example.net. RRSIG TLSA ... | |||
| Mail messages submitted for addresses at example.com are sent via | Mail messages received for addresses at example.com are retrieved via | |||
| IMAP to imap.example.net. Connections to imap.example.net port 9143 | IMAP at imap.example.net. Connections to imap.example.net port 9143 | |||
| that use STARTTLS will get a server certificate that authenticates | that use STARTTLS will get a server certificate that authenticates | |||
| the name imap.example.net. | the name imap.example.net. | |||
| A.2. XMPP | A.2. XMPP | |||
| ; XMPP domain | ; XMPP domain | |||
| _xmpp-client.example.com. SRV 1 0 5222 im.example.net. | _xmpp-client.example.com. SRV 1 0 5222 im.example.net. | |||
| _xmpp-client.example.com. RRSIG SRV ... | _xmpp-client.example.com. RRSIG SRV ... | |||
| ; target server host name | ; target server host name | |||
| skipping to change at page 12, line 24 ¶ | skipping to change at page 12, line 41 ¶ | |||
| service domain, since this is more convenient for servers hosting | service domain, since this is more convenient for servers hosting | |||
| multiple domains (so-called "multi-tenanted environments") and scales | multiple domains (so-called "multi-tenanted environments") and scales | |||
| up more easily to larger numbers of service domains. | up more easily to larger numbers of service domains. | |||
| There are a number of other reasons for doing it this way: | There are a number of other reasons for doing it this way: | |||
| o The certificate is part of the server configuration, so it makes | o The certificate is part of the server configuration, so it makes | |||
| sense to associate it with the server host name rather than the | sense to associate it with the server host name rather than the | |||
| service domain. | service domain. | |||
| o In the absence of TLS SNI, if the certificate identifies the host | o In the absence of TLS SNI, if the certificate identifies the | |||
| name then it does not need to list all the possible service | target server host name then it does not need to list all the | |||
| domains. | possible service domains. | |||
| o When the server certificate is replaced it is much easier if there | o When the server certificate is replaced it is much easier if there | |||
| is one part of the DNS that needs updating to match, instead of an | is one part of the DNS that needs updating to match, instead of an | |||
| unbounded number of hosted service domains. | unbounded number of hosted service domains. | |||
| o The same TLSA records work with this specification, and with | o The same TLSA records work with this specification, and with | |||
| direct connections to the host name in the style of [RFC6698]. | direct connections to the connection endpoint in the style of | |||
| [RFC6698]. | ||||
| o Some application protocols, such as SMTP, allow a client to | o Some application protocols, such as SMTP, allow a client to | |||
| perform transactions with multiple service domains in the same | perform transactions with multiple service domains in the same | |||
| connection. It is not in general feasible for the client to | connection. It is not in general feasible for the client to | |||
| specify the service domain using TLS SNI when the connection is | specify the service domain using TLS SNI when the connection is | |||
| established, and the server might not be able to present a | established, and the server might not be able to present a | |||
| certificate that authenticates all possible service domains. See | certificate that authenticates all possible service domains. See | |||
| [I-D.ietf-dane-smtp-with-dane] for details. | [I-D.ietf-dane-smtp-with-dane] for details. | |||
| o It is common for SMTP servers to act in multiple roles, for | o It is common for SMTP servers to act in multiple roles, for | |||
| skipping to change at page 13, line 17 ¶ | skipping to change at page 13, line 40 ¶ | |||
| complicated criteria for when service domain TLSA records might be | complicated criteria for when service domain TLSA records might be | |||
| used and when they cannot. This is all avoided by putting the TLSA | used and when they cannot. This is all avoided by putting the TLSA | |||
| records under the target server host name. | records under the target server host name. | |||
| The disadvantage is that clients which do not complete DNSSEC | The disadvantage is that clients which do not complete DNSSEC | |||
| validation must, according to [RFC6125] rules, check the server | validation must, according to [RFC6125] rules, check the server | |||
| certificate against the service domain, since they have no other way | certificate against the service domain, since they have no other way | |||
| to authenticate the server. This means that SNI support or its | to authenticate the server. This means that SNI support or its | |||
| functional equivalent is necessary for backward compatibility. | functional equivalent is necessary for backward compatibility. | |||
| Appendix C. Acknowledgements | ||||
| Thanks to Mark Andrews for arguing that authenticating the target | ||||
| server host name is the right thing, and that we ought to rely on | ||||
| DNSSEC to secure the SRV lookup. Thanks to Stephane Bortzmeyer, | ||||
| James Cloos, Viktor Dukhovni, Ned Freed, Olafur Gudmundsson, Paul | ||||
| Hoffman, Phil Pennock, Hector Santos, Jonas Schneider, and Alessandro | ||||
| Vesely for helpful suggestions. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Tony Finch | Tony Finch | |||
| University of Cambridge Computing Service | University of Cambridge Computing Service | |||
| New Museums Site | New Museums Site | |||
| Pembroke Street | Pembroke Street | |||
| Cambridge CB2 3QH | Cambridge CB2 3QH | |||
| ENGLAND | ENGLAND | |||
| Phone: +44 797 040 1426 | Phone: +44 797 040 1426 | |||
| End of changes. 57 change blocks. | ||||
| 173 lines changed or deleted | 187 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||