RFC 8738
Automated Certificate Management Environment (ACME) IP Identifier Validation Extension
π RFC 8738: ACME IP Identifier Validation Extension π
Bestie, this one is SO iconic. β¨ It's a Standards Track doc from February 2020 by R.B. Shoemaker at ISRG (Roland Bracewell Shoemaker, roland@letsencrypt.org), and it doesn't obsolete or update anything. π It's an Internet Standards Track document, which means it went through public review and got approved by the IESG. π
The whole point? ACME was originally only built to issue certs for DNS names, and this doc is the glow-up that lets it issue certs for IPv4 and IPv6 addresses too. π¦ Copyright is IETF Trust, 2020, all rights reserved. πΈ
1. Introduction β¨
Okay so, the Automatic Certificate Management Environment (ACME) [RFC8555] only defines challenges for proving you control DNS host names, which means it can only issue certificates for DNS identifiers. π Kind of a bummer, right? This document fixes that by explaining how the challenges from original ACME and the TLS-ALPN extension [RFC8737] can be used to validate IP identifiers, so the certs can cover IPv4 and IPv6 addresses. π
2. Terminology π
Here's the vibe check on the key words: "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are only to be read as described in BCP 14 [RFC2119] [RFC8174] when they show up in ALL CAPS, exactly like that. π«Ά
3. IP Identifier π
[RFC8555] only defines the identifier type "dns", which is for fully qualified domain names. π So if an ACME server wants proof that a user controls an IPv4 or IPv6 address, it MUST create an authorization with the identifier type "ip". π The value field MUST hold the textual form of the address: as defined in Section 2.1 of [RFC1123] for IPv4, and in Section 4 of [RFC5952] for IPv6. π₯
Here's what an identifier for the IPv6 address 2001:db8::1 looks like:
{"type": "ip", "value": "2001:db8::1"}
4. Identifier Validation Challenges π¦
IP identifiers MAY be used with the existing "http-01" (see Section 8.3 of [RFC8555]) and "tls-alpn-01" (see Section 3 of [RFC8737]) challenges. π§ To use IP identifiers with these, their initial DNS resolution step MUST be skipped, and the IP address used for validation MUST be the value of the identifier. π
5. HTTP Challenge πΈ
For the "http-01" challenge, the Host header field MUST be set to the IP address being validated, per [RFC7230]. π The textual form of that address MUST be as defined in Section 2.1 of [RFC1123] for IPv4 and in Section 4 of [RFC5952] for IPv6. β¨
6. TLS with Application-Layer Protocol Negotiation (TLS ALPN) Challenge π
For the "tls-alpn-01" challenge, the subjectAltName extension in the validation certificate MUST contain a single iPAddress that matches the address being validated. π«Ά But here's the twist: [RFC6066] doesn't allow IP addresses in the Server Name Indication (SNI) extension HostName field. π So the server MUST instead use the IN-ADDR.ARPA [RFC1034] or IP6.ARPA [RFC3596] reverse mapping of the IP address as the HostName field value, rather than the IP address string itself. π₯ For example, if the IP address being validated is 2001:db8::1, the SNI HostName field should contain the following (the trailing period is on its own line in the original, shown here as written):
"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa"
.
7. DNS Challenge π
The existing "dns-01" challenge MUST NOT be used to validate IP identifiers. π« Absolutely not, no cap. π
8. IANA Considerations π
8.1. Identifier Types π
Per this document, a new type has been added to the "ACME Identifier Types" registry defined in Section 9.7.7 of [RFC8555], with Label "ip" and Reference "RFC 8738". π
8.2. Challenge Types π¦
Per this document, two new entries have been added to the "ACME Validation Methods" registry defined in Section 9.7.8 of [RFC8555]. π They look like this:
+-------------+-----------------+------+-----------+
| Label | Identifier Type | ACME | Reference |
+=============+=================+======+===========+
| http-01 | ip | Y | RFC 8738 |
+-------------+-----------------+------+-----------+
| tls-alpn-01 | ip | Y | RFC 8738 |
+-------------+-----------------+------+-----------+
Table 1
9. Security Considerations π₯
Okay, bestie, this part is SERIOUS, so read it carefully. π The extensions to ACME described in this document do not deviate from the broader threat model described in Section 10.1 of [RFC8555]. π‘οΈ
9.1. Certification Authority (CA) Policy Considerations π
This document only specifies how an ACME server may validate that a certificate applicant controls an IP identifier at the time of validation. β¨ The CA may wish to perform additional checks that aren't specified here. π For example, if the CA believes an IP identifier belongs to an ISP or cloud service provider with short delegation periods, they may wish to impose additional restrictions on certificates requested for that identifier. πΈ
10. Normative References π
- [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, <https://www.rfc-editor.org/info/rfc1034>.
- [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, DOI 10.17487/RFC1123, October 1989, <https://www.rfc-editor.org/info/rfc1123>.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
- [RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, "DNS Extensions to Support IP Version 6", STD 88, RFC 3596, DOI 10.17487/RFC3596, October 2003, <https://www.rfc-editor.org/info/rfc3596>.
- [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 Address Text Representation", RFC 5952, DOI 10.17487/RFC5952, August 2010, <https://www.rfc-editor.org/info/rfc5952>.
- [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) Extensions: Extension Definitions", RFC 6066, DOI 10.17487/RFC6066, January 2011, <https://www.rfc-editor.org/info/rfc6066>.
- [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, June 2014, <https://www.rfc-editor.org/info/rfc7230>.
- [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
- [RFC8555] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. Kasten, "Automatic Certificate Management Environment (ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019, <https://www.rfc-editor.org/info/rfc8555>.
- [RFC8737] Shoemaker, R.B., "Automated Certificate Management Environment (ACME) TLS Application-Layer Protocol Negotiation (ALPN) Challenge Extension", RFC 8737, DOI 10.17487/RFC8737, February 2020, <https://www.rfc-editor.org/info/rfc8737>.
Acknowledgments π«Ά
The author would like to thank everyone who contributed to this document and offered editorial and technical input, especially Jacob Hoffman-Andrews and Daniel McCarney. π
Author's Address π
Roland Bracewell Shoemaker Internet Security Research Group
Email: roland@letsencrypt.org π
π¦ where this page comes from
- ietf: rfc8738 2020-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms