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]