rfc9224.original | rfc9224.txt | |||
---|---|---|---|---|
Network Working Group M. Blanchet | Internet Engineering Task Force (IETF) M. Blanchet | |||
Internet-Draft Viagenie | Request for Comments: 9224 Viagenie | |||
Obsoletes: 7484 (if approved) 28 January 2022 | STD: 95 March 2022 | |||
Intended status: Standards Track | Obsoletes: 7484 | |||
Expires: 1 August 2022 | Category: Standards Track | |||
ISSN: 2070-1721 | ||||
Finding the Authoritative Registration Data (RDAP) Service | Finding the Authoritative Registration Data Access Protocol (RDAP) | |||
draft-ietf-regext-rfc7484bis-06 | Service | |||
Abstract | Abstract | |||
This document specifies a method to find which Registration Data | This document specifies a method to find which Registration Data | |||
Access Protocol (RDAP) server is authoritative to answer queries for | Access Protocol (RDAP) server is authoritative to answer queries for | |||
a requested scope, such as domain names, IP addresses, or Autonomous | a requested scope, such as domain names, IP addresses, or Autonomous | |||
System numbers. This document obsoletes RFC7484. | System numbers. This document obsoletes RFC 7484. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 1 August 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9224. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
3. Structure of the RDAP Bootstrap Service Registries . . . . . 3 | 3. Structure of the RDAP Bootstrap Service Registries | |||
4. Bootstrap Service Registry for Domain Name Space . . . . . . 5 | 4. Bootstrap Service Registry for Domain Name Space | |||
5. Bootstrap Service Registries for Internet Numbers . . . . . . 6 | 5. Bootstrap Service Registries for Internet Numbers | |||
5.1. Bootstrap Service Registry for IPv4 Address Space . . . . 6 | 5.1. Bootstrap Service Registry for IPv4 Address Space | |||
5.2. Bootstrap Service Registry for IPv6 Address Space . . . . 7 | 5.2. Bootstrap Service Registry for IPv6 Address Space | |||
5.3. Bootstrap Service Registry for AS Number Space . . . . . 9 | 5.3. Bootstrap Service Registry for AS Number Space | |||
6. Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6. Entity | |||
7. Non-existent Entries or RDAP URL Values . . . . . . . . . . . 10 | 7. Non-existent Entries or RDAP URL Values | |||
8. Deployment and Implementation Considerations . . . . . . . . 10 | 8. Deployment and Implementation Considerations | |||
9. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 9. Limitations | |||
10. Formal Definition . . . . . . . . . . . . . . . . . . . . . . 11 | 10. Formal Definition | |||
10.1. Imported JSON Terms . . . . . . . . . . . . . . . . . . 11 | 10.1. Imported JSON Terms | |||
10.2. Registry Syntax . . . . . . . . . . . . . . . . . . . . 11 | 10.2. Registry Syntax | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 11. Security Considerations | |||
12. Implementation Status . . . . . . . . . . . . . . . . . . . . 12 | 12. IANA Considerations | |||
12.1. RDAP Browser Mobile Application . . . . . . . . . . . . 13 | 12.1. Bootstrap Service Registry for IPv4 Address Space | |||
12.2. ICANN Lookup Web Application . . . . . . . . . . . . . . 13 | 12.2. Bootstrap Service Registry for IPv6 Address Space | |||
12.3. ARIN Implementation . . . . . . . . . . . . . . . . . . 14 | 12.3. Bootstrap Service Registry for AS Number Space | |||
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 12.4. Bootstrap Service Registry for Domain Name Space | |||
13.1. Bootstrap Service Registry for IPv4 Address Space . . . 16 | 13. References | |||
13.2. Bootstrap Service Registry for IPv6 Address Space . . . 16 | 13.1. Normative References | |||
13.3. Bootstrap Service Registry for AS Number Space . . . . . 16 | 13.2. Informative References | |||
13.4. Bootstrap Service Registry for Domain Name Space . . . . 16 | Appendix A. Changes since RFC 7484 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 16 | Author's Address | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 17 | ||||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
Changes since RFC7484 . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
1. Introduction | 1. Introduction | |||
Querying and retrieving registration data from registries are defined | Querying and retrieving registration data from registries are defined | |||
in Registration Data Access Protocol (RDAP) [RFC7480] [RFC7481] | in the Registration Data Access Protocol (RDAP) [RFC7480] [RFC7481] | |||
[RFC9082] [RFC9083]. These documents do not specify where to send | [RFC9082] [RFC9083]. These documents do not specify where to send | |||
the queries. This document specifies a method to find which server | the queries. This document specifies a method to find which server | |||
is authoritative to answer queries for the requested scope. | is authoritative to answer queries for the requested scope. | |||
Top-Level Domains (TLDs), Autonomous System (AS) numbers, and network | Top-Level Domains (TLDs), Autonomous System (AS) numbers, and network | |||
blocks are delegated by IANA to Internet registries such as TLD | blocks are delegated by IANA to Internet registries such as TLD | |||
registries and Regional Internet Registries (RIRs) that then issue | registries and Regional Internet Registries (RIRs) that then issue | |||
further delegations and maintain information about them. Thus, the | further delegations and maintain information about them. Thus, the | |||
bootstrap information needed by RDAP clients is best generated from | bootstrap information needed by RDAP clients is best generated from | |||
data and processes already maintained by IANA; the relevant | data and processes already maintained by IANA; the relevant | |||
skipping to change at page 3, line 26 ¶ | skipping to change at line 107 ¶ | |||
Service Registries. These new registries are based on the existing | Service Registries. These new registries are based on the existing | |||
entries of the above-mentioned registries. An RDAP client fetches | entries of the above-mentioned registries. An RDAP client fetches | |||
the RDAP Bootstrap Service Registries, extracts the data, and then | the RDAP Bootstrap Service Registries, extracts the data, and then | |||
performs a match with the query data to find the authoritative | performs a match with the query data to find the authoritative | |||
registration data server and appropriate query base URL. | registration data server and appropriate query base URL. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
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 document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Structure of the RDAP Bootstrap Service Registries | 3. Structure of the RDAP Bootstrap Service Registries | |||
The RDAP Bootstrap Service Registries, as specified in Section 13 | The RDAP Bootstrap Service Registries, as specified in Section 12 | |||
below, have been made available as JSON [RFC8259] objects, which can | below, have been made available as JSON [RFC8259] objects, which can | |||
be retrieved via HTTP from locations specified by IANA. The JSON | be retrieved via HTTP from locations specified by IANA. The JSON | |||
object for each registry contains a series of members containing | object for each registry contains a series of members containing | |||
metadata about the registry such as a version identifier, a timestamp | metadata about the registry such as a version identifier, a timestamp | |||
of the publication date of the registry, and a description. | of the publication date of the registry, and a description. | |||
Additionally, a "services" member contains the registry items | Additionally, a "services" member contains the registry items | |||
themselves, as an array. Each item of the array contains a second- | themselves, as an array. Each item of the array contains a second- | |||
level array, with two elements, each of them being a third-level | level array, with two elements, each of them being a third-level | |||
array. | array. | |||
Each element of the Services Array is a second-level array with two | Each element of the Services Array is a second-level array with two | |||
elements: in order, an Entry Array and a Service URL Array. | elements: in order, an Entry Array and a Service URL Array. | |||
The Entry Array contains all entries that have the same set of base | The Entry Array contains all entries that have the same set of base | |||
RDAP URLs. The Service URL Array contains the list of base RDAP URLs | RDAP URLs. The Service URL Array contains the list of base RDAP URLs | |||
usable for the entries found in the Entry Array. Elements within | usable for the entries found in the Entry Array. Elements within | |||
these two arrays are not ordered in any way. | these two arrays are not ordered in any way. | |||
An example structure of the JSON output of a RDAP Bootstrap Service | An example structure of the JSON output of an RDAP Bootstrap Service | |||
Registry is illustrated: | Registry is illustrated: | |||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "YYYY-MM-DDTHH:MM:SSZ", | "publication": "YYYY-MM-DDTHH:MM:SSZ", | |||
"description": "Some text", | "description": "Some text", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["entry1", "entry2", "entry3"], | ["entry1", "entry2", "entry3"], | |||
[ | [ | |||
skipping to change at page 4, line 46 ¶ | skipping to change at line 176 ¶ | |||
content of the bootstrap object. | content of the bootstrap object. | |||
Per [RFC7258], in each array of base RDAP URLs, the secure versions | Per [RFC7258], in each array of base RDAP URLs, the secure versions | |||
of the transport protocol SHOULD be preferred and tried first. For | of the transport protocol SHOULD be preferred and tried first. For | |||
example, if the base RDAP URLs array contains both HTTPS and HTTP | example, if the base RDAP URLs array contains both HTTPS and HTTP | |||
URLs, the bootstrap client SHOULD try the HTTPS version first. | URLs, the bootstrap client SHOULD try the HTTPS version first. | |||
Base RDAP URLs MUST have a trailing "/" character because they are | Base RDAP URLs MUST have a trailing "/" character because they are | |||
concatenated to the various segments defined in [RFC9082]. | concatenated to the various segments defined in [RFC9082]. | |||
JSON names MUST follow the format recommendations of section 6 of | JSON names MUST follow the format recommendations of Section 6 of | |||
[RFC7480]. Any unrecognized JSON object properties or values MUST be | [RFC7480]. Any unrecognized JSON object properties or values MUST be | |||
ignored by implementations. | ignored by implementations. | |||
Internationalized Domain Name labels used as entries or base RDAP | Internationalized Domain Name labels used as entries or base RDAP | |||
URLs in the registries defined in this document MUST be only | URLs in the registries defined in this document MUST be only | |||
represented using their A-label form as defined in [RFC5890]. | represented using their A-label form as defined in [RFC5890]. | |||
All Domain Name labels used as entries or base RDAP URLs in the | All Domain Name labels used as entries or base RDAP URLs in the | |||
registries defined in this document MUST be only represented in | registries defined in this document MUST be only represented in | |||
lowercase. | lowercase. | |||
skipping to change at page 5, line 44 ¶ | skipping to change at line 223 ¶ | |||
[ | [ | |||
"https://example.net/rdap/xn--zckzah/", | "https://example.net/rdap/xn--zckzah/", | |||
"http://example.net/rdap/xn--zckzah/" | "http://example.net/rdap/xn--zckzah/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
The domain name's authoritative registration data service is found by | The domain name's authoritative registration data service is found by | |||
doing the label-wise longest match of the target domain name with the | doing the label-wise longest match of the target domain name with the | |||
domain values in the Entry Arrays in the IANA Bootstrap Service | domain values in the Entry Arrays in the IANA "Bootstrap Service | |||
Registry for Domain Name Space. The match is done per label, from | Registry for Domain Name Space". The match is done per label, from | |||
right to left. If the longest match results in multiple entries, | right to left. If the longest match results in multiple entries, | |||
then those entries are considered equivalent. The values contained | then those entries are considered equivalent. The values contained | |||
in the Service URL Array of the matching second-level array are the | in the Service URL Array of the matching second-level array are the | |||
valid base RDAP URLs as described in [RFC9082]. | valid base RDAP URLs as described in [RFC9082]. | |||
For example, a domain RDAP query for a.b.example.com matches the com | For example, a domain RDAP query for a.b.example.com matches the com | |||
entry in one of the arrays of the registry. The base RDAP URL for | entry in one of the arrays of the registry. The base RDAP URL for | |||
this query is then taken from the second element of the array, which | this query is then taken from the second element of the array, which | |||
is an array of base RDAP URLs valid for this entry. The client | is an array of base RDAP URLs valid for this entry. The client | |||
chooses one of the base URLs from this array; in this example, it | chooses one of the base URLs from this array; in this example, it | |||
skipping to change at page 8, line 41 ¶ | skipping to change at line 354 ¶ | |||
For example, a query for "2001:db8:1000::/48" matches the | For example, a query for "2001:db8:1000::/48" matches the | |||
"2001:db8::/34" entry and the "2001:db8:1000::/36" entry in the | "2001:db8::/34" entry and the "2001:db8:1000::/36" entry in the | |||
example registry above. The latter is chosen by the client because | example registry above. The latter is chosen by the client because | |||
it is the longest match. The base RDAP URL for this query is then | it is the longest match. The base RDAP URL for this query is then | |||
taken from the second element of the array, which is an array of base | taken from the second element of the array, which is an array of base | |||
RDAP URLs valid for this entry. The client chooses one of the base | RDAP URLs valid for this entry. The client chooses one of the base | |||
URLs from this array; in this example, it chooses | URLs from this array; in this example, it chooses | |||
"https://example.net/rdaprir2/" because it's the secure version of | "https://example.net/rdaprir2/" because it's the secure version of | |||
the protocol. The segment specified in [RFC9082] is then appended to | the protocol. The segment specified in [RFC9082] is then appended to | |||
the base URL to complete the query. The complete query is, | the base URL to complete the query. The complete query is therefore | |||
therefore, "https://example.net/rdaprir2/ip/2001:db8:1000::/48". If | "https://example.net/rdaprir2/ip/2001:db8:1000::/48". If the target | |||
the target RDAP server does not answer, the client can then use | RDAP server does not answer, the client can then use another URL | |||
another URL prefix from the array. | prefix from the array. | |||
5.3. Bootstrap Service Registry for AS Number Space | 5.3. Bootstrap Service Registry for AS Number Space | |||
The JSON output of this registry contains Autonomous Systems number | The JSON output of this registry contains entries for AS number | |||
ranges entries, grouped by base RDAP URLs, as shown in this example. | ranges, grouped by base RDAP URLs, as shown in this example. The | |||
The Entry Array is an array containing the list of AS number ranges | Entry Array is an array containing the list of AS number ranges | |||
served by the base RDAP URLs found in the second element. Each | served by the base RDAP URLs found in the second element. Each | |||
element of the array contains two AS numbers represented in decimal | element of the array contains two AS numbers represented in decimal | |||
format, separated by a hyphen, that represents the range of AS | format, separated by a hyphen, that represents the range of AS | |||
numbers between the two AS numbers (inclusive), where values are in | numbers between the two AS numbers (inclusive), where values are in | |||
increasing order (e.g. 100-200, not 200-100). A single AS number is | increasing order (e.g., 100-200, not 200-100). A single AS number is | |||
represented as a range of two identical AS numbers. AS numbers are | represented as a range of two identical AS numbers. AS numbers are | |||
represented as 'asplain' as defined in [RFC5396]. Ranges MUST NOT | represented as 'asplain' as defined in [RFC5396]. Ranges MUST NOT | |||
overlap. | overlap. | |||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "2024-01-07T10:11:12Z", | "publication": "2024-01-07T10:11:12Z", | |||
"description": "RDAP Bootstrap file for example registries.", | "description": "RDAP Bootstrap file for example registries.", | |||
"services": [ | "services": [ | |||
[ | [ | |||
skipping to change at page 10, line 12 ¶ | skipping to change at line 415 ¶ | |||
"https://example.net/rdaprir2/". The segment specified in [RFC9082] | "https://example.net/rdaprir2/". The segment specified in [RFC9082] | |||
is then appended to the base URL to complete the query. The complete | is then appended to the base URL to complete the query. The complete | |||
query is, therefore, "https://example.net/rdaprir2/autnum/65411". If | query is, therefore, "https://example.net/rdaprir2/autnum/65411". If | |||
the server does not answer, the client can then use another URL | the server does not answer, the client can then use another URL | |||
prefix from the array. | prefix from the array. | |||
6. Entity | 6. Entity | |||
Entities (such as contacts, registrants, or registrars) can be | Entities (such as contacts, registrants, or registrars) can be | |||
queried by handle as described in [RFC9082]. Since there is no | queried by handle as described in [RFC9082]. Since there is no | |||
global namespace for entities, this document does not describe how to | global name space for entities, this document does not describe how | |||
find the authoritative RDAP server for entities. However, it is | to find the authoritative RDAP server for entities. However, it is | |||
possible that, if the entity identifier was received from a previous | possible that, if the entity identifier was received from a previous | |||
query, the same RDAP server could be queried for that entity, or the | query, the same RDAP server could be queried for that entity, or the | |||
entity identifier itself is a fully qualified URL that can be | entity identifier itself is a fully qualified URL that can be | |||
queried. The mechanism described in [RFC8521] MAY also be used. | queried. The mechanism described in [RFC8521] MAY also be used. | |||
7. Non-existent Entries or RDAP URL Values | 7. Non-existent Entries or RDAP URL Values | |||
The registries may not contain the requested value. In these cases, | The registries may not contain the requested value. In these cases, | |||
there is no known RDAP server for that requested value, and the | there is no known RDAP server for that requested value, and the | |||
client SHOULD provide an appropriate error message to the user. | client SHOULD provide an appropriate error message to the user. | |||
skipping to change at page 11, line 30 ¶ | skipping to change at line 475 ¶ | |||
10. Formal Definition | 10. Formal Definition | |||
This section is the formal definition of the registries. The | This section is the formal definition of the registries. The | |||
structure of JSON objects and arrays using a set of primitive | structure of JSON objects and arrays using a set of primitive | |||
elements is defined in [RFC8259]. Those elements are used to | elements is defined in [RFC8259]. Those elements are used to | |||
describe the JSON structure of the registries. | describe the JSON structure of the registries. | |||
10.1. Imported JSON Terms | 10.1. Imported JSON Terms | |||
* OBJECT: a JSON object, defined in Section 4 of [RFC8259] | OBJECT: a JSON object, defined in Section 4 of [RFC8259] | |||
* MEMBER: a member of a JSON object, defined in Section 4 of | MEMBER: a member of a JSON object, defined in Section 4 of [RFC8259] | |||
[RFC8259] | ||||
* MEMBER-NAME: the name of a MEMBER, defined as a "string" in | MEMBER-NAME: the name of a MEMBER, defined as a "string" in | |||
Section 4 of [RFC8259] | Section 4 of [RFC8259] | |||
* MEMBER-VALUE: the value of a MEMBER, defined as a "value" in | MEMBER-VALUE: the value of a MEMBER, defined as a "value" in | |||
Section 4 of [RFC8259] | Section 4 of [RFC8259] | |||
* ARRAY: an array, defined in Section 5 of [RFC8259] | ARRAY: an array, defined in Section 5 of [RFC8259] | |||
* ARRAY-VALUE: an element of an ARRAY, defined in Section 5 of | ARRAY-VALUE: an element of an ARRAY, defined in Section 5 of | |||
[RFC8259] | [RFC8259] | |||
* STRING: a "string", as defined in Section 7 of [RFC8259] | STRING: a "string", as defined in Section 7 of [RFC8259] | |||
10.2. Registry Syntax | 10.2. Registry Syntax | |||
Using the above terms for the JSON structures, the syntax of a | Using the above terms for the JSON structures, the syntax of a | |||
registry is defined as follows: | registry is defined as follows: | |||
* rdap-bootstrap-registry: an OBJECT containing a MEMBER version and | rdap-bootstrap-registry: an OBJECT containing a MEMBER version and a | |||
a MEMBER publication, an optional MEMBER description, and a MEMBER | MEMBER publication, an optional MEMBER description, and a MEMBER | |||
services-list | services-list | |||
* version: a MEMBER with MEMBER-NAME "version" and MEMBER-VALUE a | version: a MEMBER with MEMBER-NAME "version" and MEMBER-VALUE a | |||
STRING | STRING | |||
* publication: a MEMBER with MEMBER-NAME "publication" and MEMBER- | publication: a MEMBER with MEMBER-NAME "publication" and MEMBER- | |||
VALUE a STRING | VALUE a STRING | |||
* description: a MEMBER with MEMBER-NAME "description" and MEMBER- | description: a MEMBER with MEMBER-NAME "description" and MEMBER- | |||
VALUE a STRING | VALUE a STRING | |||
* services-list: a MEMBER with MEMBER-NAME "services" and MEMBER- | services-list: a MEMBER with MEMBER-NAME "services" and MEMBER-VALUE | |||
VALUE a services-array | a services-array | |||
* services-array: an ARRAY, where each ARRAY-VALUE is a service | services-array: an ARRAY, where each ARRAY-VALUE is a service | |||
* service: an ARRAY of 2 elements, where the first ARRAY-VALUE is an | service: an ARRAY of 2 elements, where the first ARRAY-VALUE is an | |||
entry-list and the second ARRAY-VALUE is a service-uri-list | entry-list and the second ARRAY-VALUE is a service-uri-list | |||
* entry-list: an ARRAY, where each ARRAY-VALUE is an entry | entry-list: an ARRAY, where each ARRAY-VALUE is an entry | |||
* entry: a STRING | entry: a STRING | |||
* service-uri-list: an ARRAY, where each ARRAY-VALUE is a service- | service-uri-list: an ARRAY, where each ARRAY-VALUE is a service-uri | |||
uri | ||||
* service-uri: a STRING | service-uri: a STRING | |||
11. Security Considerations | 11. Security Considerations | |||
By providing a bootstrap method to find RDAP servers, this document | By providing a bootstrap method to find RDAP servers, this document | |||
helps to ensure that the end users will get the RDAP data from an | helps to ensure that the end users will get the RDAP data from an | |||
authoritative source, instead of from rogue sources. The method has | authoritative source instead of from rogue sources. The method has | |||
the same security properties as the RDAP protocols themselves. The | the same security properties as the RDAP protocols themselves. The | |||
transport used to access the registries uses TLS [RFC8446]. | transport used to access the registries uses TLS [RFC8446]. | |||
Additional considerations on using RDAP are described in [RFC7481]. | Additional considerations on using RDAP are described in [RFC7481]. | |||
12. Implementation Status | 12. IANA Considerations | |||
NOTE: Please remove this section and the reference to RFC 7942 prior | ||||
to publication as an RFC. | ||||
This section records the status of known implementations of the | ||||
protocol defined by this specification at the time of posting of this | ||||
Internet-Draft, and is based on a proposal described in [RFC7942]. | ||||
The description of implementations in this section is intended to | ||||
assist the IETF in its decision processes in progressing drafts to | ||||
RFCs. Please note that the listing of any individual implementation | ||||
here does not imply endorsement by the IETF. Furthermore, no effort | ||||
has been spent to verify the information presented here that was | ||||
supplied by IETF contributors. This is not intended as, and must not | ||||
be construed to be, a catalog of available implementations or their | ||||
features. Readers are advised to note that other implementations may | ||||
exist. | ||||
According to [RFC7942], "this will allow reviewers and working groups | ||||
to assign due consideration to documents that have the benefit of | ||||
running code, which may serve as evidence of valuable experimentation | ||||
and feedback that have made the implemented protocols more mature. | ||||
It is up to the individual working groups to use this information as | ||||
they see fit". | ||||
12.1. RDAP Browser Mobile Application | ||||
Responsible Organization: Viagenie | ||||
Author: Marc Blanchet | ||||
Location: https://viagenie.ca/rdapbrowser/ | ||||
Description: RDAP Browser is an RDAP client for domain names, IP | ||||
addresses and AS numbers fetching the IANA registries described in | ||||
this document to find the right authoritative RDAP server. End | ||||
user can query any domain name, IP address or AS number and the | ||||
registration data will be shown on the screen. | ||||
Level of Maturity: Production (i.e. in the Android and iOS App | ||||
stores since August 2019) | ||||
Contact Information: rdapbrowser@viagenie.ca | ||||
Information last updated: March 2021 | ||||
12.2. ICANN Lookup Web Application | ||||
Responsible Organization: ICANN | ||||
Location: https://lookup.icann.org | ||||
Description: ICANN's Domain Name Registration Data Lookup is an | ||||
RDAP client for domain names fetching the IANA regis tries | ||||
described in this document to find the right authoritative RDAP | ||||
server. End user can query any domain name and the registration | ||||
data will be shown on the screen. | ||||
Level of Maturity: Production | ||||
Information last updated: March 2021 | ||||
12.3. ARIN Implementation | ||||
Responsible Organization: ARIN | ||||
Base URL: https://rdap-bootstrap.arin.net/bootstrap ( Sample | ||||
query: https://rdap-bootstrap.arin.net/bootstrap/autnum/1 ) | ||||
Description: ARIN RDAP Bootstrap server aids clients by reading | ||||
the bootstrapping information published by IANA and using it to | ||||
send HTTP redirects to RDAP queries. RDAP clients | ||||
https://search.arin.net/ and NicInfo ( https://github.com/arineng/ | ||||
nicinfo ) use this bootstrap service. The underlying server | ||||
software is open-sourced at https://github.com/arineng/ | ||||
rdap_bootstrap_server . | ||||
Level of Maturity: Production | ||||
Contact Information: info@arin.net | ||||
Information Last Updated: Nov 2020 | ||||
13. IANA Considerations | ||||
IANA has created the RDAP Bootstrap Services Registries, listed | IANA has created the RDAP Bootstrap Services Registries listed below | |||
below, and made them available as JSON objects. The contents of | and made them available as JSON objects. The contents of these | |||
these registries are described in Section 3, Section 4, and | registries are described in Sections 3, 4, and 5, with the formal | |||
Section 5, with the formal syntax specified in Section 10. The | syntax specified in Section 10. The registries MUST be accessible | |||
registries MUST be accessible only through HTTPS (TLS [RFC8446]) | only through HTTPS (TLS [RFC8446]) transport. | |||
transport. | ||||
The process for adding or updating entries in these registries | The process for adding or updating entries in these registries | |||
differs from the normal IANA registry processes: these registries are | differs from the normal IANA registry processes: these registries are | |||
generated from the data, processes, and policies maintained by IANA | generated from the data, processes, and policies maintained by IANA | |||
in their allocation registries ([ipv4reg], [ipv6reg], [asreg], and | in their allocation registries ([ipv4reg], [ipv6reg], [asreg], and | |||
[domainreg]), with the addition of new RDAP server information. | [domainreg]), with the addition of new RDAP server information. | |||
IANA updates RDAP Bootstrap Services Registries entries from the | IANA updates RDAP Bootstrap Services Registries entries from the | |||
allocation registries as those registries are updated. | allocation registries as those registries are updated. | |||
This document does not change any policies related to the allocation | This document does not change any policies related to the allocation | |||
registries; IANA has provided a mechanism for collecting the RDAP | registries; IANA has provided a mechanism for collecting the RDAP | |||
server information. | server information. | |||
IANA has created a new top-level category on the Protocol Registries | IANA has created a new top-level category on the Protocol Registries | |||
page, <https://www.iana.org/protocols>. The group is called | page: <https://www.iana.org/protocols>. The group is called | |||
"Registration Data Access Protocol (RDAP)". Each of the RDAP | "Registration Data Access Protocol (RDAP)". Each of the RDAP | |||
Bootstrap Services Registries has been made available for general | Bootstrap Services Registries has been made available for on-demand | |||
public on-demand download in the JSON format, and that registry's URI | download in the JSON format by the general public, and that | |||
is listed directly on the Protocol Registries page. | registry's URI is listed directly on the Protocol Registries page. | |||
Other normal registries will be added to this group by other | Other normal registries will be added to this group by other | |||
documents, but the reason the URIs for these registries are clearly | documents, but the reason the URIs for these registries are clearly | |||
listed on the main page is to make those URIs obvious to implementers | listed on the main page is to make those URIs obvious to implementers | |||
-- these are registries that will be accessed by software, as well as | -- these are registries that will be accessed by software, as well as | |||
by humans using them for reference information. | by humans using them for reference information. | |||
Because these registries will be accessed by software, the download | Because these registries will be accessed by software, the download | |||
demand for the RDAP Bootstrap Services Registries may be unusually | demand for the RDAP Bootstrap Services Registries may be unusually | |||
high compared to normal IANA registries. The technical | high compared to normal IANA registries. The technical | |||
infrastructure by which registries are published has been put in | infrastructure by which registries are published has been put in | |||
place by IANA to support the load. Since the publication of | place by IANA to support the load. Since the publication of | |||
[RFC7484], no issue have been reported regarding the load or the | [RFC7484], no issues have been reported regarding the load or the | |||
service. | service. | |||
As discussed in Section 8, software that accesses these registries | As discussed in Section 8, software that accesses these registries | |||
will depend on the HTTP Expires header field to limit their query | will depend on the HTTP Expires header field to limit their query | |||
rate. It is, therefore, important for that header field to be | rate. It is, therefore, important for that header field to be | |||
properly set to provide timely information as the registries change, | properly set to provide timely information as the registries change, | |||
while maintaining a reasonable load on the IANA servers. | while maintaining a reasonable load on the IANA servers. | |||
The HTTP Content-Type returned to clients accessing these JSON- | The HTTP Content-Type returned to clients accessing these JSON- | |||
formatted registries MUST be "application/json", as defined in | formatted registries MUST be "application/json", as defined in | |||
[RFC8259]. | [RFC8259]. | |||
Because of how information in the RDAP Bootstrap Services Registries | Because of how information in the RDAP Bootstrap Services Registries | |||
is grouped and formatted, the registry entries may not be sortable. | is grouped and formatted, the registry entries may not be sortable. | |||
It is, therefore, not required or expected that the entries be | It is, therefore, not required or expected that the entries be | |||
ordered in any way. | ordered in any way. | |||
NOTE TO IANA: Please update the registries to reference this new RFC | 12.1. Bootstrap Service Registry for IPv4 Address Space | |||
instead of RFC 7484 once this document is approved by the IESG and | ||||
published by the RFC Editor". RFC-Editor, please remove this | ||||
paragraph before publication | ||||
13.1. Bootstrap Service Registry for IPv4 Address Space | ||||
Entries in this registry contain at least the following: | Entries in this registry contain at least the following: | |||
* a CIDR [RFC4632] specification of the network block being | * a CIDR [RFC4632] specification of the network block being | |||
registered. | registered | |||
* one or more URLs that provide the RDAP service regarding this | * one or more URLs that provide the RDAP service regarding this | |||
registration. | registration | |||
13.2. Bootstrap Service Registry for IPv6 Address Space | 12.2. Bootstrap Service Registry for IPv6 Address Space | |||
Entries in this registry contain at least the following: | Entries in this registry contain at least the following: | |||
* an IPv6 prefix [RFC5952] specification of the network block being | * an IPv6 prefix [RFC5952] specification of the network block being | |||
registered. | registered | |||
* one or more URLs that provide the RDAP service regarding this | * one or more URLs that provide the RDAP service regarding this | |||
registration. | registration | |||
13.3. Bootstrap Service Registry for AS Number Space | 12.3. Bootstrap Service Registry for AS Number Space | |||
Entries in this registry contain at least the following: | Entries in this registry contain at least the following: | |||
* a range of Autonomous System numbers being registered. | * a range of Autonomous System numbers being registered | |||
* one or more URLs that provide the RDAP service regarding this | * one or more URLs that provide the RDAP service regarding this | |||
registration. | registration | |||
13.4. Bootstrap Service Registry for Domain Name Space | 12.4. Bootstrap Service Registry for Domain Name Space | |||
Entries in this registry contain at least the following: | Entries in this registry contain at least the following: | |||
* a domain name attached to the root being registered. | * a domain name attached to the root being registered | |||
* one or more URLs that provide the RDAP service regarding this | * one or more URLs that provide the RDAP service regarding this | |||
registration. | registration | |||
14. References | 13. References | |||
14.1. Normative References | 13.1. Normative References | |||
[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, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | |||
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | |||
<https://www.rfc-editor.org/info/rfc3339>. | <https://www.rfc-editor.org/info/rfc3339>. | |||
skipping to change at page 17, line 47 ¶ | skipping to change at line 682 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
Interchange Format", STD 90, RFC 8259, | Interchange Format", STD 90, RFC 8259, | |||
DOI 10.17487/RFC8259, December 2017, | DOI 10.17487/RFC8259, December 2017, | |||
<https://www.rfc-editor.org/info/rfc8259>. | <https://www.rfc-editor.org/info/rfc8259>. | |||
14.2. Informative References | 13.2. Informative References | |||
[asreg] IANA, "Autonomous System (AS) Numbers", | [asreg] IANA, "Autonomous System (AS) Numbers", | |||
<https://www.iana.org/assignments/as-numbers>. | <https://www.iana.org/assignments/as-numbers>. | |||
[domainreg] | [domainreg] | |||
IANA, "Root Zone Database", | IANA, "Root Zone Database", | |||
<https://www.iana.org/domains/root/db>. | <https://www.iana.org/domains/root/db>. | |||
[ipv4reg] IANA, "IPv4 Address Space Registry", | [ipv4reg] IANA, "IANA IPv4 Address Space Registry", | |||
<https://www.iana.org/assignments/ipv4-address-space>. | <https://www.iana.org/assignments/ipv4-address-space>. | |||
[ipv6reg] IANA, "IPv6 Global Unicast Address Assignments", | [ipv6reg] IANA, "IPv6 Global Unicast Address Assignments", | |||
<https://www.iana.org/assignments/ipv6-unicast-address- | <https://www.iana.org/assignments/ipv6-unicast-address- | |||
assignments>. | assignments>. | |||
[REDIRECT-RDAP] | [REDIRECT-RDAP] | |||
Martinez, C., Zhou, L., and G. Rada, "Redirection Service | Martinez, C.M., Ed., Zhou, L., Ed., and G. Rada, | |||
for Registration Data Access Protocol", Work in Progress, | "Redirection Service for Registration Data Access | |||
draft-ietf-weirds-redirects-04, July 2014. | Protocol", Work in Progress, Internet-Draft, draft-ietf- | |||
weirds-redirects-04, July 2014, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-weirds- | ||||
redirects-04>. | ||||
[RFC7071] Borenstein, N. and M. Kucherawy, "A Media Type for | [RFC7071] Borenstein, N. and M. Kucherawy, "A Media Type for | |||
Reputation Interchange", RFC 7071, DOI 10.17487/RFC7071, | Reputation Interchange", RFC 7071, DOI 10.17487/RFC7071, | |||
November 2013, <https://www.rfc-editor.org/info/rfc7071>. | November 2013, <https://www.rfc-editor.org/info/rfc7071>. | |||
[RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | |||
RFC 7234, DOI 10.17487/RFC7234, June 2014, | RFC 7234, DOI 10.17487/RFC7234, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7234>. | <https://www.rfc-editor.org/info/rfc7234>. | |||
[RFC7481] Hollenbeck, S. and N. Kong, "Security Services for the | [RFC7481] Hollenbeck, S. and N. Kong, "Security Services for the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 7481, DOI 10.17487/RFC7481, March 2015, | RFC 7481, DOI 10.17487/RFC7481, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7481>. | <https://www.rfc-editor.org/info/rfc7481>. | |||
[RFC7484] Blanchet, M., "Finding the Authoritative Registration Data | [RFC7484] Blanchet, M., "Finding the Authoritative Registration Data | |||
(RDAP) Service", RFC 7484, DOI 10.17487/RFC7484, March | (RDAP) Service", RFC 7484, DOI 10.17487/RFC7484, March | |||
2015, <https://www.rfc-editor.org/info/rfc7484>. | 2015, <https://www.rfc-editor.org/info/rfc7484>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
Code: The Implementation Status Section", BCP 205, | ||||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
<https://www.rfc-editor.org/info/rfc7942>. | ||||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8521] Hollenbeck, S. and A. Newton, "Registration Data Access | [RFC8521] Hollenbeck, S. and A. Newton, "Registration Data Access | |||
Protocol (RDAP) Object Tagging", BCP 221, RFC 8521, | Protocol (RDAP) Object Tagging", BCP 221, RFC 8521, | |||
DOI 10.17487/RFC8521, November 2018, | DOI 10.17487/RFC8521, November 2018, | |||
<https://www.rfc-editor.org/info/rfc8521>. | <https://www.rfc-editor.org/info/rfc8521>. | |||
[RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | [RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | |||
Protocol (RDAP) Query Format", STD 95, RFC 9082, | Protocol (RDAP) Query Format", STD 95, RFC 9082, | |||
DOI 10.17487/RFC9082, June 2021, | DOI 10.17487/RFC9082, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9082>. | <https://www.rfc-editor.org/info/rfc9082>. | |||
[RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | [RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 9083, DOI 10.17487/RFC9083, June 2021, | RFC 9083, DOI 10.17487/RFC9083, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9083>. | <https://www.rfc-editor.org/info/rfc9083>. | |||
Appendix A. Changes since RFC 7484 | ||||
There are no substantive changes except for minor clarifications. | ||||
This update is primarily to meet the requirements for moving to an | ||||
Internet Standard. | ||||
Acknowledgements | Acknowledgements | |||
The WEIRDS working group had multiple discussions on this topic, | The WEIRDS Working Group had multiple discussions on this topic, | |||
including a session during IETF 84, where various methods such as | including a session during IETF 84, where various methods such as in- | |||
in-DNS and others were debated. The idea of using IANA registries | DNS and others were debated. The idea of using IANA registries was | |||
was discovered by the author during discussions with his colleagues | discovered by the author during discussions with his colleagues as | |||
as well as by a comment from Andy Newton. All the people involved in | well as by a comment from Andy Newton. All the people involved in | |||
these discussions are herein acknowledged. Linlin Zhou, Jean- | these discussions are herein acknowledged. Linlin Zhou, Jean- | |||
Philippe Dionne, John Levine, Kim Davies, Ernie Dainow, Scott | Philippe Dionne, John Levine, Kim Davies, Ernie Dainow, Scott | |||
Hollenbeck, Arturo Servin, Andy Newton, Murray Kucherawy, Tom | Hollenbeck, Arturo Servin, Andy Newton, Murray Kucherawy, Tom | |||
Harrison, Naoki Kambe, Alexander Mayrhofer, Edward Lewis, Pete | Harrison, Naoki Kambe, Alexander Mayrhofer, Edward Lewis, Pete | |||
Resnick, Alessandro Vesely, Bert Greevenbosch, Barry Leiba, Jari | Resnick, Alessandro Vesely, Bert Greevenbosch, Barry Leiba, Jari | |||
Arkko, Kathleen Moriaty, Stephen Farrell, Richard Barnes, and Jean- | Arkko, Kathleen Moriaty, Stephen Farrell, Richard Barnes, and Jean- | |||
Francois Tremblay have provided input and suggestions to this | Francois Tremblay provided input and suggestions to the first version | |||
document. Guillaume Leclanche was a coauthor of this document for | of this document. | |||
some revisions; his support is therein acknowledged and greatly | ||||
appreciated. The section on formal definition was inspired by | ||||
Section 6.2 of [RFC7071]. This new version got comments and | ||||
suggestions from: Gavin Brown, Patrick Mevzek, John Levine, Jasdip | ||||
Singh, George Michaelson, Scott Hollenbeck, Russ Housley, Joel | ||||
Halpern, Lars Eggert, Benjamin Kaduk, Scott Kelly, Eric Vyncke, John | ||||
Scudder, Erik Kline, Robert Wilton. Errata of RFC7484 were submitted | ||||
by Pieter Vandepitte and were applied to this version. | ||||
Changes since RFC7484 | ||||
There are no substantive changes except for updates to the | Guillaume Leclanche was a coauthor of this document for some | |||
implementation status and minor clarifications. This update is | revisions; his support is therein acknowledged and greatly | |||
primarily to meet the requirements for moving to Internet Standard. | appreciated. The section on formal definition was inspired by | |||
Section 6.2 of [RFC7071]. This new version [This document] received | ||||
comments and suggestions from Gavin Brown, Patrick Mevzek, John | ||||
Levine, Jasdip Singh, George Michaelson, Scott Hollenbeck, Russ | ||||
Housley, Joel Halpern, Lars Eggert, Benjamin Kaduk, Scott Kelly, Éric | ||||
Vyncke, John Scudder, Erik Kline, and Robert Wilton. Errata for RFC | ||||
7484 were submitted by Pieter Vandepitte and were applied to this | ||||
document. | ||||
Author's Address | Author's Address | |||
Marc Blanchet | Marc Blanchet | |||
Viagenie | Viagenie | |||
246 Aberdeen | 246 Aberdeen | |||
Quebec QC G1R 2E1 | Quebec QC G1R 2E1 | |||
Canada | Canada | |||
Email: Marc.Blanchet@viagenie.ca | Email: Marc.Blanchet@viagenie.ca | |||
URI: https://viagenie.ca | URI: https://viagenie.ca | |||
End of changes. 64 change blocks. | ||||
243 lines changed or deleted | 148 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/ |