| < draft-ietf-dane-srv-05.txt | draft-ietf-dane-srv-06.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: August 17, 2014 Cisco Systems, Inc. | Expires: December 12, 2014 Cisco Systems, Inc. | |||
| P. Saint-Andre | P. Saint-Andre | |||
| &yet | &yet | |||
| February 13, 2014 | June 10, 2014 | |||
| Using DNS-Based Authentication of Named Entities (DANE) TLSA records | Using DNS-Based Authentication of Named Entities (DANE) TLSA Records | |||
| with SRV and MX records. | with SRV Records | |||
| draft-ietf-dane-srv-05 | draft-ietf-dane-srv-06 | |||
| 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 in the DNS to associate a server's host name with its TLS | |||
| certificate. The association is secured with DNSSEC. Some | certificate, where the association is secured with DNSSEC. However, | |||
| application protocols use SRV records (RFC 2782) to indirectly name | application protocols that use SRV records (RFC 2782) to indirectly | |||
| the server hosts for a service domain (SMTP uses MX records for the | name the target server host names for a service domain cannot apply | |||
| same purpose). This specification gives generic instructions for how | the rules from RFC 6698. Therefore this document provides guidelines | |||
| these application protocols locate and use TLSA records when | that enable such protocols to locate and use TLSA records. | |||
| technologies such as SRV records are used. Separate documents give | ||||
| the details that are specific to particular application protocols. | ||||
| 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 August 17, 2014. | This Internet-Draft will expire on December 12, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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. Relation between SRV and MX records . . . . . . . . . . . . . 3 | 3. DNS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. DNS Checks for TLSA and SRV Records . . . . . . . . . . . . . 4 | 3.1. SRV Query . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.1. SRV Query . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Address Queries . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.2. TLSA Queries . . . . . . . . . . . . . . . . . . . . . . 5 | 3.3. TLSA Queries . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. TLS Checks for TLSA and SRV Records . . . . . . . . . . . . . 6 | 3.4. Impact on TLS Usage . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. Guidance for Application Protocols . . . . . . . . . . . . . 7 | 4. TLS Checks . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 7. Guidance for Server Operators . . . . . . . . . . . . . . . . 7 | 4.1. SRV Records Only . . . . . . . . . . . . . . . . . . . . 5 | |||
| 8. Internationalization Considerations . . . . . . . . . . . . . 8 | 4.2. TLSA Records . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 5. Guidance for Application Protocols . . . . . . . . . . . . . 7 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 6. Guidance for Server Operators . . . . . . . . . . . . . . . . 7 | |||
| 10.1. Mixed Security Status . . . . . . . . . . . . . . . . . 8 | 7. Internationalization Considerations . . . . . . . . . . . . . 8 | |||
| 10.2. A Service Domain Trusts its Servers . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 10.3. Certificate Subject Name Matching . . . . . . . . . . . 9 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | 9.1. Mixed Security Status . . . . . . . . . . . . . . . . . . 8 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9.2. A Service Domain Trusts its Servers . . . . . . . . . . . 8 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9.3. Certificate Subject Name Matching . . . . . . . . . . . . 9 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 10 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Mail Example . . . . . . . . . . . . . . . . . . . . 11 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix B. XMPP Example . . . . . . . . . . . . . . . . . . . . 11 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix C. Rationale . . . . . . . . . . . . . . . . . . . . . 12 | 11.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| A.1. IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| A.2. XMPP . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| Appendix B. Rationale . . . . . . . . . . . . . . . . . . . . . 12 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 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 in the DNS to associate a server's host name with | |||
| its TLS certificate. The association is secured using DNSSEC. That | its TLS certificate, where the association is secured using DNSSEC. | |||
| document "only relates to securely associating certificates for TLS | That document "only relates to securely associating certificates for | |||
| and DTLS with host names" (see the last paragraph of section 1.2 of | TLS and DTLS with host names" (see the last paragraph of section 1.2 | |||
| [RFC6698]). | of [RFC6698]). | |||
| Some application protocols do not use host names directly; instead, | Some application protocols do not use host names directly; instead, | |||
| they use a service domain and the relevant host names are located | they use a service domain, and the relevant target server host names | |||
| indirectly via SRV records [RFC2782], or MX records in the case of | are located indirectly via SRV records [RFC2782]. Because of this | |||
| SMTP [RFC5321] (Note: in the "CertID" specification [RFC6125], the | intermediate resolution step, the normal DANE rules specified in | |||
| source domain and host name are referred to as the "source domain" | [RFC6698] cannot be applied to protocols that use SRV records. | |||
| and the "derived domain"). Because of this intermediate resolution | (Rules for SMTP [RFC5321], which uses MX records instead of SRV | |||
| step, the normal DANE rules specified in [RFC6698] do not directly | records, are described in [I-D.ietf-dane-smtp-with-dane].) | |||
| apply to protocols that use SRV or MX records. | ||||
| This document describes how to use DANE TLSA records with SRV and MX | 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 the association between the service | |||
| domain and the target server host names (i.e., the host names that | domain and the target server host names (i.e., the host names that | |||
| are discovered by the SRV or MX query). | are discovered by the SRV query). | |||
| o The TLSA records are located using the port, protocol, and target | o The TLSA records are located using the port, protocol, and target | |||
| host name fields (not the service domain). | server host name fields (not the service domain). | |||
| o Clients always use TLS when connecting to servers with TLSA | o Clients always use TLS when connecting to servers with TLSA | |||
| records. | records. | |||
| o Assuming that the association is secure, the server's certificate | o Assuming that the association is secure, the server's certificate | |||
| is expected to authenticate the target server host name, rather | is expected to authenticate the target server host name, rather | |||
| than the service domain. | than the service domain. | |||
| Separate documents give the details that are specific to particular | Note: The "CertID" specification [RFC6125] does not use the terms | |||
| application protocols, such as SMTP [I-D.ietf-dane-smtp-with-dane] | "service domain" and "target server host name", but refers to the | |||
| and XMPP [I-D.ietf-xmpp-dna]. | same entities with the terms "source domain" and "derived domain". | |||
| 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 [RFC4033]. This draft uses the acronyms | |||
| from [I-D.ietf-dane-registry-acronyms] for the values of TLSA fields | from [RFC7218] for the values of TLSA fields where appropriate. | |||
| where appropriate. | ||||
| 3. Relation between SRV and MX records | ||||
| For the purpose of this specification (to avoid cluttering the | ||||
| description with special cases) we treat each MX record ([RFC5321] | ||||
| section 5) as being equivalent to an SRV record [RFC2782] with | ||||
| corresponding fields copied from the MX record and the remaining | ||||
| fields having fixed values as follows: | ||||
| Table 1: SRV Fields and MX Equivalents | ||||
| +---------------+-----------------------------+ | ||||
| | DNS SRV Field | Equivalent MX Value | | ||||
| +---------------+-----------------------------+ | ||||
| | Service | smtp | | ||||
| +---------------+-----------------------------+ | ||||
| | Proto | tcp | | ||||
| +---------------+-----------------------------+ | ||||
| | Name | MX owner name (mail domain) | | ||||
| +---------------+-----------------------------+ | ||||
| | TTL | MX TTL | | ||||
| +---------------+-----------------------------+ | ||||
| | Class | MX Class | | ||||
| +---------------+-----------------------------+ | ||||
| | Priority | MX Priority | | ||||
| +---------------+-----------------------------+ | ||||
| | Weight | 0 | | ||||
| +---------------+-----------------------------+ | ||||
| | Port | 25 | | ||||
| +---------------+-----------------------------+ | ||||
| | Target | MX Target | | ||||
| +---------------+-----------------------------+ | ||||
| Thus we can treat the following MX record as if it were the SRV | ||||
| record shown below: | ||||
| example.com. 86400 IN MX 10 mx.example.net. | ||||
| _smtp._tcp.example.com. 86400 IN SRV 10 0 25 mx.example.net. | ||||
| Other details that are specific to SMTP are described in | 3. DNS Checks | |||
| [I-D.ietf-dane-smtp-with-dane]. | ||||
| 4. DNS Checks for TLSA and SRV Records | To expedite connection to the intended service, where possible the | |||
| queries described in the following sections SHOULD be performed in | ||||
| parallel (this is similar to the "happy eyeballs" approach for IPv4 | ||||
| and IPv6 connections described in [RFC6555]). | ||||
| 4.1. SRV Query | 3.1. SRV Query | |||
| When the client makes an SRV query, a successful result will be a | When the client makes an SRV query, a successful result will | |||
| list of one or more SRV records (or possibly a chain of CNAME / DNAME | typically be a list of one or more SRV records (or possibly a chain | |||
| aliases referring to such a list). | of CNAME / DNAME aliases leading to such a list). | |||
| For this specification to apply, all of these DNS RRsets MUST be | For this specification to apply, the entire DNS RRset that is | |||
| "secure" according to DNSSSEC validation ([RFC4033] section 5). In | returned MUST be "secure" according to DNSSSEC validation ([RFC4033] | |||
| the case of aliases, the whole chain of CNAME and DNAME RRsets MUST | section 5). In the case of aliases, the whole chain of CNAME and | |||
| be secure as well. This corresponds to the AD bit being set in the | DNAME RRsets MUST be secure as well. This corresponds to the AD bit | |||
| response(s); see [RFC4035] section 3.2.3. | being set in the response(s); see [RFC4035] section 3.2.3. | |||
| If they are not all secure, this protocol has not been correctly | If the the entire RRset is not secure, this protocol has not been | |||
| deployed. The client SHOULD fall back to its non-DNSSEC non-DANE | correctly deployed. The client SHOULD fall back to its non-DNSSEC, | |||
| behavior (this corresponds to the AD bit being unset). | non-DANE behavior (this corresponds to the AD bit being unset). | |||
| If any of the responses are "bogus" or "indeterminate" according to | If a particular response is "bogus" or "indeterminate" according to | |||
| DNSSEC validation, the client MUST abort (This usually corresponds to | DNSSEC validation, the client MUST ignore that target server host | |||
| a "server failure" response). | name. | |||
| In the successful case, the client now has an authentic list of | In the successful case, the client now has an authentic list of | |||
| server host names with weight and priority values. It performs | target server host names with weight and priority values. It | |||
| server ordering and selection using the weight and priority values | performs server ordering and selection using the weight and priority | |||
| without regard to the presence or absence of DNSSEC or TLSA records. | values without regard to the presence or absence of DNSSEC or TLSA | |||
| It takes note of the DNSSEC validation status of the SRV response for | records. It also takes note of the DNSSEC validation status of the | |||
| use when checking certificate names (see Section 5). | SRV response for use when checking certificate names (see Section 4). | |||
| The client can now proceed to making address queries on the target | ||||
| server host names as described in the next section. | ||||
| 4.2. TLSA Queries | 3.2. Address Queries | |||
| If the SRV response was insecure, the client MUST NOT perform any | For each SRV target server host name, the client makes A / AAAA | |||
| TLSA queries. If the SRV response is "secure" according to DNSSEC | queries, performs DNSSEC validation on the address (A, AAAA) | |||
| validation, the client performs a TLSA query for each SRV target as | response, and continues as follows based on the results: | |||
| described in this section. | ||||
| For each SRV target host name, the client performs DNSSEC validation | o If the response is "secure" and usable, the client MUST perform a | |||
| on the address (A, AAAA) response and continues based on the results: | TLSA query for that target server host name as described in the | |||
| next section. | ||||
| o if the response is "insecure", the client MUST NOT perform a TLSA | o If the response is "insecure", the client MUST NOT perform a TLSA | |||
| query for that target; the TLSA query will most likely fail. | query for that target server host name; the TLSA query will most | |||
| likely fail. | ||||
| o If the response is "bogus" or "indeterminate", the client MUST NOT | o If the response is "bogus" or "indeterminate", the client MUST NOT | |||
| connect to this host name; instead it uses the next most | connect to this target server; instead it uses the next most | |||
| appropriate SRV target. | appropriate SRV target. | |||
| 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 | [RFC6698] section 3, based on fields from the SRV record: the port | |||
| from the SRV RDATA, the protocol from the SRV query name, and the | from the SRV RDATA, the protocol from the SRV query name, and the | |||
| TLSA base domain set to the SRV target host name. | TLSA base domain set to the SRV target server host name. | |||
| For example, the following SRV record leads to the TLSA query shown | For example, the following SRV record for IMAP (see [RFC6186]) leads | |||
| below: | to the TLSA query shown below: | |||
| _imap._tcp.example.com. 86400 IN SRV 10 0 143 imap.example.net. | _imap._tcp.example.com. 86400 IN SRV 10 0 9143 imap.example.net. | |||
| _143._tcp.imap.example.net. IN TLSA ? | _9143._tcp.imap.example.net. IN TLSA ? | |||
| The client SHALL determine if the TLSA record(s) are usable according | 3.4. Impact on TLS Usage | |||
| to section 4.1 of [RFC6698]. This affects SRV handling as follows: | ||||
| If the TLSA response is "secure", the client MUST use TLS when | The client SHALL determine if the TLSA record(s) returned in the | |||
| connecting to the server. The TLSA records are used when validating | previous step are usable according to section 4.1 of [RFC6698]. This | |||
| the server's certificate as described under Section 5. | affects the use TLS as follows: | |||
| If the TLSA response is "insecure", the client SHALL proceed as if | o If the TLSA response is "secure" and usable, then the client MUST | |||
| this server has no TLSA records. It MAY connect to the server with | use TLS when connecting to the target server. The TLSA records | |||
| or without TLS. | are used when validating the server's certificate as described | |||
| under Section 4. | ||||
| If the TLSA response is "bogus" or "indeterminate", then the client | o If the TLSA response is "insecure", then the client SHALL proceed | |||
| MUST NOT connect to this server (the client can still use other SRV | as if the target server had no TLSA records. It MAY connect to | |||
| targets). | the target server with or without TLS, subject to the policies of | |||
| the application protocol or client implementation. | ||||
| 5. TLS Checks for TLSA and SRV Records | o If the TLSA response is "bogus" or "indeterminate", then the | |||
| client MUST NOT connect to the target server (the client can still | ||||
| use other SRV targets). | ||||
| 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. If the | to the SRV and TLSA queries were "secure" as described above. The | |||
| client received zero usable TLSA certificate associations, it SHALL | rules described in the next two sections apply. | |||
| validate the server's TLS certificate using the normal PKIX rules | ||||
| [RFC5280] or protocol-specific rules (e.g., following [RFC6125]) | ||||
| without further input from the TLSA records. If the client received | ||||
| one or more usable TLSA certificate associations, it SHALL process | ||||
| them as described in [RFC6698] section 2.1. | ||||
| If the TLS server's certificate -- or the public key of the server's | 4.1. SRV Records Only | |||
| certificate -- matches a usable TLSA record with Certificate Usage | ||||
| "DANE-EE", the client MUST consider the server to be authenticated. | ||||
| Because the information in such a TLSA record supersedes the non-key | ||||
| information in the certificate, all other [RFC5280] and [RFC6125] | ||||
| authentication checks (e.g., reference identifier, key usage, | ||||
| expiration, issuance, etc.) MUST be ignored or omitted. | ||||
| Otherwise, the client uses the information in the server certificate | If the client received zero usable TLSA certificate associations, it | |||
| and DNSSEC validation status of the SRV query in its authentication | SHALL validate the server's TLS certificate using the normal PKIX | |||
| checks. It SHOULD use the Server Name Indication extension (TLS SNI) | rules [RFC5280] or protocol-specific rules (e.g., following | |||
| [RFC6066] or its functional equivalent in the relevant application | [RFC6125]) without further input from the TLSA records. | |||
| protocol (e.g., in XMPP [RFC6120] this is the 'to' address of the | ||||
| initial stream header). The preferred name SHALL be chosen as | In this case, the client uses the information in the server | |||
| follows, and the client SHALL verify the identity asserted by the | certificate and the DNSSEC validation status of the SRV query in its | |||
| server's certificate according to [RFC6125] section 6, using a list | authentication checks. It SHOULD use the Server Name Indication | |||
| of reference identifiers constructed as follows (note again that in | extension (TLS SNI) [RFC6066] or its functional equivalent in the | |||
| RFC 6125 the terms "source domain" and "derived domain" refer to the | relevant application protocol (e.g., in XMPP [RFC6120] this is the | |||
| same things as "service domain" and "target host name" in this | 'to' address of the initial stream header). The preferred name SHALL | |||
| document). | be chosen as follows, and the client SHALL verify the identity | |||
| asserted by the server's certificate according to section 6 of | ||||
| [RFC6125], using a list of reference identifiers constructed as | ||||
| follows (note again that in RFC 6125 the terms "source domain" and | ||||
| "derived domain" refer to the same things as "service domain" and | ||||
| "target server host name" in this document). The examples below | ||||
| 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 host name. The service | domain and MUST NOT include the SRV target server host name (e.g., | |||
| domain is the preferred name for TLS SNI or its equivalent. | include "im.example.com" but not "xmpp23.hosting.example.net"). | |||
| The service domain is the preferred name for TLS SNI or its | ||||
| 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 host name. The target host name | service domain and the SRV target server host name (e.g., include | |||
| is the preferred name for TLS SNI or its equivalent. | both "im.example.com" and "xmpp23.hosting.example.net"). The | |||
| target server host name is the preferred name for TLS SNI or its | ||||
| equivalent. | ||||
| In the latter case, the client will accept either identity so that it | In the latter case, the client will accept either identity to ensure | |||
| is compatible with servers that do and do not support this | compatibility with servers that support this specification as well as | |||
| specification. | servers that do not support this specification. | |||
| 6. Guidance for Application Protocols | 4.2. TLSA Records | |||
| Separate documents describe how to apply this specification to | If the client received one or more usable TLSA certificate | |||
| particular application protocols. Such documents ought to cover the | associations, it SHALL process them as described in section 2.1 of | |||
| following points: | [RFC6698]. | |||
| o Fallback logic in the event of bogus replies and the like. | If the TLS server's certificate -- or the public key of the server's | |||
| certificate -- matches a usable TLSA record with Certificate Usage | ||||
| "DANE-EE", the client MUST consider the server to be authenticated. | ||||
| Because the information in such a TLSA record supersedes the non-key | ||||
| information in the certificate, all other [RFC5280] and [RFC6125] | ||||
| authentication checks (e.g., reference identifier, key usage, | ||||
| expiration, issuance) MUST be ignored or omitted. | ||||
| o The use of TLS SNI or its functional equivalent. | 5. Guidance for Application Protocols | |||
| o Appropriate mappings for non-SRV technologies such as MX. | This document describes how to use DANE with application protocols in | |||
| which target servers are discovered via SRV records. Although this | ||||
| document attempts to provide generic guidance applying to all such | ||||
| protocols, additional documents for particular application protocols | ||||
| could cover related topics, such as: | ||||
| o Compatibility with clients that do not support SRV lookups. | o Fallback logic in the event that a client is unable to connect | |||
| securely to a target server by following the procedures defined in | ||||
| this document. | ||||
| 7. Guidance for Server Operators | o How clients ought to behave if they do not support SRV lookups, or | |||
| if clients that support SRV lookups encounter service domains that | ||||
| do not offer SRV records. | ||||
| o Whether the application protocol has a functional equivalent for | ||||
| TLS SNI that is preferred within that protocol. | ||||
| For example, [I-D.ietf-xmpp-dna] covers such topics for the | ||||
| Extensible Messaging and Presence Protocol (XMPP). | ||||
| 6. Guidance for Server Operators | ||||
| To conform to this specification, the published SRV records and | To conform to this specification, the published SRV records and | |||
| subsequent address (A, AAAA) records MUST be secured with DNSSEC. | subsequent address (A, AAAA) records MUST be secured with DNSSEC. | |||
| There SHOULD also be at least one TLSA record published that | There SHOULD also be at least one TLSA record published that | |||
| authenticates the server's certificate. | authenticates the server's certificate. | |||
| When using TLSA records with Certificate Usage "DANE-EE", the | When using TLSA records with Certificate Usage "DANE-EE", it is not | |||
| deployed certificate does not need to contain any of the possible | necessary for the deployed certificate to contain an identifier for | |||
| reference identifiers discussed below. Indeed, none of the | either the source domain or target server host name. However, | |||
| certificate's information is necessary for such certificates. | servers that rely solely on validation using Certificate Usage "DANE- | |||
| However, servers that rely solely on validation using Certificate | EE" TLSA records might prevent clients that do not support this | |||
| Usage "DANE-EE" TLSA records might prevent clients that do not | specification from successfully connecting with TLS. | |||
| support this specification from successfully connecting 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 a reference 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 server host name (the "derived domain" in [RFC6125] terms, | o the target server host name (the "derived domain" in [RFC6125] | |||
| which is the SRV target). | terms, which is the SRV target). | |||
| Servers that support multiple service domains (i.e., multi-tenant) | Servers that support multiple service domains (i.e., so-called | |||
| can implement Server Name Indicator (TLS SNI) [RFC6066] or its | "multi-tenanted environments") can implement the Transport Layer | |||
| functional equivalent to determine which certificate to offer. | Security Server Name Indication (TLS SNI) [RFC6066] or its functional | |||
| Clients that do not support this specification will indicate a | equivalent to determine which certificate to offer. Clients that do | |||
| preference for the service domain name, while clients that support | not support this specification will indicate a preference for the | |||
| this specification will indicate the server host name. However, the | service domain name, while clients that support this specification | |||
| server determines what certificate to present in the TLS handshake; | will indicate the target server host name. However, the server | |||
| e.g., the presented certificate might only authenticate the server | determines what certificate to present in the TLS handshake; e.g., | |||
| the presented certificate might only authenticate the target server | ||||
| host name. | host name. | |||
| 8. Internationalization Considerations | 7. 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 | 8. IANA Considerations | |||
| No IANA action is required. | No IANA action is required. | |||
| 10. Security Considerations | 9. Security Considerations | |||
| 10.1. Mixed Security Status | 9.1. Mixed Security Status | |||
| We do not specify that clients checking all of a service domain's | We do not specify that clients checking all of a service domain's | |||
| server host names are consistent in whether they have or do not have | target server host names are consistent in whether they have or do | |||
| TLSA records. This is so that partial or incremental deployment does | not have TLSA records. This is so that partial or incremental | |||
| not break the service. Different levels of deployment are likely if | deployment does not break the service. Different levels of | |||
| a service domain has a third-party fallback server, for example. | deployment are likely if a service domain has a third-party fallback | |||
| server, for example. | ||||
| The SRV and MX sorting rules are unchanged; in particular they have | The SRV sorting rules are unchanged; in particular they have not been | |||
| not been altered in order to prioritize secure servers over insecure | altered in order to prioritize secure servers over insecure servers. | |||
| servers. If a site wants to be secure it needs to deploy this | If a site wants to be secure it needs to deploy this protocol | |||
| protocol completely; a partial deployment is not secure and we make | completely; a partial deployment is not secure and we make no special | |||
| no special effort to support it. | effort to support it. | |||
| 10.2. A Service Domain Trusts its Servers | 9.2. A Service Domain Trusts its Servers | |||
| By signing their zone with DNSSEC, service domain operators | By signing their zone with DNSSEC, service domain operators | |||
| implicitly instruct their clients to check their server TLSA records. | implicitly instruct their clients to check their server TLSA records. | |||
| This implies another point in the trust relationship between service | This implies another point in the trust relationship between service | |||
| domain holders and their server operators. Most of the setup | domain holders and their server operators. Most of the setup | |||
| requirements for this protocol fall on the server operator: | requirements for this protocol fall on the server operator: | |||
| installing a TLS certificate with the correct name (where necessary), | installing a TLS certificate with the correct name (where necessary), | |||
| and publishing a TLSA record for that certificate. If these are not | and publishing a TLSA record for that certificate. If these are not | |||
| correct then connections from TLSA-aware clients might fail. | correct then connections from TLSA-aware clients might fail. | |||
| 10.3. Certificate Subject Name Matching | 9.3. 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 the certificate was issued | expected reference identifiers to ensure that the certificate was | |||
| by the CA to the server the client expects. | issued by the CA to the server the client expects. | |||
| 11. Acknowledgements | 10. Acknowledgements | |||
| Thanks to Mark Andrews for arguing that authenticating the server | Thanks to Mark Andrews for arguing that authenticating the target | |||
| host name is the right thing, and that we ought to rely on DNSSEC to | server host name is the right thing, and that we ought to rely on | |||
| secure the SRV / MX lookup. Thanks to James Cloos, Viktor Dukhovni, | DNSSEC to secure the SRV lookup. Thanks to James Cloos, Viktor | |||
| Ned Freed, Olafur Gudmundsson, Paul Hoffman, Phil Pennock, Hector | Dukhovni, Ned Freed, Olafur Gudmundsson, Paul Hoffman, Phil Pennock, | |||
| Santos, Jonas Schneider, and Alessandro Vesely for helpful | Hector Santos, Jonas Schneider, and Alessandro Vesely for helpful | |||
| suggestions. | suggestions. | |||
| 12. References | 11. References | |||
| 12.1. Normative References | ||||
| [I-D.ietf-dane-registry-acronyms] | 11.1. Normative References | |||
| Gudmundsson, O., "Adding acronyms to simplify DANE | ||||
| conversations", draft-ietf-dane-registry-acronyms-03 (work | ||||
| in progress), January 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 37 ¶ | skipping to change at page 10, line 29 ¶ | |||
| [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence | [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence | |||
| Protocol (XMPP): Core", RFC 6120, March 2011. | 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. | |||
| 12.2. Informative References | [RFC7218] Gudmundsson, O., "Adding Acronyms to Simplify | |||
| Conversations about DNS-Based Authentication of Named | ||||
| Entities (DANE)", RFC 7218, April 2014. | ||||
| 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-05 | |||
| (work in progress), February 2014. | (work in progress), February 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. | |||
| Appendix A. Mail Example | [RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with | |||
| Dual-Stack Hosts", RFC 6555, April 2012. | ||||
| 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 | ||||
| ; mail domain | ; mail domain | |||
| example.com. MX 1 mx.example.net. | _imap._tcp.example.com. SRV 10 0 9143 imap.example.net. | |||
| example.com. RRSIG MX ... | example.com. RRSIG SRV ... | |||
| ; SMTP server host name | ; target server host name | |||
| mx.example.net. A 192.0.2.1 | imap.example.net. A 192.0.2.1 | |||
| mx.example.net. RRSIG A ... | imap.example.net. RRSIG A ... | |||
| mx.example.net. AAAA 2001:db8:212:8::e:1 | imap.example.net. AAAA 2001:db8:212:8::e:1 | |||
| mx.example.net. RRSIG ... | imap.example.net. RRSIG ... | |||
| ; TLSA resource record | ; TLSA resource record | |||
| _25._tcp.mx.example.net. TLSA ... | _9143._tcp.imap.example.net. TLSA ... | |||
| _25._tcp.mx.example.net. RRSIG TLSA ... | _9143._tcp.imap.example.net. RRSIG TLSA ... | |||
| Mail for addresses at example.com is delivered by SMTP to | ||||
| mx.example.net. Connections to mx.example.net port 25 that use | ||||
| STARTTLS will get a server certificate that authenticates the name | ||||
| mx.example.net. | ||||
| Appendix B. XMPP Example | Mail messages submitted for addresses at example.com are sent via | |||
| IMAP to imap.example.net. Connections to imap.example.net port 9143 | ||||
| that use STARTTLS will get a server certificate that authenticates | ||||
| the name imap.example.net. | ||||
| In the following, most of the DNS resource data is elided for | A.2. XMPP | |||
| simplicity. | ||||
| ; 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 ... | |||
| ; XMPP server host name | ; target server host name | |||
| im.example.net. A 192.0.2.3 | im.example.net. A 192.0.2.3 | |||
| im.example.net. RRSIG A ... | im.example.net. RRSIG A ... | |||
| im.example.net. AAAA 2001:db8:212:8::e:4 | im.example.net. AAAA 2001:db8:212:8::e:4 | |||
| im.example.net. RRSIG AAAA ... | im.example.net. RRSIG AAAA ... | |||
| ; TLSA resource record | ; TLSA resource record | |||
| _5222._tcp.im.example.net. TLSA ... | _5222._tcp.im.example.net. TLSA ... | |||
| _5222._tcp.im.example.net. RRSIG TLSA ... | _5222._tcp.im.example.net. RRSIG TLSA ... | |||
| XMPP sessions for addresses at example.com are established at | XMPP sessions for addresses at example.com are established at | |||
| im.example.net. Connections to im.example.net port 5222 that use | im.example.net. Connections to im.example.net port 5222 that use | |||
| STARTTLS will get a server certificate that authenticates the name | STARTTLS will get a server certificate that authenticates the name | |||
| im.example.net. | im.example.net. | |||
| Appendix C. Rationale | Appendix B. Rationale | |||
| The long-term goal of this specification is to settle on TLS | The long-term goal of this specification is to settle on TLS | |||
| certificates that verify the server host name rather than the service | certificates that verify the target server host name rather than the | |||
| domain, since this is more convenient for servers hosting multiple | service domain, since this is more convenient for servers hosting | |||
| domains (so-called "multi-tenanted environments") and scales up more | multiple domains (so-called "multi-tenanted environments") and scales | |||
| 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 host | |||
| name then it does not need to list all the possible service | name then it does not need to list all the possible service | |||
| domains. | domains. | |||
| skipping to change at page 12, line 40 ¶ | skipping to change at page 12, line 40 ¶ | |||
| 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 host name 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. | certificate that authenticates all possible service domains. See | |||
| [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 | |||
| example as outgoing relays or as incoming MX servers, depending on | example as outgoing relays or as incoming MX servers, depending on | |||
| the client identity. It is simpler if the server can present the | the client identity. It is simpler if the server can present the | |||
| same certificate regardless of the role in which it is to act. | same certificate regardless of the role in which it is to act. | |||
| Sometimes the server does not know its role until the client has | Sometimes the server does not know its role until the client has | |||
| authenticated, which usually occurs after TLS has been | authenticated, which usually occurs after TLS has been | |||
| established. | established. See [I-D.ietf-dane-smtp-with-dane] for details. | |||
| This specification does not provide an option to put TLSA records | This specification does not provide an option to put TLSA records | |||
| under the service domain because that would add complexity without | under the service domain because that would add complexity without | |||
| providing any benefit, and security protocols are best kept simple. | providing any benefit, and security protocols are best kept simple. | |||
| As described above, there are real-world cases where authenticating | As described above, there are real-world cases where authenticating | |||
| the service domain cannot be made to work, so there would be | the service domain cannot be made to work, so there would be | |||
| 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 server host name. | records under the target server host name. | |||
| The disadvantage is that clients which do not do DNSSEC validation | The disadvantage is that clients which do not complete DNSSEC | |||
| must, according to [RFC6125] rules, check the server certificate | validation must, according to [RFC6125] rules, check the server | |||
| against the service domain, since they have no other way to | certificate against the service domain, since they have no other way | |||
| 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. | |||
| 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 | |||
| skipping to change at page 14, line 4 ¶ | skipping to change at page 13, line 37 ¶ | |||
| Email: dot@dotat.at | Email: dot@dotat.at | |||
| URI: http://dotat.at/ | URI: http://dotat.at/ | |||
| Matthew Miller | Matthew Miller | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 1899 Wynkoop Street, Suite 600 | 1899 Wynkoop Street, Suite 600 | |||
| Denver, CO 80202 | Denver, CO 80202 | |||
| USA | USA | |||
| Email: mamille2@cisco.com | Email: mamille2@cisco.com | |||
| Peter Saint-Andre | Peter Saint-Andre | |||
| &yet | &yet | |||
| P.O. Box 787 | ||||
| Parker, CO 80134 | ||||
| USA | ||||
| Email: ietf@stpeter.im | Email: peter@andyet.com | |||
| End of changes. 87 change blocks. | ||||
| 265 lines changed or deleted | 270 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/ | ||||