draft-ietf-acme-star-delegation-01.txt   draft-ietf-acme-star-delegation-02.txt 
ACME Y. Sheffer ACME Y. Sheffer
Internet-Draft Intuit Internet-Draft Intuit
Intended status: Standards Track D. Lopez Intended status: Standards Track D. Lopez
Expires: February 27, 2020 A. Pastor Perales Expires: 21 August 2020 A. Pastor Perales
Telefonica I+D Telefonica I+D
T. Fossati T. Fossati
Nokia ARM
August 26, 2019 18 February 2020
An ACME Profile for Generating Delegated STAR Certificates An ACME Profile for Generating Delegated STAR Certificates
draft-ietf-acme-star-delegation-01 draft-ietf-acme-star-delegation-02
Abstract Abstract
This memo proposes a profile of the ACME protocol that allows the This memo proposes a profile of the ACME protocol that allows the
owner of an identifier (e.g., a domain name) to delegate to a third owner of an identifier (e.g., a domain name) to delegate to a third
party access to a certificate associated with said identifier. A party access to a certificate associated with said identifier. A
primary use case is that of a CDN (the third party) terminating TLS primary use case is that of a CDN (the third party) terminating TLS
sessions on behalf of a content provider (the owner of a domain sessions on behalf of a content provider (the owner of a domain
name). The presented mechanism allows the owner of the identifier to name). The presented mechanism allows the owner of the identifier to
retain control over the delegation and revoke it at any time by retain control over the delegation and revoke it at any time by
skipping to change at page 1, line 43 skipping to change at page 1, line 43
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 27, 2020. This Internet-Draft will expire on 21 August 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents (https://trustee.ietf.org/
(https://trustee.ietf.org/license-info) in effect on the date of license-info) in effect on the date of publication of this document.
publication of this document. Please review these documents Please review these documents carefully, as they describe your rights
carefully, as they describe your rights and restrictions with respect and restrictions with respect to this document. Code Components
to this document. Code Components extracted from this document must extracted from this document must include Simplified BSD License text
include Simplified BSD License text as described in Section 4.e of as described in Section 4.e of the Trust Legal Provisions and are
the Trust Legal Provisions and are provided without warranty as provided without warranty as described in the Simplified BSD License.
described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Conventions used in this document . . . . . . . . . . . . 4 1.2. Conventions used in this document . . . . . . . . . . . . 4
2. Protocol Flow . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Protocol Flow . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Preconditions . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Preconditions . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Delegated Identity Profile . . . . . . . . . . . . . . . 6 2.3. Delegated Identity Profile . . . . . . . . . . . . . . . 6
2.3.1. Order Object on the NDC-IdO side . . . . . . . . . . 6 2.3.1. Order Object on the NDC-IdO side . . . . . . . . . . 6
2.3.2. Order Object on the IdO-CA side . . . . . . . . . . . 9 2.3.2. Order Object on the IdO-CA side . . . . . . . . . . . 9
2.3.3. Capability Discovery . . . . . . . . . . . . . . . . 9 2.3.3. Capability Discovery . . . . . . . . . . . . . . . . 9
2.3.4. On Cancelation . . . . . . . . . . . . . . . . . . . 9 2.3.4. On Cancelation . . . . . . . . . . . . . . . . . . . 9
3. CSR Template . . . . . . . . . . . . . . . . . . . . . . . . 9 3. CSR Template . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1. Rules . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1. Template Syntax . . . . . . . . . . . . . . . . . . . . . 9
3.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 10
4. Further Use Cases . . . . . . . . . . . . . . . . . . . . . . 11 4. Further Use Cases . . . . . . . . . . . . . . . . . . . . . . 11
4.1. CDNI . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1. CDNI . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1. Multiple Parallel Delegates . . . . . . . . . . . . . 12 4.1.1. Multiple Parallel Delegates . . . . . . . . . . . . . 11
4.1.2. Chained Delegation . . . . . . . . . . . . . . . . . 12 4.1.2. Chained Delegation . . . . . . . . . . . . . . . . . 11
4.2. STIR . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2. STIR . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
5.1. New fields in the "meta" Object within a Directory Object 13 5.1. New fields in the "meta" Object within a Directory
5.2. CSR Template Registry . . . . . . . . . . . . . . . . . . 13 Object . . . . . . . . . . . . . . . . . . . . . . . . . 12
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 5.2. CSR Template Registry . . . . . . . . . . . . . . . . . . 12
6.1. Restricting CDNs to the Delegation Mechanism . . . . . . 13 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12
6.2. TBC . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.1. Restricting CDNs to the Delegation Mechanism . . . . . . 12
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 6.2. TBC . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
8.1. Normative References . . . . . . . . . . . . . . . . . . 14 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13
8.2. Informative References . . . . . . . . . . . . . . . . . 15 8.1. Normative References . . . . . . . . . . . . . . . . . . 13
Appendix A. Document History . . . . . . . . . . . . . . . . . . 16 8.2. Informative References . . . . . . . . . . . . . . . . . 14
A.1. draft-ietf-acme-star-delegation-01 . . . . . . . . . . . 16 Appendix A. Document History . . . . . . . . . . . . . . . . . . 15
A.2. draft-ietf-acme-star-delegation-00 . . . . . . . . . . . 16 A.1. draft-ietf-acme-star-delegation-02 . . . . . . . . . . . 15
A.3. draft-sheffer-acme-star-delegation-01 . . . . . . . . . . 16 A.2. draft-ietf-acme-star-delegation-01 . . . . . . . . . . . 15
A.4. draft-sheffer-acme-star-delegation-00 . . . . . . . . . . 16 A.3. draft-ietf-acme-star-delegation-00 . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 A.4. draft-sheffer-acme-star-delegation-01 . . . . . . . . . . 16
A.5. draft-sheffer-acme-star-delegation-00 . . . . . . . . . . 16
Appendix B. CSR Template Schema . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
This document is a companion document to [I-D.ietf-acme-star]. To This document is a companion document to [I-D.ietf-acme-star]. To
avoid duplication, we give here a bare-bones description of the avoid duplication, we give here a bare-bones description of the
motivation for this solution. For more details and further use motivation for this solution. For more details and further use
cases, please refer to the introductory sections of cases, please refer to the introductory sections of
[I-D.ietf-acme-star]. [I-D.ietf-acme-star].
An Identifier Owner (IdO), that we can associate in the primary use An Identifier Owner (IdO), that we can associate in the primary use
skipping to change at page 3, line 51 skipping to change at page 4, line 4
In case the delegated identity is a domain name, this document also In case the delegated identity is a domain name, this document also
provides a way for the NDC to inform the IdO about the CNAME mappings provides a way for the NDC to inform the IdO about the CNAME mappings
that need to be installed in the IdO's DNS zone to enable the that need to be installed in the IdO's DNS zone to enable the
aliasing of the delegated name, thus allowing the complete name aliasing of the delegated name, thus allowing the complete name
delegation workflow to be handled using a single interface. delegation workflow to be handled using a single interface.
1.1. Terminology 1.1. Terminology
IdO Identifier Owner, the owner of an identifier (e.g., a domain IdO Identifier Owner, the owner of an identifier (e.g., a domain
name) that needs to be delegated. name) that needs to be delegated.
DNO Domain Name Owner, a specific kind of IdO whose identifier is a DNO Domain Name Owner, a specific kind of IdO whose identifier is a
domain name domain name
NDC Name Delegation Consumer, the entity to which the domain name is NDC Name Delegation Consumer, the entity to which the domain name is
delegated for a limited time. This is a CDN in the primary use delegated for a limited time. This is a CDN in the primary use
case (in fact, readers may note the symmetry of the two acronyms). case (in fact, readers may note the symmetry of the two acronyms).
CDN Content Delivery Network, a widely distributed network that CDN Content Delivery Network, a widely distributed network that
serves the domain's web content to a wide audience at high serves the domain's web content to a wide audience at high
performance. performance.
STAR Short-Term, Automatically Renewed X.509 certificates. STAR Short-Term, Automatically Renewed X.509 certificates.
ACME The IETF Automated Certificate Management Environment, a ACME The IETF Automated Certificate Management Environment, a
certificate management protocol. certificate management protocol.
CA A Certificate Authority that implements the ACME protocol. CA A Certificate Authority that implements the ACME protocol.
1.2. Conventions used in this document 1.2. Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. Protocol Flow 2. Protocol Flow
This section presents the protocol flow. For completeness, we This section presents the protocol flow. For completeness, we
include the ACME profile proposed in this draft as well as the include the ACME profile proposed in this draft as well as the
extended ACME protocol described in [I-D.ietf-acme-star]. extended ACME protocol described in [I-D.ietf-acme-star].
2.1. Preconditions 2.1. Preconditions
The protocol assumes the following preconditions are met: The protocol assumes the following preconditions are met:
o The IdO exposes an ACME server interface to the NDC(s) comprising * The IdO exposes an ACME server interface to the NDC(s) comprising
the account management interface; the account management interface;
o The NDC has registered an ACME account with the IdO; * The NDC has registered an ACME account with the IdO;
o NDC and IdO have agreed on a "CSR template" to use, including at a * NDC and IdO have agreed on a "CSR template" to use, including at a
minimum: subject name (e.g., "somesite.example.com"), requested minimum: subject name (e.g., "somesite.example.com"), requested
algorithms and key length, key usage, extensions (e.g., algorithms and key length, key usage, extensions (e.g.,
TNAuthList). The NDC is required to use this template for every TNAuthList). The NDC is required to use this template for every
CSR created under the same delegation; CSR created under the same delegation;
o IdO has registered an ACME account with the Certificate Authority * IdO has registered an ACME account with the Certificate Authority
(CA) (CA)
Note that even if the IdO implements the ACME server role, it is not Note that even if the IdO implements the ACME server role, it is not
acting as a CA: in fact, from the point of view of the certificate acting as a CA: in fact, from the point of view of the certificate
issuance process, the IdO only works as a "policing" forwarder of the issuance process, the IdO only works as a "policing" forwarder of the
NDC's key-pair and is responsible for completing the identity NDC's key-pair and is responsible for completing the identity
verification process towards the ACME CA. verification process towards the ACME CA.
2.2. Overview 2.2. Overview
The interaction between the NDC and the IdO is governed by the The interaction between the NDC and the IdO is governed by the
profiled ACME workflow detailed in Section 2.3. The interaction profiled ACME workflow detailed in Section 2.3. The interaction
between the IdO and the CA is ruled by ACME STAR [I-D.ietf-acme-star] between the IdO and the CA is ruled by ACME STAR [I-D.ietf-acme-star]
as well as any other ACME extension that applies (e.g., as well as any other ACME extension that applies (e.g.,
[I-D.ietf-acme-authority-token-tnauthlist] for STIR). [I-D.ietf-acme-authority-token-tnauthlist] for STIR).
The outline of the combined protocol is as follow (Figure 1): The outline of the combined protocol is as follow (Figure 1):
o NDC sends an Order for the delegated identifier to IdO; * NDC sends an Order for the delegated identifier to IdO;
o IdO creates an Order resource in state "ready" with a "finalize" * IdO creates an Order resource in state "ready" with a "finalize"
URL; URL;
o NDC immediately sends a finalize request (which includes the CSR) * NDC immediately sends a finalize request (which includes the CSR)
to the IdO; to the IdO;
o IdO verifies the CSR according to the agreed CSR template; * IdO verifies the CSR according to the agreed CSR template;
o If the CSR verification fails, the Order is moved to an "invalid" * If the CSR verification fails, the Order is moved to an "invalid"
state and everything stops; state and everything stops;
o If the CSR verification is successful, IdO moves the Order to * If the CSR verification is successful, IdO moves the Order to
state "processing", and sends an Order' (using its own account) state "processing", and sends an Order' (using its own account)
for the delegated identifier to the ACME STAR CA; for the delegated identifier to the ACME STAR CA;
o If the ACME STAR protocol fails, Order' moves to "invalid" and the * If the ACME STAR protocol fails, Order' moves to "invalid" and the
same state is reflected in the NDC Order; same state is reflected in the NDC Order;
o If the ACME STAR run is successful (i.e., Order' is "valid"), IdO * If the ACME STAR run is successful (i.e., Order' is "valid"), IdO
copies the "star-certificate" URL from Order' to Order and moves copies the "star-certificate" URL from Order' to Order and moves
its state "valid". its state "valid".
The NDC can now download, install and use the certificate bearing the The NDC can now download, install and use the certificate bearing the
name delegated by the IdO. name delegated by the IdO.
Note that, because the identity validation is suppressed, the NDC Note that, because the identity validation is suppressed, the NDC
sends the finalize request, including the CSR, to the IdO immediately sends the finalize request, including the CSR, to the IdO immediately
after the Order has been acknowledged. The IdO must buffer a (valid) after the Order has been acknowledged. The IdO must buffer a (valid)
CSR until the Validation phase completes successfully. CSR until the Validation phase completes successfully.
skipping to change at page 6, line 41 skipping to change at page 6, line 41
<------------------------------------ Certificate <------------------------------------ Certificate
Figure 1: End to end flow Figure 1: End to end flow
2.3. Delegated Identity Profile 2.3. Delegated Identity Profile
2.3.1. Order Object on the NDC-IdO side 2.3.1. Order Object on the NDC-IdO side
The Order object created by the NDC: The Order object created by the NDC:
o MUST contain identifiers with the new "delegated" field set to * MUST contain identifiers with the new "delegated" field set to
true; true;
o MUST NOT contain the notBefore and notAfter fields; * MUST NOT contain the notBefore and notAfter fields;
o MAY contain any of the "recurrent-*" fields listed in * MAY contain any of the "recurrent-*" fields listed in
Section 3.1.1 of [I-D.ietf-acme-star]; Section 3.1.1 of [I-D.ietf-acme-star];
o In case the identifier type is "dns", it MAY contain a "cname" * In case the identifier type is "dns", it MAY contain a "cname"
field with the alias of the identifier in the NDC domain. This field with the alias of the identifier in the NDC domain. This
field is used by the IdO to create the DNS aliasing needed to field is used by the IdO to create the DNS aliasing needed to
redirect the resolvers to the delegated entity. redirect the resolvers to the delegated entity.
POST /acme/new-order HTTP/1.1 POST /acme/new-order HTTP/1.1
Host: acme.dno.example Host: acme.dno.example
Content-Type: application/jose+json Content-Type: application/jose+json
{ {
"protected": base64url({ "protected": base64url({
skipping to change at page 7, line 31 skipping to change at page 7, line 31
"delegated": true, "delegated": true,
"cname": "abc.ndc.example." "cname": "abc.ndc.example."
} }
], ],
}), }),
"signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g" "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g"
} }
The Order object that is created on the IdO: The Order object that is created on the IdO:
o MUST start in the "ready" state; * MUST start in the "ready" state;
o MUST contain an "authorizations" array with zero elements; * MUST contain an "authorizations" array with zero elements;
o MUST NOT contain the "notBefore" and "notAfter" fields. * MUST NOT contain the "notBefore" and "notAfter" fields.
{ {
"status": "ready", "status": "ready",
"expires": "2016-01-01T00:00:00Z", "expires": "2016-01-01T00:00:00Z",
"identifiers": [ "identifiers": [
{ {
"type": "dns", "type": "dns",
"value": "abc.ndc.dno.example.", "value": "abc.ndc.dno.example.",
"delegated": true, "delegated": true,
"cname": "abc.ndc.example." "cname": "abc.ndc.example."
} }
], ],
"authorizations": [], "authorizations": [],
"finalize": "https://acme.dno.example/acme/order/TO8rfgo/finalize" "finalize": "https://acme.dno.example/acme/order/TO8rfgo/finalize"
} }
The IdO SHOULD copy any "recurrent-*" field from the NDC request into The IdO SHOULD copy any "recurrent-*" field from the NDC request into
the related STAR request to the ACME CA. the related STAR request to the ACME CA.
When the validation of the identifiers has been successfully When the validation of the identifiers has been successfully
completed and the certificate has been issued by the CA, the IdO: completed and the certificate has been issued by the CA, the IdO:
o MUST move its Order resource status to "valid"; * MUST move its Order resource status to "valid";
o MUST copy the "star-certificate" field from the STAR Order; * MUST copy the "star-certificate" field from the STAR Order;
The latter indirectly includes (via the NotBefore and NotAfter HTTP The latter indirectly includes (via the NotBefore and NotAfter HTTP
headers) the renewal timers needed by the NDC to inform its headers) the renewal timers needed by the NDC to inform its
certificate reload logic. certificate reload logic.
{
"status": "valid",
"expires": "2016-01-01T00:00:00Z",
"identifiers": [
{ {
"type": "dns", "status": "valid",
"value": "abc.ndc.dno.example.", "expires": "2016-01-01T00:00:00Z",
"delegated": true,
"cname": "abc.ndc.example."
}
],
"authorizations": [], "identifiers": [
{
"type": "dns",
"value": "abc.ndc.dno.example.",
"delegated": true,
"cname": "abc.ndc.example."
}
],
"finalize": "https://acme.dno.example/acme/order/TO8rfgo/finalize", "authorizations": [],
"star-certificate": "https://acme.ca.example/acme/order/yTr23sSDg9" "finalize": "https://acme.dno.example/acme/order/TO8rfgo/finalize",
}
"star-certificate": "https://acme.ca.example/acme/order/yTr23sSDg9"
}
If an "identifier" object of type "dns" was included, the IdO MUST If an "identifier" object of type "dns" was included, the IdO MUST
validate the specified CNAME at this point in the flow. The NDC and validate the specified CNAME at this point in the flow. The NDC and
IdO may have a pre-established list of valid CNAME values. At the IdO may have a pre-established list of valid CNAME values. At the
minimum, the IdO MUST verify that both DNS names are syntactically minimum, the IdO MUST verify that both DNS names are syntactically
valid. valid.
Following this validation, the IdO can add the CNAME records to its Following this validation, the IdO can add the CNAME records to its
zone: zone:
skipping to change at page 9, line 20 skipping to change at page 9, line 20
addition, to allow the NDC to download the certificate using addition, to allow the NDC to download the certificate using
unauthenticated GET, the IdO MUST add the recurrent-certificate-get unauthenticated GET, the IdO MUST add the recurrent-certificate-get
attribute and set it to true. attribute and set it to true.
2.3.3. Capability Discovery 2.3.3. Capability Discovery
In order to help a client to discover support for this profile, the In order to help a client to discover support for this profile, the
directory object of an ACME server MUST contain the following directory object of an ACME server MUST contain the following
attribute inside the "meta" field: attribute inside the "meta" field:
o star-delegation-enabled: boolean flag indicating support for the * star-delegation-enabled: boolean flag indicating support for the
profile specified in this memo. An ACME server that supports this profile specified in this memo. An ACME server that supports this
delegation profile MUST include this key, and MUST set it to true. delegation profile MUST include this key, and MUST set it to true.
2.3.4. On Cancelation 2.3.4. On Cancelation
It is worth noting that cancelation of the ACME STAR certificate is a It is worth noting that cancelation of the ACME STAR certificate is a
prerogative of the IdO. The NDC does not own the relevant account prerogative of the IdO. The NDC does not own the relevant account
key on the ACME CA, therefore it can't issue a cancelation request key on the ACME CA, therefore it can't issue a cancelation request
for the STAR cert. Potentially, since it holds the STAR cert private for the STAR cert. Potentially, since it holds the STAR cert private
key, it could request the revocation of a single STAR certificate. key, it could request the revocation of a single STAR certificate.
However, STAR explicitly disables the revokeCert interface. However, STAR explicitly disables the revokeCert interface.
3. CSR Template 3. CSR Template
The CSR template is used to express and constrain the shape of the The CSR template is used to express and constrain the shape of the
CSR that the NDC uses to request the certificate. The CSR is used CSR that the NDC uses to request the certificate. The CSR is used
for every CSR created under the same delegation. Its validation is a for every certificate created under the same delegation. Its
critical element in the security of the whole delegation mechanism. validation by the IdO is a critical element in the security of the
whole delegation mechanism.
The CSR template is defined using JSON Schema
[I-D.handrews-json-schema], a mature, widely used format, which is a
natural fit for the JSON-centric ACME.
Instead of defining every possible CSR attribute, this document takes Instead of defining every possible CSR attribute, this document takes
a minimalist approach by declaring only the minimum attribute set and a minimalist approach by declaring only the minimum attribute set and
deferring the registration of further, more specific, attributes to deferring the registration of further, more specific, attributes to
future documents. Critically, this document establishes the future documents.
necessary IANA registry and registration rules (see Section 5.2).
3.1. Rules 3.1. Template Syntax
TODO The template is a JSON document. Each field denotes one of:
* A mandatory field, where the template specifies the literal value
of that field. This is denoted by a literal string, such as
"client1.ndc.dno.example.com".
* A mandatory field, where the content of the field is defined by
the client. This is denoted by "**".
* An optional field, where the client decides whether the field is
included in the CSR and what its value is. This is denoted by
"*".
The NDC MUST NOT include in the CSR any fields that are not specified
in the template, and in particular MUST NOT add any extensions unless
those were previously negotiated out of band with the IdO.
The mapping between X.509 CSR fields and the template will be defined
in a future revision of this document.
When the CSR is received by the IdO, it MUST verify that the CSR is
consistent with the template that the IdO sent earlier. The IdO MAY
enforce additional constraints, e.g. by restricting field lengths.
3.2. Example 3.2. Example
The CSR template in Figure 2 represents one possible CSR template The CSR template in Figure 2 represents one possible CSR template
governing the delegation exchanges provided in the rest of this governing the delegation exchanges provided in the rest of this
document. document.
{ {
"type": "object", "keyTypes": [
"properties": { {
"san": { "PublicKeyType": "RSA",
"type": "string", "PublicKeyLength": 4096,
"pattern": "*.ndc.dno.example." "SignatureType": "sha256WithRSAEncryption"
}, }
"requested-algorithms": { ],
"type": "object", "subject": {
"properties": { "country": "CA",
"sigAlgo": { "stateOrProvince": "**",
"type": "string", "locality": "**",
"enum": [ "commonName": "**"
"ecdsa-with-sha256" },
] "extensions": {
}, "subjectAltName": {
}, "DNS": ["client1.ndc.dno.example"],
"required": [ "IP": ["1.2.3.4", "13::17"]
"sigAlgo" },
] "keyUsage": ["digitalSignature"],
}, "extendedKeyUsage": [
"key-usage": { "serverAuth", "timeStamping"
"type": "string", ]
"enum": [ }
"digitalSignature" }
] Figure 2: Example CSR template
}
},
"required": [
"san",
"requested-algorithms",
"key-length",
"key-usage"
],
"title": "csr-template",
"description": "Example CSR Template for IETF ACME STAR Delegation"
}
Figure 2: Example CSR template The template syntax is defined in Appendix B.
4. Further Use Cases 4. Further Use Cases
4.1. CDNI 4.1. CDNI
[I-D.ietf-cdni-interfaces-https-delegation] discusses several [I-D.ietf-cdni-interfaces-https-delegation] discusses several
solutions addressing different delegation requirements for the CDNI solutions addressing different delegation requirements for the CDNI
(CDN Interconnection) environment. This section discusses two of the (CDN Interconnection) environment. This section discusses two of the
stated requirements in the context of the STAR delegation workflow. stated requirements in the context of the STAR delegation workflow.
skipping to change at page 12, line 33 skipping to change at page 11, line 45
about dCDN. about dCDN.
The STAR protocol can be chained to support this use case: uCDN could The STAR protocol can be chained to support this use case: uCDN could
forward requests from dCDN to DNO, and forward responses back to forward requests from dCDN to DNO, and forward responses back to
dCDN. Whether such proxying is allowed is governed by policy and dCDN. Whether such proxying is allowed is governed by policy and
contracts between the parties. contracts between the parties.
A mechanism is necessary at the interface between uCDN and dCDN by A mechanism is necessary at the interface between uCDN and dCDN by
which the uCDN can advertise: which the uCDN can advertise:
o The namespace that is made available to the dCDN to mint its * The namespace that is made available to the dCDN to mint its
delegated names; delegated names;
o The policy for creating the key material (allowed algorithms, * The policy for creating the key material (allowed algorithms,
minimum key lengths, key usage, etc.) that the dCDN needs to minimum key lengths, key usage, etc.) that the dCDN needs to
satisfy. satisfy.
Note that such mechanism is provided by the CSR template. Note that such mechanism is provided by the CSR template.
4.2. STIR 4.2. STIR
As a second use case, we consider the delegation of credentials in As a second use case, we consider the delegation of credentials in
the STIR ecosystem [I-D.ietf-stir-cert-delegation]. the STIR ecosystem [I-D.ietf-stir-cert-delegation].
skipping to change at page 13, line 21 skipping to change at page 12, line 32
[[RFC Editor: please replace XXXX below by the RFC number.]] [[RFC Editor: please replace XXXX below by the RFC number.]]
5.1. New fields in the "meta" Object within a Directory Object 5.1. New fields in the "meta" Object within a Directory Object
This document adds the following entries to the ACME Directory This document adds the following entries to the ACME Directory
Metadata Fields: Metadata Fields:
+-------------------------+------------+-----------+ +-------------------------+------------+-----------+
| Field Name | Field Type | Reference | | Field Name | Field Type | Reference |
+-------------------------+------------+-----------+ +=========================+============+===========+
| star-delegation-enabled | boolean | RFC XXXX | | star-delegation-enabled | boolean | RFC XXXX |
+-------------------------+------------+-----------+ +-------------------------+------------+-----------+
Table 1
5.2. CSR Template Registry 5.2. CSR Template Registry
TODO TODO
6. Security Considerations 6. Security Considerations
6.1. Restricting CDNs to the Delegation Mechanism 6.1. Restricting CDNs to the Delegation Mechanism
When a web site is delegated to a CDN, the CDN can in principle When a web site is delegated to a CDN, the CDN can in principle
modify the web site at will, create and remove pages. This means modify the web site at will, create and remove pages. This means
skipping to change at page 13, line 46 skipping to change at page 13, line 11
non-ACME) HTTPS-based validation challenges and generate a non-ACME) HTTPS-based validation challenges and generate a
certificate for the site. This is true regardless of whether the certificate for the site. This is true regardless of whether the
CNAME mechanisms defined in the current document is used or not. CNAME mechanisms defined in the current document is used or not.
In some cases, this is the desired behavior: the domain owner trusts In some cases, this is the desired behavior: the domain owner trusts
the CDN to have full control of the cryptographic credentials for the the CDN to have full control of the cryptographic credentials for the
site. The current document however assumes that the domain owner site. The current document however assumes that the domain owner
only wants to delegate restricted control, and wishes to retain the only wants to delegate restricted control, and wishes to retain the
capability to cancel the CDN's credentials at a short notice. capability to cancel the CDN's credentials at a short notice.
To restrict certificate delegation only to the protocol defined here: Following is the proposed solution where the IdO wishes to ensure
that a rogue CDN cannot issue unauthorized certificates:
o The domain owner MUST make sure that the CDN cannot modify the DNS * The domain owner makes sure that the CDN cannot modify the DNS
records for the domain. The domain owner should ensure it is the records for the domain. The domain owner should ensure it is the
only entity authorized to modify the DNS zone. Typically, it only entity authorized to modify the DNS zone. Typically, it
establishes a CNAME resource record from a subdomain into a CDN- establishes a CNAME resource record from a subdomain into a CDN-
managed domain. managed domain.
* The domain owner uses a CAA record [RFC6844] to restrict
o The domain owner MUST use a CAA record [RFC6844] to restrict
certificate issuance for the domain to specific CAs that comply certificate issuance for the domain to specific CAs that comply
with ACME. with ACME and are known to implement [I-D.ietf-acme-caa].
o The domain owner MUST use the ACME-specific CAA mechanism * The domain owner uses the ACME-specific CAA mechanism
[I-D.ietf-acme-caa] to restrict issuance to a specific account key [I-D.ietf-acme-caa] to restrict issuance to a specific account key
which is controlled by it, and MUST require "dns-01" as the sole which is controlled by it, and MUST require "dns-01" as the sole
validation method. validation method.
We note that the above solution may need to be tweaked depending on
the exact capabilities and authorisation flows supported by the
selected CAs.
6.2. TBC 6.2. TBC
o CSR validation * CSR validation
o CNAME mappings * CNAME mappings
o Composition with ACME STAR * Composition with ACME STAR
o Composition with other ACME extensions * Composition with other ACME extensions
o Channel security * Channel security
7. Acknowledgments 7. Acknowledgments
This work is partially supported by the European Commission under This work is partially supported by the European Commission under
Horizon 2020 grant agreement no. 688421 Measurement and Architecture Horizon 2020 grant agreement no. 688421 Measurement and Architecture
for a Middleboxed Internet (MAMI). This support does not imply for a Middleboxed Internet (MAMI). This support does not imply
endorsement. endorsement.
8. References 8. References
8.1. Normative References 8.1. Normative References
[I-D.handrews-json-schema] [I-D.handrews-json-schema]
Wright, A. and H. Andrews, "JSON Schema: A Media Type for Wright, A., Andrews, H., Hutton, B., and G. Dennis, "JSON
Describing JSON Documents", draft-handrews-json-schema-01 Schema: A Media Type for Describing JSON Documents", Work
(work in progress), March 2018. in Progress, Internet-Draft, draft-handrews-json-schema-
02, 17 September 2019,
<http://www.ietf.org/internet-drafts/draft-handrews-json-
schema-02.txt>.
[I-D.ietf-acme-acme] [I-D.ietf-acme-acme]
Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. Barnes, R., Hoffman-Andrews, J., McCarney, D., and J.
Kasten, "Automatic Certificate Management Environment Kasten, "Automatic Certificate Management Environment
(ACME)", draft-ietf-acme-acme-18 (work in progress), (ACME)", Work in Progress, Internet-Draft, draft-ietf-
December 2018. acme-acme-18, 20 December 2018,
<http://www.ietf.org/internet-drafts/draft-ietf-acme-acme-
18.txt>.
[I-D.ietf-acme-caa] [I-D.ietf-acme-caa]
Landau, H., "CAA Record Extensions for Account URI and Landau, H., "CAA Record Extensions for Account URI and
ACME Method Binding", draft-ietf-acme-caa-10 (work in ACME Method Binding", Work in Progress, Internet-Draft,
progress), June 2019. draft-ietf-acme-caa-10, 20 June 2019,
<http://www.ietf.org/internet-drafts/draft-ietf-acme-caa-
10.txt>.
[I-D.ietf-acme-star] [I-D.ietf-acme-star]
Sheffer, Y., Lopez, D., Dios, O., Pastor, A., and T. Sheffer, Y., Lopez, D., Dios, O., Pastor, A., and T.
Fossati, "Support for Short-Term, Automatically-Renewed Fossati, "Support for Short-Term, Automatically-Renewed
(STAR) Certificates in Automated Certificate Management (STAR) Certificates in Automated Certificate Management
Environment (ACME)", draft-ietf-acme-star-07 (work in Environment (ACME)", Work in Progress, Internet-Draft,
progress), August 2019. draft-ietf-acme-star-11, 24 October 2019,
<http://www.ietf.org/internet-drafts/draft-ietf-acme-star-
11.txt>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification [RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification
Authority Authorization (CAA) Resource Record", RFC 6844, Authority Authorization (CAA) Resource Record", RFC 6844,
DOI 10.17487/RFC6844, January 2013, DOI 10.17487/RFC6844, January 2013,
<https://www.rfc-editor.org/info/rfc6844>. <https://www.rfc-editor.org/info/rfc6844>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
8.2. Informative References 8.2. Informative References
[I-D.ietf-acme-authority-token-tnauthlist] [I-D.ietf-acme-authority-token-tnauthlist]
Wendt, C., Hancock, D., Barnes, M., and J. Peterson, Wendt, C., Hancock, D., Barnes, M., and J. Peterson,
"TNAuthList profile of ACME Authority Token", draft-ietf- "TNAuthList profile of ACME Authority Token", Work in
acme-authority-token-tnauthlist-03 (work in progress), Progress, Internet-Draft, draft-ietf-acme-authority-token-
March 2019. tnauthlist-05, 4 November 2019,
<http://www.ietf.org/internet-drafts/draft-ietf-acme-
authority-token-tnauthlist-05.txt>.
[I-D.ietf-cdni-interfaces-https-delegation] [I-D.ietf-cdni-interfaces-https-delegation]
Fieau, F., Emile, S., and S. Mishra, "CDNI extensions for Fieau, F., Emile, S., and S. Mishra, "CDNI extensions for
HTTPS delegation", draft-ietf-cdni-interfaces-https- HTTPS delegation", Work in Progress, Internet-Draft,
delegation-01 (work in progress), May 2019. draft-ietf-cdni-interfaces-https-delegation-02, 4 November
2019,
<http://www.ietf.org/internet-drafts/draft-ietf-cdni-
interfaces-https-delegation-02.txt>.
[I-D.ietf-stir-cert-delegation] [I-D.ietf-stir-cert-delegation]
Peterson, J., "STIR Certificate Delegation", draft-ietf- Peterson, J., "STIR Certificate Delegation", Work in
stir-cert-delegation-00 (work in progress), July 2019. Progress, Internet-Draft, draft-ietf-stir-cert-delegation-
01, 4 November 2019,
<http://www.ietf.org/internet-drafts/draft-ietf-stir-cert-
delegation-01.txt>.
[RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion
Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, Token", RFC 8225, DOI 10.17487/RFC8225, February 2018,
<https://www.rfc-editor.org/info/rfc8225>. <https://www.rfc-editor.org/info/rfc8225>.
[RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity [RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity
Credentials: Certificates", RFC 8226, Credentials: Certificates", RFC 8226,
DOI 10.17487/RFC8226, February 2018, DOI 10.17487/RFC8226, February 2018,
<https://www.rfc-editor.org/info/rfc8226>. <https://www.rfc-editor.org/info/rfc8226>.
Appendix A. Document History Appendix A. Document History
[[Note to RFC Editor: please remove before publication.]] [[Note to RFC Editor: please remove before publication.]]
A.1. draft-ietf-acme-star-delegation-01 A.1. draft-ietf-acme-star-delegation-02
o Addition of the STIR use case. * Security considerations: review by Ryan Sleevi.
o Refinement of the CDNI use case. * CSR template simplified: instead of being a JSON Schema document
o Addition of the CSR template (partial, more work required). itself, it is now a simple JSON document which validates to a JSON
o Further security considerations (work in progress). Schema.
A.2. draft-ietf-acme-star-delegation-00 A.2. draft-ietf-acme-star-delegation-01
o Republished as a working group draft. * Refinement of the CDNI use case.
* Addition of the CSR template (partial, more work required).
* Further security considerations (work in progress).
A.3. draft-sheffer-acme-star-delegation-01 A.3. draft-ietf-acme-star-delegation-00
* Republished as a working group draft.
o Added security considerations about disallowing CDNs from issuing A.4. draft-sheffer-acme-star-delegation-01
* Added security considerations about disallowing CDNs from issuing
certificates for a delegated domain. certificates for a delegated domain.
A.4. draft-sheffer-acme-star-delegation-00 A.5. draft-sheffer-acme-star-delegation-00
o Initial version, some text extracted from draft-sheffer-acme-star- * Initial version, some text extracted from draft-sheffer-acme-star-
requests-02 requests-02
Appendix B. CSR Template Schema
Following is a JSON Schema definition of the CSR template. The
syntax used is that of draft 7 of [[json-schema]], which may not be
the latest version of the corresponding Internet Draft
[I-D.handrews-json-schema] at the time of publication.
While the CSR template must follow the syntax defined here, neither
the IdO nor the NDC are expected to validate it at run-time.
{
"title": "JSON Schema for the STAR Delegation CSR template",
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://ietf.org/acme/drafts/star-delegation/csr-template",
"$def": {
"distinguished-name": {
"$id": "#distinguished-name",
"type": "object",
"properties": {
"country": {"type": "string"},
"stateOrProvince": {"type": "string"},
"locality": {"type": "string"},
"organization": {"type": "string"},
"organizationalUnit": {"type": "string"},
"emailAddress": {"type": "string"},
"commonName": {"type": "string"}
},
"additionalProperties": false
},
"rsaKeyType": {
"$id": "#rsaKeyType",
"type": "object",
"properties": {
"PublicKeyType": {
"type": "string",
"const": "RSA"
},
"PublicKeyLength": {
"type": "integer"
},
"SignatureType": {
"type": "string",
"enum": ["sha256WithRSAEncryption"]
}
},
"additionalProperties": false
},
"ecKeyTYpe": {
"$id": "#ecKeyType",
"type": "object",
"properties": {
"PublicKeyType": {
"type": "string",
"const": "ecPublicKey"
},
"Curve": {
"type": "string",
"enum": ["secp521r1"]
},
"SignatureType": {
"type": "string",
"enum": ["ecdsa-with-SHA256"]
}
},
"additionalProperties": false
}
},
"type": "object",
"properties": {
"keyTypes": {
"type": "array",
"items": {
"oneOf": [
{"$ref": "#rsaKeyType"},
{"$ref": "#ecKeyType"}
]
}
},
"subject": {
"$ref": "#distinguished-name"
},
"extensions": {
"type": "object",
"properties": {
"keyUsage": {
"type": "array",
"items": {
"type": "string",
"enum": ["digitalSignature", "nonRepudiation", "keyEncipherment", "dataEncipherment", "keyAgreement", "keyCertSign", "cRLSign", "encipherOnly", "decipherOnly"]
}
},
"extendedKeyUsage": {
"type": "array",
"items": {
"type": "string",
"enum": ["serverAuth", "clientAuth", "codeSigning", "emailProtection", "timeStamping", "OCSPSigning"]
}
},
"subjectAltName": {
"type": "object",
"properties": {
"DNS": {
"type": "array",
"items": {
"type": "string",
"format": "hostname"
}
},
"IP": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"format": "ipv4"
},
{
"type": "string",
"format": "ipv6"
}
]
}
},
"Email": {
"type": "array",
"items": {
"type": "string",
"format": "email"
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Authors' Addresses Authors' Addresses
Yaron Sheffer Yaron Sheffer
Intuit Intuit
EMail: yaronf.ietf@gmail.com Email: yaronf.ietf@gmail.com
Diego Lopez Diego Lopez
Telefonica I+D Telefonica I+D
EMail: diego.r.lopez@telefonica.com Email: diego.r.lopez@telefonica.com
Antonio Agustin Pastor Perales Antonio Agustin Pastor Perales
Telefonica I+D Telefonica I+D
EMail: antonio.pastorperales@telefonica.com Email: antonio.pastorperales@telefonica.com
Thomas Fossati Thomas Fossati
Nokia ARM
EMail: thomas.fossati@nokia.com Email: thomas.fossati@arm.com
 End of changes. 73 change blocks. 
179 lines changed or deleted 357 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/