Network Working Group F. Tweedale Internet-Draft Red Hat Intended status: Standards Track 16 November 2020 Expires: 20 May 2021 Automated Certificate Management Environment (ACME) Server Capability Advertisements draft-tweedale-acme-server-capabilities-00 Abstract Automated Certificate Management Environment (ACME) servers typically support only a subset of the ACME identifier types and validation types that have been defined. This document defines new fields for the the ACME directory object to allow servers to advertise their capabilities, assisting clients to select a suitable server. Status of This Memo This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 20 May 2021. Copyright Notice Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Tweedale Expires 20 May 2021 [Page 1] Internet-Draft ACME-CapAdv November 2020 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. ACME Directory Metadata Fields . . . . . . . . . . . . . . . 3 3.1. "supportedIdentifierTypes" Field . . . . . . . . . . . . 3 3.2. "supportedValidationMethods" Field . . . . . . . . . . . 3 4. Example Directory Object . . . . . . . . . . . . . . . . . . 3 5. Server Policy is Distinct From Server Capabilities . . . . . 4 5.1. Server Policy Advertisements (Possible Future Work) . . . 5 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 6.1. ACME Directory Metadata Fields . . . . . . . . . . . . . 5 7. Security Considerations . . . . . . . . . . . . . . . . . . . 5 8. Normative References . . . . . . . . . . . . . . . . . . . . 5 9. Informative References . . . . . . . . . . . . . . . . . . . 6 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 7 1. Introduction Automatic Certificate Management Environment [ACME] specifies a protocol by which a client may, in an automatable way, prove control of identifiers and obtain a certificate from an Certificate Authority (the ACME server). The ACME protocol can be (and has been) extended to support different identifier types and validation methods. Identifier types include "dns" [ACME], "ip" [RFC8738], and "email" [I-D.ietf-acme-email-smime]. Validation methods include "http-01" and "dns-01" [ACME], "tls-alpn-01" [RFC8737], and "email-reply-00" [I-D.ietf-acme-email-smime]. An ACME client could have awareness of and access to multiple ACME servers, and the servers could differ in which identifier types and validation methods they support. This document specifies a mechanism to assist ACME clients to select a server that supports the identifier type(s) it needs and the validation method(s) it can perform. It does so by defining new fields in the "meta" field of the ACME directory object, in which a server can advertise its capabilities. Clients can check these fields to see whether the server capabilities satisfy their requirements. 2. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. Tweedale Expires 20 May 2021 [Page 2] Internet-Draft ACME-CapAdv November 2020 3. ACME Directory Metadata Fields This specification defines new fields for the ACME directory object's "meta" field that servers can use to convey their supported capabilities. All of these new fields are OPTIONAL (as is the "meta" field itself). 3.1. "supportedIdentifierTypes" Field The "supportedIdentifierTypes" field lists identifier types supported by the server. Its value SHALL be a JSON array of JSON strings, each of which SHOULD be a value that is registered in the IANA ACME Identifier Types registry [IANA-ACME-ID]. The array SHOULD include each identifier type supported by the server. If this field is present in the directory object, clients SHOULD NOT attempt to create new orders containing identifier types that are not advertised. 3.2. "supportedValidationMethods" Field The "supportedValidationMethods" field lists validation methods (also called "challenge types") supported by the server. Its value SHALL be a JSON array of JSON strings, each of which SHOULD be a value that is registered in the IANA ACME Validation Methods registry [IANA-ACME-VAL]. The array SHOULD include each validation method supported by the server. If this field is present in the directory object, clients SHOULD NOT attempt to create new orders unless the advertised validation methods include methods that the client is capable of performing. 4. Example Directory Object The following example extends the example directory object from Section 7.1.1 of [ACME] with the "supportedIdentifierTypes" and "supportedValidationMethods" fields. This server advertises support for the "dns" and "ip" identifier types and the "dns-01" and "tls- alpn-01" validation methods. Tweedale Expires 20 May 2021 [Page 3] Internet-Draft ACME-CapAdv November 2020 { "newNonce": "https://example.com/acme/new-nonce", "newAccount": "https://example.com/acme/new-account", "newOrder": "https://example.com/acme/new-order", "newAuthz": "https://example.com/acme/new-authz", "revokeCert": "https://example.com/acme/revoke-cert", "keyChange": "https://example.com/acme/key-change", "meta": { "termsOfService": "https://example.com/acme/terms/2017-5-30", "website": "https://www.example.com/", "caaIdentities": ["example.com"], "externalAccountRequired": false, "supportedIdentifierTypes": ["dns", "ip"], "supportedValidationMethods": ["dns-01", "tls-alpn-01"] } } 5. Server Policy is Distinct From Server Capabilities The presence of an identifier type in the "supportedIdentifierTypes" field does not suggest that a server will issue a certificate for arbitrary identifiers of that type. Servers may refuse orders if the requested identifiers do not satisfy server policy. For example, a server might refuse to issue certificates for high value "dns" identifiers, or restrict "email" identifiers to their organisation's domain. Likewise, the "supportedValidationMethods" field does not reveal how the server decides which validation methods can be used for a given authorization. A server might support both the "http-01" and "dns- 01" validation methods, but as a matter of policy might use just one and not the other for a particular identifier (or reject the identifier outright). Therefore clients SHOULD handle issuance failure uniformly for all servers, regardless of whether capabilities were advertised or not. The exception is if the server advertised its supported identifier types, but rejected an order containing only supported identifier types with an "unsupportedIdentifier" error. A client MAY make a special effort to report this situation, which indicates a server misconfiguration. Tweedale Expires 20 May 2021 [Page 4] Internet-Draft ACME-CapAdv November 2020 5.1. Server Policy Advertisements (Possible Future Work) Consider the following scenario. An organisation operates an ACME server for issuing certificates to internal clients requesting certificates for "dns" identifiers under the "corp." DNS domain. ACME clients requesting certificates "dns" identifiers in other domains should use a different ACME server. Clients learn about the servers via a service discovery mechanism. For any particular "dns" identifier only one of the two ACME servers can issue the certificate. But there is no mechanism that can assist the client to make the correct choice. An ACME "meta" advertisement with content similar to the [X.509] Name Constraints extension could accommodate this and similar use cases. In an environment with access to multiple ACME servers, clients would be able to select a suitable server with greater accuracy. No practical mechanism could express all possible server policies (e.g. "don't issue certificates to people named Bob on Tuesdays"). It is also unclear whether it is worth the effort to devise and implement a server policy advertisement mechanism, or if it is better to allow clients to experience failures and fall back to other servers. This document leaves this as an open topic for possible future work. 6. IANA Considerations 6.1. ACME Directory Metadata Fields Please add the following entries to the ACME Directory Metadata Fields registry [IANA-ACME-META]: +----------------------------+-----------------+-----------+ | Field Name | Field Type | Reference | +----------------------------+-----------------+-----------+ | supportedIdentifierTypes | array of string | [thisdoc] | | supportedValidationMethods | array of string | [thisdoc] | +----------------------------+-----------------+-----------+ 7. Security Considerations This specification does not raise any security concerns beyond those of [ACME]. 8. Normative References Tweedale Expires 20 May 2021 [Page 5] Internet-Draft ACME-CapAdv November 2020 [ACME] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. Kasten, "Automatic Certificate Management Environment (ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019, . 9. Informative References [I-D.ietf-acme-email-smime] Melnikov, A., "Extensions to Automatic Certificate Management Environment for end-user S/MIME certificates", Work in Progress, Internet-Draft, draft-ietf-acme-email- smime-10, 27 October 2020, . [IANA-ACME-ID] IANA, "ACME Identifier Types", . [IANA-ACME-META] IANA, "ACME Directory Metadata Fields", . [IANA-ACME-VAL] IANA, "ACME Validation Methods", . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [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, . [RFC8738] Shoemaker, R.B., "Automated Certificate Management Environment (ACME) IP Identifier Validation Extension", RFC 8738, DOI 10.17487/RFC8738, February 2020, . Tweedale Expires 20 May 2021 [Page 6] Internet-Draft ACME-CapAdv November 2020 [X.509] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, . Author's Address Fraser Tweedale Red Hat Email: ftweedal@redhat.com Tweedale Expires 20 May 2021 [Page 7]