Internet DRAFT - draft-tweedale-acme-server-capabilities
draft-tweedale-acme-server-capabilities
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,
<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, 27 October 2020, <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, March 1997,
<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,
May 2017, <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, February 2020,
<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, February 2020,
<https://www.rfc-editor.org/info/rfc8738>.
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,
<https://www.rfc-editor.org/info/rfc5280>.
Author's Address
Fraser Tweedale
Red Hat
Email: ftweedal@redhat.com
Tweedale Expires 20 May 2021 [Page 7]