Internet-Draft ACME-CapAdv November 2020
Tweedale Expires 20 May 2021 [Page]
Workgroup:
Network Working Group
Internet-Draft:
draft-tweedale-acme-server-capabilities-00
Published:
Intended Status:
Standards Track
Expires:
Author:
F. Tweedale
Red Hat

Automated Certificate Management Environment (ACME) Server Capability Advertisements

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.

Table of Contents

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.

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.

{
  "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.

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

[ACME]
Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. Kasten, "Automatic Certificate Management Environment (ACME)", RFC 8555, DOI 10.17487/RFC8555, , <https://www.rfc-editor.org/info/rfc8555>.

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, , <https://tools.ietf.org/html/draft-ietf-acme-email-smime-10>.
[IANA-ACME-ID]
IANA, "ACME Identifier Types", <https://www.iana.org/assignments/acme/acme.xhtml#acme-identifier-types>.
[IANA-ACME-META]
IANA, "ACME Directory Metadata Fields", <https://www.iana.org/assignments/acme/acme.xhtml#acme-directory-metadata-fields>.
[IANA-ACME-VAL]
IANA, "ACME Validation Methods", <https://www.iana.org/assignments/acme/acme.xhtml#acme-validation-methods>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8737]
Shoemaker, R.B., "Automated Certificate Management Environment (ACME) TLS Application-Layer Protocol Negotiation (ALPN) Challenge Extension", RFC 8737, DOI 10.17487/RFC8737, , <https://www.rfc-editor.org/info/rfc8737>.
[RFC8738]
Shoemaker, R.B., "Automated Certificate Management Environment (ACME) IP Identifier Validation Extension", RFC 8738, DOI 10.17487/RFC8738, , <https://www.rfc-editor.org/info/rfc8738>.
[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, , <https://www.rfc-editor.org/info/rfc5280>.

Author's Address

Fraser Tweedale
Red Hat