draft-ietf-regext-dnsoperator-to-rrr-protocol-03.txt | draft-ietf-regext-dnsoperator-to-rrr-protocol-04.txt | |||
---|---|---|---|---|
regext J. Latour | regext J. Latour | |||
Internet-Draft CIRA | Internet-Draft CIRA | |||
Intended status: Standards Track O. Gudmundsson | Intended status: Standards Track O. Gudmundsson | |||
Expires: September 13, 2017 Cloudflare, Inc. | Expires: March 16, 2018 Cloudflare, Inc. | |||
P. Wouters | P. Wouters | |||
Red Hat | Red Hat | |||
M. Pounsett | M. Pounsett | |||
Rightside Group, Ltd. | Rightside Group, Ltd. | |||
March 12, 2017 | September 12, 2017 | |||
Third Party DNS operator to Registrars/Registries Protocol | Third Party DNS operator to Registrars/Registries Protocol | |||
draft-ietf-regext-dnsoperator-to-rrr-protocol-03.txt | draft-ietf-regext-dnsoperator-to-rrr-protocol-04 | |||
Abstract | Abstract | |||
There are several problems that arise in the standard | There are several problems that arise in the standard | |||
Registrant/Registrar/Registry model when the operator of a zone is | Registrant/Registrar/Registry model when the operator of a zone is | |||
neither the Registrant nor the Registrar for the delegation. | neither the Registrant nor the Registrar for the delegation. | |||
Historically the issues have been minor, and limited to difficulty | Historically the issues have been minor, and limited to difficulty | |||
guiding the Registrant through the initial changes to the NS records | guiding the Registrant through the initial changes to the NS records | |||
for the delegation. As this is usually a one time activity when the | for the delegation. As this is usually a one time activity when the | |||
operator first takes charge of the zone it has not been treated as a | operator first takes charge of the zone it has not been treated as a | |||
serious issue. | serious issue. | |||
When the domain uses DNSSEC it necessary to make regular (sometimes | When the domain uses DNSSEC it necessary to make regular (sometimes | |||
annual) changes to the delegation, updating DS record(s) in order to | annual) changes to the delegation, updating DS record(s) in order to | |||
track KSK rollover. Under the current model this is prone to delays | track KSK rollover. Under the current model this is prone to delays | |||
and errors, as the Registrant must participate in updates to DS | and errors, as the Registrant must participate in updates to DS | |||
records. | records. | |||
This document describes a simple protocol that allows a third party | This document describes a simple protocol that allows a third party | |||
DNS operator to update DS records for a delegation, in a trusted | DNS operator to: establish the initial chain of trust (bootstrap | |||
manner, without involving the Registrant for each operation. This | DNSSEC) for a delegation; update DS records for a delegation; and, | |||
same protocol can be used by Registrants. | remove DS records from a secure delegation. The DNS operator may do | |||
these things in a trusted manner, without involving the Registrant | ||||
for each operation. This same protocol can be used by Registrants to | ||||
maintain their own domains if they wish. | ||||
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 https://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 September 13, 2017. | This Internet-Draft will expire on March 16, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | (https://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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Notional Conventions . . . . . . . . . . . . . . . . . . . . 4 | 2. Notional Conventions . . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.2. RFC2119 Keywords . . . . . . . . . . . . . . . . . . . . 4 | 2.2. RFC2119 Keywords . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Process Overview . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Process Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Identifying the Registrar . . . . . . . . . . . . . . . . 4 | 3.1. Identifying the Registration Entity . . . . . . . . . . . 4 | |||
3.2. Establishing a Chain of Trust . . . . . . . . . . . . . . 5 | 3.2. Establishing a Chain of Trust . . . . . . . . . . . . . . 5 | |||
3.3. Maintaining the Chain of Trust . . . . . . . . . . . . . 5 | 3.3. Maintaining the Chain of Trust . . . . . . . . . . . . . 5 | |||
3.4. Other Delegation Maintenance . . . . . . . . . . . . . . 5 | 3.4. Acceptance Processing . . . . . . . . . . . . . . . . . . 6 | |||
3.5. Acceptance Processing . . . . . . . . . . . . . . . . . . 5 | 3.5. Bootstrapping DNSSEC . . . . . . . . . . . . . . . . . . 6 | |||
4. API Definition . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. API Definition . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.1. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Authentication . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2. RESTful Resources . . . . . . . . . . . . . . . . . . . . 7 | 4.2. RESTful Resources . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.1. CDS resource . . . . . . . . . . . . . . . . . . . . 7 | 4.2.1. CDS resource . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.2. Token resource . . . . . . . . . . . . . . . . . . . 9 | 4.2.2. Token resource . . . . . . . . . . . . . . . . . . . 10 | |||
4.3. Customized Error Messages . . . . . . . . . . . . . . . . 10 | 4.3. Customized Error Messages . . . . . . . . . . . . . . . . 11 | |||
5. Security considerations . . . . . . . . . . . . . . . . . . . 10 | 5. Security considerations . . . . . . . . . . . . . . . . . . . 11 | |||
6. IANA Actions . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. IANA Actions . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
7. Internationalization Considerations . . . . . . . . . . . . . 11 | 7. Internationalization Considerations . . . . . . . . . . . . . 11 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 11 | 8.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
Appendix A. Document History . . . . . . . . . . . . . . . . . . 12 | Appendix A. Document History . . . . . . . . . . . . . . . . . . 13 | |||
A.1. regext Version 03 . . . . . . . . . . . . . . . . . . . . 12 | A.1. regext Version 04 . . . . . . . . . . . . . . . . . . . . 13 | |||
A.2. regext Version 02 . . . . . . . . . . . . . . . . . . . . 13 | A.2. regext Version 03 . . . . . . . . . . . . . . . . . . . . 13 | |||
A.3. regext Version 01 . . . . . . . . . . . . . . . . . . . . 13 | A.3. regext Version 02 . . . . . . . . . . . . . . . . . . . . 13 | |||
A.4. regext Version 00 . . . . . . . . . . . . . . . . . . . . 13 | A.4. regext Version 01 . . . . . . . . . . . . . . . . . . . . 14 | |||
A.5. Version 03 . . . . . . . . . . . . . . . . . . . . . . . 13 | A.5. regext Version 00 . . . . . . . . . . . . . . . . . . . . 14 | |||
A.6. Version 02 . . . . . . . . . . . . . . . . . . . . . . . 13 | A.6. Version 03 . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
A.7. Version 01 . . . . . . . . . . . . . . . . . . . . . . . 13 | A.7. Version 02 . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
A.8. Version 00 . . . . . . . . . . . . . . . . . . . . . . . 13 | A.8. Version 01 . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | A.9. Version 00 . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
After a domain has been registered, one of three parties will | After a domain has been registered, one of three parties will | |||
maintain the DNS zone loaded on the "primary" DNS servers: the | maintain the DNS zone loaded on the "primary" DNS servers: the | |||
Registrant, the Registrar, or a third party DNS operator. DNS | Registrant, the Registrar, or a third party DNS operator. DNS | |||
registration systems were originally designed around making | registration systems were originally designed around making | |||
registrations easy and fast, however after registration the | registrations easy and fast, however after registration the | |||
complexity of making changes to the delegation differs for each of | complexity of making changes to the delegation differs for each of | |||
these parties. The Registrar can make changes directly in the | these parties. The Registrar can make changes directly in the | |||
Registry systems through some API (typically EPP [RFC5730]). The | Registry systems through some API (typically EPP [RFC5730]). The | |||
Registrant is typically limited to using a web interface supplied by | Registrant is typically limited to using a web interface supplied by | |||
the Registrar. A third party DNS Operator must to go through the | the Registrar or Reseller. Typically, a third party DNS Operator | |||
Registrant to update any delegation information. | must to go through the Registrant to update any delegation | |||
information. | ||||
In this last case, the operator must contact and engage the | Unless the responsible Registration Entity is scanning child zones | |||
Registrant in updating NS and DS records for the delegation. New | for CDS records in order to bootstrap or update DNSSEC, the operator | |||
information must be communicated to the Registrant, who must submit | must contact and engage the Registrant in updating DS records for the | |||
that information to the Registrar. Typically this involves cutting | delegation. New information must be communicated to the Registrant, | |||
and pasting between email and a web interface, which is error prone. | who must submit that information to the Registrar. Typically this | |||
Furthermore, involving Registrants in this way does not scale for | involves cutting and pasting between email and a web interface, which | |||
even moderately sized DNS operators. Tracking thousands (or | is error prone. Furthermore, involving Registrants in this way does | |||
millions) of changes sent to customers, and following up if those | not scale for even moderately sized DNS operators. Tracking | |||
changes are not submitted to the Registrar, or are submitted with | thousands (or millions) of changes sent to customers, and following | |||
errors, is itself expensive and error prone. | up if those changes are not submitted to the Registrar, or are | |||
submitted with errors, is itself expensive and error prone. | ||||
The current system does not work well, as there are many types of | The current system does not work well, as there are many types of | |||
failures that have been reported at all levels in the registration | failures that have been reported at all levels in the registration | |||
model. The failures result in either the inability to use DNSSEC or | model. The failures result in either the inability to use DNSSEC or | |||
in validation failures that cause the domain to become unavailable to | in validation failures that cause the domain to become unavailable to | |||
users behind validating resolvers. | users behind validating resolvers. | |||
The goal of this document is to create a protocol for establishing a | The goal of this document is to create a protocol for establishing a | |||
secure chain of trust that involves parties not in the traditional | secure chain of trust that involves parties not in the traditional | |||
Registrant/Registrar/Registry (RRR) model, and to reduce the friction | Registrant/Registrar/Registry (RRR) model, and to reduce the friction | |||
skipping to change at page 4, line 14 ¶ | skipping to change at page 4, line 16 ¶ | |||
2. Notional Conventions | 2. Notional Conventions | |||
2.1. Definitions | 2.1. Definitions | |||
For the purposes of this draft, a third-party DNS Operator is any DNS | For the purposes of this draft, a third-party DNS Operator is any DNS | |||
Operator responsible for a zone, where the operator is neither the | Operator responsible for a zone, where the operator is neither the | |||
Registrant nor the Registrar of record for the delegation. | Registrant nor the Registrar of record for the delegation. | |||
Uses of "child" and "parent" refer to the relationship between DNS | Uses of "child" and "parent" refer to the relationship between DNS | |||
zone operators. In this document, unless otherwise noted, the child | zone operators (see [RFC7719] and [I-D.ietf-dnsop-terminology-bis]). | |||
is the third-party DNS operator and the parent is the Registry. | In this document, unless otherwise noted, the child is the third- | |||
party DNS operator and the parent is the Registry. | ||||
Uses of the words "Registrar" or "Registration Entity" in this | Use of the term "Registration Entity" in this document may refer to | |||
document may also be applied to Resellers or to Registries that | any party that engages directly in registration activities with the | |||
engage in registration activities directly with Registrants. Unless | Registrant. Typically this will be a Reseller or Registrar, but in | |||
otherwise noted, they are used to refer to the entity which has a | some cases, such as when a Registry directly sells registrations to | |||
direct business relationship with the Registrant. | the public, may apply to the Registry. Even in cases where a | |||
Registrar is involved, this term may still apply to a Registry if | ||||
that Registry normally accepts DS/DNSKEY updates directly from | ||||
Registrants. | ||||
The CDS and CDNSKEY DNS resource records, having substantially the | ||||
same function but for different record types, are used interchangably | ||||
in this document. Unless otherwise noted, any use of "CDS" or | ||||
"CDNSKEY" can be assumed to also refer to the other. | ||||
2.2. RFC2119 Keywords | 2.2. RFC2119 Keywords | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
3. Process Overview | 3. Process Overview | |||
3.1. Identifying the Registrar | 3.1. Identifying the Registration Entity | |||
As of publication of this document, there has never been a | As of publication of this document, there has never been a | |||
standardized or widely deployed method for easily and scalably | standardized or widely deployed method for easily and scalably | |||
identifying the Registar for a particular registration. | identifying the Registration Entity for a particular registration. | |||
At this time, WHOIS [RFC3912] is the only widely deployed protocol to | At this time, WHOIS [RFC3912] is the only widely deployed protocol to | |||
carry such information, but WHOIS responses are unstructured text, | carry such information, but WHOIS responses are unstructured text, | |||
and each implementor can lay out its text responses differently. In | and each implementor can lay out its text responses differently. In | |||
addition, Registries may include referrals in this unstructured text | addition, Registries may include referrals in this unstructured text | |||
to the WHOIS interfaces of their Registrars, and those Registrar | to the WHOIS interfaces of their Registrars, and those Registrar | |||
WHOIS interface in turn have their own layouts. This presents a text | WHOIS interface in turn have their own layouts. This presents a text | |||
parsing problem which is infeasible to solve. | parsing problem which is infeasible to solve. | |||
RDAP, the successor to WHOIS, described in [RFC7480], solves the | RDAP, the successor to WHOIS, described in [RFC7480], solves the | |||
problems of unstructured responses, and a consistently implemented | problems of unstructured responses, and a consistently implemented | |||
referral system, however at this time RDAP has yet to be deployed at | referral system, however at this time RDAP has yet to be deployed at | |||
most Registries. | most Registries. | |||
With no current mechanism in place to scalably discover the Registar | With no current mechanism in place to scalably discover the Registrar | |||
for a particular registration, the problem of automatic discovery of | for a particular registration, the problem of automatic discovery of | |||
the base URL of the API is considered out of scope of this document. | the base URL of the API is considered out of scope of this document. | |||
The authors recommend standardization of an RDAP extension to obtain | The authors recommend standardization of an RDAP extension to obtain | |||
this information from the Registry. | this information from the Registry. | |||
3.2. Establishing a Chain of Trust | 3.2. Establishing a Chain of Trust | |||
After signing the zone, the child operator needs to upload the DS | After signing the zone, the child DNS Operator needs to upload the DS | |||
record(s) to the parent. The child can signal its desire to have | record(s) to the parent. The child can signal its desire to have | |||
DNSSEC validation enabled by publishing one of the special DNS | DNSSEC validation enabled by publishing one of the special DNS | |||
records CDS and/or CDNSKEY as defined in [RFC7344] and [RFC8078]. | records CDS and/or CDNSKEY as defined in [RFC7344] and [RFC8078]. | |||
[RFC Editor: The above I-D reference should be replaced with the | Registration Entities MAY regularly scan the child name servers of | |||
correct RFC number upon publication.] | unsecured delegations for CDS records in order to bootstrap DNSSEC, | |||
and are advised to do so. At the time of publication, some ccTLD | ||||
Registries are already doing this. A Registration Entity that | ||||
regularly scans all child zones under its responsibility (both | ||||
secured and unsecured) for CDS will not require the API described in | ||||
this document. However, such a Registration Entity should follow the | ||||
guidelines discussed in Section 3.5 below when using CDS to bootstrap | ||||
DNSSEC on a previously unsecured delegation. | ||||
In the case of an insecure delegation, the Registrar will normally | In the case where the Registration Entity is not normally scanning | |||
not be scanning the child zone for CDS/CDNSKEY records. The child | child zones for CDS records, the Registration Entity SHOULD implement | |||
operator can use this protocol to notify the Registrar to begin such | the API from this document, allowing child operators to notify the | |||
a scan. | Registration Entity to begin such a scan. | |||
Once the Registrar sees these records it SHOULD start acceptance | Once the Registration Entity finds CDS records in a child zone it is | |||
processing. | responsible for, or receives a signal via this API, it SHOULD start | |||
acceptance processing as described below. | ||||
3.3. Maintaining the Chain of Trust | 3.3. Maintaining the Chain of Trust | |||
One the secure chain of trust is established, the Registrar SHOULD | Once the secure chain of trust is established, the Registration | |||
regularly check the child zone for CDS/CDNSKEY record changes. The | Entity SHOULD regularly scan the child zone for CDS record changes. | |||
Registrar SHOULD also accept signals via this protocol to immediately | If the Registration Entity implements the protocol described in this | |||
check the child zone for CDS/CDNSKEY records. | document, then it SHOULD also accept signals via this protocol to | |||
immediately check the child zone for CDS records. | ||||
Server implementations of this protocol MAY include rate limiting to | Server implementations of this protocol MAY include rate limiting to | |||
protect their systems and the systems of child operators from abuse. | protect their systems and the systems of child operators from abuse. | |||
Each parent operator and Registrar is responsible for developing, | Each parent operator and Registration Entity is responsible for | |||
implementing, and communicating their DNSSEC maintenance policies. | developing, implementing, and communicating their DNSSEC maintenance | |||
policies. | ||||
3.4. Other Delegation Maintenance | ||||
[ Not yet defined ] | ||||
3.5. Acceptance Processing | 3.4. Acceptance Processing | |||
The Registrar, upon receiving a signal or detecting through polling | The Registration Entity, upon receiving a signal or detecting through | |||
that the child desires to have its delegation updated, SHOULD run a | polling that the child desires to have its delegation updated, SHOULD | |||
series of tests to ensure that updating the parent zone will not | run a series of tests to ensure that updating the parent zone will | |||
create or exacerbate any problems with the child zone. The basic | not create or exacerbate any problems with the child zone. The basic | |||
tests SHOULD include: | tests SHOULD include: | |||
o checking that the child zone is is properly signed as per the | o checks that the child zone is is properly signed as per the | |||
Registrar and parent DNSSEC policy | Registration Entity and parent DNSSEC policies | |||
o if updating the DS record, checking that the child CDS RRset | o if updating the DS record, a check to ensure the child CDS RRset | |||
references a KSK which is present in the child DNSKEY RRset and | references a KSK which is present in the child DNSKEY RRset and | |||
signs the CDS RRset | signs the CDS RRset | |||
o ensuring all name servers in the apex NS RRset of the child zone | o ensuring all name servers in the apex NS RRset of the child zone | |||
agree on the apex NS RRset and CDS RRset contents | agree on the apex NS RRset and CDS RRset contents | |||
The Registrar SHOULD NOT make any changes to the DS RRset if the | The Registration Entity SHOULD NOT make any changes to the DS RRset | |||
child name servers do not agree on the CDS/CDNSKEY content. | if the child name servers do not agree on the CDS content. | |||
[NOTE: Do we need a new section in the DPS for the CDS management | 3.5. Bootstrapping DNSSEC | |||
policy [RFC6841]?] | ||||
Registrars MAY require compliance with additional tests, particularly | Registration Entities SHOULD require compliance with additional tests | |||
in the case of establishing a new chain of trust, such as: | in the case of establishing a new chain of trust. | |||
o checking that all child name servers to respond with a consistent | o The Registration Entity SHOULD check that all child name servers | |||
CDS/CDNSKEY RRset for a number of queries over an extended period | respond with a consistent CDS RRset for a number of queries over | |||
of time to minimise the possibility of an attacker spoofing | an extended period of time. Any change in DS response or | |||
responses | inconsistency between child responses in that time might indicate | |||
an attempted Man in the Middle (MITM) attack, and SHOULD reset the | ||||
test. This minimizes the possibility of an attacker spoofing | ||||
responses. An example of such a policy might be to scan all child | ||||
name servers in the delegation NS RRset every two hours for a | ||||
week. | ||||
o requiring the child name servers to respond with identical CDS/ | o The Registration Entity SHOULD require all of the child name | |||
CDNSKEY RRsets over TCP | servers in the delegation NS RRset to send the same response to a | |||
CDS query whether sent over TCP or UDP. | ||||
o ensuring zone delegation best practices (for examples, see | o The Registration Entity MAY require the child zone to implement | |||
[I-D.wallstrom-dnsop-dns-delegation-requirements] | zone delegation best practices as described in | |||
[I-D.wallstrom-dnsop-dns-delegation-requirements]. | ||||
o requiring the child operator to prove they can add data to the | o The Registration Entity MAY require the child operator to prove | |||
zone (for example, by publishing a particular token) | they can add data to the zone, for example by publishing a | |||
particular token. See Section 4.2.2 below. | ||||
4. API Definition | 4. API Definition | |||
This protocol is partially synchronous, meaning the server can elect | This protocol is partially synchronous, meaning the server can elect | |||
to hold connections open until operations have completed, or it can | to hold connections open until operations have completed, or it can | |||
return a status code indicating that it has received a request, and | return a status code indicating that it has received a request, and | |||
close the connection. It is up to the child to monitor the parent | close the connection. It is up to the child to monitor the parent | |||
for completion of the operation, and issue possible follow-up calls | for completion of the operation, and issue possible follow-up calls | |||
to the Registrar. | to the Registration Entity. | |||
Clients may be denied access to change the DS records for domains | Clients may be denied access to change the DS records for domains | |||
that are Registry Locked (HTTP Status code 401). Registry Lock is a | that are Registry Locked (HTTP Status code 401). Registry Lock is a | |||
mechanism provided by certain Registries or Registrars that prevents | mechanism provided by certain Registries or Registrars that prevents | |||
domain hijacking by ensuring no attributes of the domain are | domain hijacking by ensuring no attributes of the domain are | |||
changeable, and no transfer or deletion transactions can be processed | changeable, and no transfer or deletion transactions can be processed | |||
against the domain name without manual intervention. | against the domain name without manual intervention. | |||
4.1. Authentication | 4.1. Authentication | |||
The API does not impose any unique server authentication | The API does not impose any unique server authentication | |||
requirements. The server authentication provided by TLS fully | requirements. The server authentication provided by TLS fully | |||
addresses the needs of this protocol. The API MUST be provided over | addresses the needs of this protocol. The API MUST be provided over | |||
TLS-protected transport (e.g., HTTPS) or VPN. | TLS-protected transport (e.g., HTTPS) or VPN. | |||
Client authentication is considered out of scope of this document. | Client authentication is considered out of scope of this document. | |||
The publication of CDS/CDNSKEY records in the child zone is an | The publication of CDS records in the child zone is an indication | |||
indication that the child operator intends to perform DS-record- | that the child operator intends to perform DS-record-updating | |||
updating activities (add/delete) in the parent zone. Since this | activities (add/delete) in the parent zone. Since this protocol is | |||
protocol is simply a signal to the Registrar that they should examine | simply a signal to the Registration Entity that they should examine | |||
the child zone for such intentions, additional authentication of the | the child zone for such intentions, additional authentication of the | |||
client making the request is considered unnecessary. | client making the request is considered unnecessary. | |||
Registrars MAY implement their own policy to protect access to the | Registration Entities MAY implement their own policy to protect | |||
API, such as with IP whitelisting, client TLS certificates, etc.. | access to the API, such as with IP white listing, client TLS | |||
Registrars SHOULD take steps to ensure that a lack of additional | certificates, etc.. Registration Entities SHOULD take steps to | |||
authentication does not open up a denial of service mechanism against | ensure that a lack of additional authentication does not open up a | |||
the systems of the Registrar, the Registry, or the child operator. | denial of service mechanism against the systems of the Registration | |||
Entity, the Registry, or the child operator. | ||||
4.2. RESTful Resources | 4.2. RESTful Resources | |||
In the following text, "{domain}" is the child zone to be operated | In the following text, "{domain}" is the child zone to be operated | |||
on. | on. | |||
4.2.1. CDS resource | 4.2.1. CDS resource | |||
Path: /domains/{domain}/cds | Path: /domains/{domain}/cds | |||
skipping to change at page 8, line 27 ¶ | skipping to change at page 8, line 50 ¶ | |||
o HTTP Status code 409 indicates the delegation already has a DS | o HTTP Status code 409 indicates the delegation already has a DS | |||
RRset. | RRset. | |||
o HTTP Status code 429 indicates the client has been rate-limited. | o HTTP Status code 429 indicates the client has been rate-limited. | |||
o HTTP Status code 500 indicates a failure due to unforeseeable | o HTTP Status code 500 indicates a failure due to unforeseeable | |||
reasons. | reasons. | |||
This request is for setting up initial trust in the delegation. The | This request is for setting up initial trust in the delegation. The | |||
Registrar SHOULD return a status code 409 if it already has a DS | Registration Entity SHOULD return a status code 409 if it already has | |||
RRset for the child zone. | a DS RRset for the child zone. | |||
Upon receipt of a 403 response the child operator SHOULD issue a POST | Upon receipt of a 403 response the child operator SHOULD issue a POST | |||
for the "token" resource to fetch a challenge token to insert into | for the "token" resource to fetch a challenge token to insert into | |||
the zone. | the zone. | |||
4.2.1.2. Removing DS Records | 4.2.1.2. Removing DS Records | |||
4.2.1.2.1. Request | 4.2.1.2.1. Request | |||
Syntax: DELETE /domains/{domain}/cds | Syntax: DELETE /domains/{domain}/cds | |||
Request that the Registrar check for a null CDS or CDNSKEY record in | Request that the Registration Entity check for a null CDS or CDNSKEY | |||
the child zone, indicating a request that the entire DS RRset be | record in the child zone, indicating a request that the entire DS | |||
removed. This will make the delegation insecure. | RRset be removed. This will make the delegation insecure. | |||
4.2.1.2.2. Response | 4.2.1.2.2. Response | |||
o HTTP Status code 200 indicates a success. | o HTTP Status code 200 indicates a success. | |||
o HTTP Status code 400 indicates a failure due to validation. | o HTTP Status code 400 indicates a failure due to validation. | |||
o HTTP Status code 401 indicates an unauthorized resource access. | o HTTP Status code 401 indicates an unauthorized resource access. | |||
o HTTP Status code 404 indicates the domain does not exist. | o HTTP Status code 404 indicates the domain does not exist. | |||
skipping to change at page 9, line 18 ¶ | skipping to change at page 9, line 42 ¶ | |||
o HTTP Status code 500 indicates a failure due to unforeseeable | o HTTP Status code 500 indicates a failure due to unforeseeable | |||
reasons. | reasons. | |||
4.2.1.3. Modifying DS Records | 4.2.1.3. Modifying DS Records | |||
4.2.1.3.1. Request | 4.2.1.3.1. Request | |||
Syntax: PUT /domains/{domain}/cds | Syntax: PUT /domains/{domain}/cds | |||
Request that the Registrar modify the DS RRset based on the CDS/ | Request that the Registration Entity modify the DS RRset based on the | |||
CDNSKEY available in the child zone. As a result of this request the | CDS/CDNSKEY available in the child zone. As a result of this request | |||
Registrar SHOULD add or delete DS records as indicated by the CDS/ | the Registration Entity SHOULD add or delete DS or DNSKEY records as | |||
CDNSKEY RRset, but MUST NOT delete the entire DS RRset. | indicated by the CDS/CDNSKEY RRset, but MUST NOT delete the entire DS | |||
RRset. | ||||
4.2.1.3.2. Response | 4.2.1.3.2. Response | |||
o HTTP Status code 200 indicates a success. | o HTTP Status code 200 indicates a success. | |||
o HTTP Status code 400 indicates a failure due to validation. | o HTTP Status code 400 indicates a failure due to validation. | |||
o HTTP Status code 401 indicates an unauthorized resource access. | o HTTP Status code 401 indicates an unauthorized resource access. | |||
o HTTP Status code 404 indicates the domain does not exist. | o HTTP Status code 404 indicates the domain does not exist. | |||
skipping to change at page 9, line 50 ¶ | skipping to change at page 10, line 26 ¶ | |||
4.2.2. Token resource | 4.2.2. Token resource | |||
Path: /domains/{domain}/token | Path: /domains/{domain}/token | |||
4.2.2.1. Establish Initial Trust with Challenge | 4.2.2.1. Establish Initial Trust with Challenge | |||
4.2.2.1.1. Request | 4.2.2.1.1. Request | |||
Syntax: GET /domains/{domain}/token | Syntax: GET /domains/{domain}/token | |||
The DNSSEC policy of the Registrar may require proof that the DNS | The DNSSEC policy of the Registration Entity may require proof that | |||
Operator is in control of the domain. The token API call returns a | the DNS Operator is in control of the domain. The token API call | |||
random token to be included as a TXT record for the _delegate.@ | returns a random token to be included as a TXT record for the | |||
domain name (where @ is the apex of the child zone) prior | _delegate.@ domain name (where @ is the apex of the child zone) prior | |||
establishing the DNSSEC initial trust. This is an additional trust | establishing the DNSSEC initial trust. This is an additional trust | |||
control mechanism to establish the initial chain of trust. | control mechanism to establish the initial chain of trust. | |||
Once the child operator has received a token, it SHOULD be inserted | Once the child operator has received a token, it SHOULD be inserted | |||
in the zone and the operator SHOULD proceed with a POST of the cds | in the zone and the operator SHOULD proceed with a POST of the cds | |||
resource. | resource. | |||
The Registrar MAY expire the token after a reasonable period. The | The Registration Entity MAY expire the token after a reasonable | |||
Registrar SHOULD document an explanation of whether and when tokens | period. The Registration Entity SHOULD document an explanation of | |||
are expired in their DNSSEC policy. | whether and when tokens are expired in their DNSSEC policy. | |||
Note that the _delegate TXT record is publicly available and not a | Note that the _delegate TXT record is publicly available and not a | |||
secret token. | secret token. | |||
4.2.2.1.2. Response | 4.2.2.1.2. Response | |||
o HTTP Status code 200 indicates a success. A token is included in | o HTTP Status code 200 indicates a success. A token is included in | |||
the body of the response, as a valid TXT record | the body of the response, as a valid TXT record | |||
o HTTP Status code 404 indicates the domain does not exist. | o HTTP Status code 404 indicates the domain does not exist. | |||
o HTTP Status code 500 indicates a failure due to unforeseeable | o HTTP Status code 500 indicates a failure due to unforeseeable | |||
reasons. | reasons. | |||
4.3. Customized Error Messages | 4.3. Customized Error Messages | |||
Registrars MAY provide a customized error message in the response | Registration Entities MAY provide a customized error message in the | |||
body in addition to the HTTP status code defined in the previous | response body in addition to the HTTP status code defined in the | |||
section. This response MAY include an identifying number/string that | previous section. This response MAY include an identifying number/ | |||
can be used to track the request. | string that can be used to track the request. | |||
5. Security considerations | 5. Security considerations | |||
When zones are properly provisioned, and delegations follow standards | When zones are properly provisioned, and delegations follow standards | |||
and best practices (e.g. | and best practices (e.g. | |||
[I-D.wallstrom-dnsop-dns-delegation-requirements]), the Registrar or | [I-D.wallstrom-dnsop-dns-delegation-requirements]), the Registration | |||
Registry can trust the DNS information it receives from multiple | Entity or Registry can trust the DNS information it receives from | |||
child name servers, over time, and/or over TCP to establish the | multiple child name servers, over time, and/or over TCP to establish | |||
initial chain of trust. | the initial chain of trust. | |||
In addition, the Registrar or Registry can require the DNS Operator | In addition, the Registration Entity or Registry can require the DNS | |||
to prove they control the zone by requiring the child operator to | Operator to prove they control the zone by requiring the child | |||
navigate additional hurdles, such as adding a challenge token to the | operator to navigate additional hurdles, such as adding a challenge | |||
zone. | token to the zone. | |||
This protocol should increase the adoption of DNSSEC, enabling more | This protocol should increase the adoption of DNSSEC, enabling more | |||
zones to become validated thus overall the security gain outweighs | zones to become validated thus overall the security gain outweighs | |||
the possible drawbacks. | the possible drawbacks. | |||
Registrants and DNS Operators always have the option to establish the | Registrants and DNS Operators always have the option to establish the | |||
chain of trust in band via the standard Registrant/Registrar/Registry | chain of trust in band via the standard Registrant/Registrar/Registry | |||
model. | model. | |||
6. IANA Actions | 6. IANA Actions | |||
This document has no actions for IANA | This document has no actions for IANA | |||
7. Internationalization Considerations | 7. Internationalization Considerations | |||
This protocol is designed for machine to machine communications. | This protocol is designed for machine to machine communications. | |||
Clients and servers should use punycode [RFC3492] when operating on | Clients and servers SHOULD use punycode [RFC3492] when operating on | |||
internationalized domain names. | internationalized domain names. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | |||
for Internationalized Domain Names in Applications | for Internationalized Domain Names in Applications | |||
(IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | |||
<http://www.rfc-editor.org/info/rfc3492>. | <https://www.rfc-editor.org/info/rfc3492>. | |||
[RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | |||
Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | |||
<http://www.rfc-editor.org/info/rfc6690>. | <https://www.rfc-editor.org/info/rfc6690>. | |||
[RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | [RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating | |||
DNSSEC Delegation Trust Maintenance", RFC 7344, DOI | DNSSEC Delegation Trust Maintenance", RFC 7344, | |||
10.17487/RFC7344, September 2014, | DOI 10.17487/RFC7344, September 2014, | |||
<http://www.rfc-editor.org/info/rfc7344>. | <https://www.rfc-editor.org/info/rfc7344>. | |||
[RFC8078] Gudmundsson, O. and P. Wouters, "Managing DS Records from | [RFC8078] Gudmundsson, O. and P. Wouters, "Managing DS Records from | |||
the Parent via CDS/CDNSKEY", RFC 8078, DOI 10.17487/ | the Parent via CDS/CDNSKEY", RFC 8078, | |||
RFC8078, March 2017, | DOI 10.17487/RFC8078, March 2017, | |||
<http://www.rfc-editor.org/info/rfc8078>. | <https://www.rfc-editor.org/info/rfc8078>. | |||
8.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-dnsop-terminology-bis] | ||||
Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | ||||
Terminology", draft-ietf-dnsop-terminology-bis-06 (work in | ||||
progress), July 2017. | ||||
[I-D.wallstrom-dnsop-dns-delegation-requirements] | [I-D.wallstrom-dnsop-dns-delegation-requirements] | |||
Wallstrom, P. and J. Schlyter, "DNS Delegation | Wallstrom, P. and J. Schlyter, "DNS Delegation | |||
Requirements", draft-wallstrom-dnsop-dns-delegation- | Requirements", draft-wallstrom-dnsop-dns-delegation- | |||
requirements-03 (work in progress), October 2016. | requirements-03 (work in progress), October 2016. | |||
[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, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, | |||
RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, DOI | [RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, | |||
10.17487/RFC3912, September 2004, | DOI 10.17487/RFC3912, September 2004, | |||
<http://www.rfc-editor.org/info/rfc3912>. | <https://www.rfc-editor.org/info/rfc3912>. | |||
[RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | |||
STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, | STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, | |||
<http://www.rfc-editor.org/info/rfc5730>. | <https://www.rfc-editor.org/info/rfc5730>. | |||
[RFC6841] Ljunggren, F., Eklund Lowinder, AM., and T. Okubo, "A | ||||
Framework for DNSSEC Policies and DNSSEC Practice | ||||
Statements", RFC 6841, DOI 10.17487/RFC6841, January 2013, | ||||
<http://www.rfc-editor.org/info/rfc6841>. | ||||
[RFC7480] Newton, A., Ellacott, B., and N. Kong, "HTTP Usage in the | [RFC7480] Newton, A., Ellacott, B., and N. Kong, "HTTP Usage in the | |||
Registration Data Access Protocol (RDAP)", RFC 7480, DOI | Registration Data Access Protocol (RDAP)", RFC 7480, | |||
10.17487/RFC7480, March 2015, | DOI 10.17487/RFC7480, March 2015, | |||
<http://www.rfc-editor.org/info/rfc7480>. | <https://www.rfc-editor.org/info/rfc7480>. | |||
[RFC7719] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | ||||
Terminology", RFC 7719, DOI 10.17487/RFC7719, December | ||||
2015, <https://www.rfc-editor.org/info/rfc7719>. | ||||
Appendix A. Document History | Appendix A. Document History | |||
A.1. regext Version 03 | A.1. regext Version 04 | |||
o changed uses of Registrar to Registration Entity and updated | ||||
definitions to improve clarity | ||||
o adding note about CDS/CDNSKEY interchangability in this document | ||||
o added advice to scan all delegations (including insecure | ||||
delegations) for CDS in order to bootstrap or update DNSSEC | ||||
o removed "Other Delegation Maintenance" section, since we decided a | ||||
while ago not to use this to update NS | ||||
A.2. regext Version 03 | ||||
o simplify abstract | o simplify abstract | |||
o move all justification text to Intro | o move all justification text to Intro | |||
o added HTTP response codes for rate limiting (429), missing DS | o added HTTP response codes for rate limiting (429), missing DS | |||
RRsets (412) | RRsets (412) | |||
o expanded on Internationalization Considerations | o expanded on Internationalization Considerations | |||
skipping to change at page 13, line 4 ¶ | skipping to change at page 13, line 42 ¶ | |||
o clarify parent/Registrar references in the draft | o clarify parent/Registrar references in the draft | |||
o general spelling/grammar/style cleanup | o general spelling/grammar/style cleanup | |||
o removed references to NS and glue maintenance | o removed references to NS and glue maintenance | |||
o clarify content of POST body for 'cds' resource | o clarify content of POST body for 'cds' resource | |||
o change verb for obtaining a 'token' to GET | o change verb for obtaining a 'token' to GET | |||
o Updated refernce to RFC8078 | ||||
A.2. regext Version 02 | o Updated reference to RFC8078 | |||
A.3. regext Version 02 | ||||
o Clarified based on comments and questions from early implementors | o Clarified based on comments and questions from early implementors | |||
(JL) | (JL) | |||
o Text edits and clarifications. | o Text edits and clarifications. | |||
A.3. regext Version 01 | A.4. regext Version 01 | |||
o Rewrote Abstract and Into (MP) | o Rewrote Abstract and Into (MP) | |||
o Introduced code 401 when changes are not allowed | o Introduced code 401 when changes are not allowed | |||
o Text edits and clarifications. | o Text edits and clarifications. | |||
A.4. regext Version 00 | A.5. regext Version 00 | |||
o Working group document same as 03, just track changed to standard | o Working group document same as 03, just track changed to standard | |||
A.5. Version 03 | A.6. Version 03 | |||
o Clarified based on comments and questions from early implementors | o Clarified based on comments and questions from early implementors | |||
A.6. Version 02 | A.7. Version 02 | |||
o Reflected comments on mailing lists | o Reflected comments on mailing lists | |||
A.7. Version 01 | A.8. Version 01 | |||
o This version adds a full REST definition this is based on | o This version adds a full REST definition this is based on | |||
suggestions from Jakob Schlyter. | suggestions from Jakob Schlyter. | |||
A.8. Version 00 | A.9. Version 00 | |||
o First rough version | o First rough version | |||
Authors' Addresses | Authors' Addresses | |||
Jacques Latour | Jacques Latour | |||
CIRA | CIRA | |||
Ottawa, ON | Ottawa, ON | |||
Email: jacques.latour@cira.ca | Email: jacques.latour@cira.ca | |||
End of changes. 66 change blocks. | ||||
166 lines changed or deleted | 213 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |