ACME | Y. Sheffer |
Internet-Draft | Intuit |
Intended status: Standards Track | D. Lopez |
Expires: December 18, 2017 | O. Gonzalez de Dios |
A. Pastor Perales | |
Telefonica I+D | |
T. Fossati | |
Nokia | |
June 16, 2017 |
Generating Certificate Requests for Short-Term, Automatically-Renewed (STAR) Certificates
draft-sheffer-acme-star-request-00
This memo proposes a protocol that allows a domain name owner to delegate to a third party (such as a CDN) control over a certificate that bears one or more names in that domain. Specifically the third party creates a Certificate Signing Request for the domain, which can then be used by the domain owner to request a short term and automatically renewed (STAR) certificate.
This is a component in a solution where a third-party such as a CDN can terminate TLS sessions on behalf of a domain name owner (e.g., a content provider), and the domain owner can cancel this delegation at any time without having to rely on certificate revocation mechanisms.
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 http://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 December 18, 2017.
Copyright (c) 2017 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 (http://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.
This document is a companion document to [I-D.ietf-acme-star]. To avoid duplication, we give here a barebones description of the motivation for this solution. For more details and further use cases, please refer to the introductory sections of [I-D.ietf-acme-star].
A content provider (referred to in this document as Domain Name Owner, DNO) has agreements in place with one or more Content Delivery Networks (CDNs) that are contracted to serve its content over HTTPS. The CDN terminates the HTTPS connection at one of its edge cache servers and needs to present its clients (browsers, set-top-boxes) a certificate whose name matches the authority of the URL that is requested, i.e. that of the DNO. However, many DNOs balk at sharing their long-term private keys with another organization and, equally, delegates (henceforth referred to as NDC, Name Delegation Consumer) would rather not have to handle other parties’ long-term secrets.
This document describes a protocol where the DNO and the NDC agree on a CSR template and the NDC generates a CSR for a private key that it holds. The DNO then uses the ACME protocol (as extended in [I-D.ietf-acme-star] to issue the STAR certificate.
The generated short-term certificate is automatically renewed by an ACME Certification Authority (CA) [I-D.ietf-acme-acme] and routinely fetched into the NDC and used for HTTPS connections. The DNO can end the delegation at any time by simply instructing the CA to stop the automatic renewal and letting the certificate expire shortly thereafter.
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 [RFC2119].
This section presents the protocol flow. For completeness, we include the STAR Interface proposed in this draft, as well as the extended ACME protocol as described in [I-D.ietf-acme-star].
The protocol assumes the following preconditions are met:
The NDC is required to use this template for every CSR created under the same delegation.
The NDC (STAR Client) generates a key-pair, wraps it into a Certificate Signing Request (CSR) according to the agreed upon CSR template, and sends it to the DNO (STAR Proxy) over the pre-established STAR channel. The DNO uses the NDC identity provided on the STAR channel to look up the CSR template that applies to the requesting NDC and decides whether or not to accept the request. Assuming everything is in order, it then “forwards” the NDC request to the ACME CA by means of the usual ACME application procedure. Specifically, the DNO, in its role as an ACME client, requests the CA to issue a STAR certificate, i.e., one that:
Other than that, the ACME protocol flows as normal between DNO and CA, in particular DNO is responsible for satisfying the requested ACME challenges until the CA is willing to issue the requested certificate. Per normal ACME processing, the DNO is given back an Order ID for the issued STAR certificate to be used in subsequent interaction with the CA (e.g., if the certificate needs to be terminated.)
Concurrently, a response is sent back to the NDC with an endpoint to poll for completion of the certificate generation process.
The bootstrap phase ends when the DNO obtains the OK from the ACME CA and posts the certificate’s URL to the “completion endpoint” where the NDC can retrieve it.
........................... STAR : STAR Proxy / : ACME/STAR Client : ACME Client : Server | : | | : | | : | | ACME registration | +-------. : | |<--------------------->| | | : | | STAR capabilities | | generate CSR : | | : | | | : | | : | |<------' : | | : | | : | | : | | Request new : | | : | +---------------------->| | : | | cert for CSR : | | : | | : +-------. | : | | : | | | : | | : | Verify CSR | : | | : | | | : | | : +<------' | : | | Accepted, poll at | | : | |<----------------------+ | : | | "completion URL" |- - - - - - - >| Application for | | : | +---------------------->| | : | | STAR certificate | | : | | : | | GET "completion URL" | | : Challenge | |<--------------------->| |<--------------------->| | in progress : | | : Response | | : | | : | | : | | Finalize/Certificate | | : | |<----------------------+ | GET "completion URL" |< - - - - - - -| : + Order Id | +---------------------->| | : | | : | | : | | 200, certificate URL | | : | |<----------------------+ | : | | and other metadata | | : | | : | | : | `.........................'
Figure 1: Bootstrap
The CA automatically re-issues the certificate (using the same CSR) before it expires and publishes it to the URL that the NDC has come to know at the end of the bootstrap phase. The NDC downloads and installs it. This process goes on until either:
STAR ACME/STAR Client Server | Retrieve cert | [...] |<--------------------->| | | +------. / | | | / | | Automatic renewal : | | | \ | |<-----' \ | Retrieve cert | | |<--------------------->| 72 hours | | | | +------. / | | | / | | Automatic renewal : | | | \ | |<-----' \ | Retrieve cert | | |<--------------------->| 72 hours | | | | +------. / | | | / | | Automatic renewal : | | | \ | |<-----' \ | | | | [...] | [...]
Figure 2: Auto renewal
The DNO may request early termination of the STAR certificate by including the Order ID in a certificate termination request to the ACME interface, defined below. After the CA receives and verifies the request, it shall:
Note that it is not necessary to explicitly revoke the short-term certificate.
STAR STAR ACME/STAR Client Proxy Server | | | | | Terminate Order ID | | +---------------------->| | | +-------. | | | | | | | End auto renewal | | | Remove cert link | | | etc. | | | | | | Done |<------' | |<----------------------+ | | | | | | Retrieve cert | +---------------------------------------------->| | Error: terminated | |<----------------------------------------------+ | |
Figure 3: Termination
This section describes the STAR API between the STAR Client and the STAR Proxy.
This API allows the STAR Client to request a STAR certificate via the STAR Proxy, using a previously agreed-upon CSR template.
The API consists of a single resource, “registration”. A new Registration is created with a POST request, and the Registration instance is polled to obtain its details.
To create a registration, use:
POST /star/registration Host: star-proxy.example.net Content-Type: application/json { "csr": "...", // CSR in PEM format "lifetime": 365, // requested registration lifetime in days, // between 1 and 1095 "validity": 7 // requested certificate validity in days }
The STAR Proxy MAY treat both “lifetime” and “validity” periods as hints. Upon success, the call returns the new Registration resource.
HTTP/1.1 201 Created Location: https://star-proxy.example.net/star/registration/567
The returned Registration can be polled until the information is available from the ACME server.
GET /star/registration/567 Host: star-proxy.example.net
In responding to poll requests while the validation is still in progress, the server MUST return a 200 (OK) response and MAY include a Retry-After header field to suggest a polling interval to the client. The Retry-After value MUST be expressed in seconds. If the Retry-After header is present, in order to avoid surprising interactions with heuristic expiration times, a max-age Cache-Control SHOULD also be present and set to a value slightly smaller than the Retry-After value.
HTTP/1.1 200 OK Retry-After: 10 Cache-Control: max-age=9 { "status": "pending" }
When the operation is successfully completed, the ACME Proxy returns:
HTTP/1.1 200 OK Expires: Sun, 09 Sep 2018 14:09:00 GMT { "status": "valid", // or "failed" "lifetime": 365, // lifetime of the registration in days, // possibly less than requested "certificates": "https://acme-server.example.org/certificates/A51A3" }
The Expires header applies to the Registration resource itself, and may be as small as a few minutes. It is unrelated to the Order’s lifetime which is measured in days or longer. The “certificates” attribute contains a URL of the certificate pull endpoint, received from the ACME Server.
If the registration fails for any reason, the server returns a “200 OK” response, with the status as “failed” and a “reason” attribute containing a human readable error message.
Traffic between the STAR Client and the STAR Proxy MUST be protected with HTTPS. For interoperability, all implementations MUST support HTTP Basic Authentication [RFC7617]. However some deployments MAY prefer mutually- authenticated HTTPS or two-legged OAUTH.
Members of the IETF CDNI (Content Delivery Network Interconnection) working group are interested in delegating authority over web content to CDNs. Their requirements are described in a draft [I-D.fieau-cdni-https-delegation] that compares several solutions. This section discusses two particular requirements in the context of the STAR protocol.
In some cases the DNO would like to delegate authority over a web site to multiple CDNs. This could happen if the DNO has agreements in place with different regional CDNs for different geographical regions. STAR enables this use case naturally, since each CDN can authenticate separately to the DNO specifying its CSR, and the DNO is free to allow or deny each certificate request according to its own policy.
In other cases, a content owner (DNO) delegates some domains to a large CDN (CDN1), which in turn delegates to a smaller regional CDN, CDN2. The DNO has a contractual relationship with CDN1, and CDN1 has a similar relationship with CDN2. However DNO may not even know about CDN2.
The STAR protocol does not prevent this use case, although there is no special support for it. CDN1 can forward requests from CDN2 to DNO, and forward responses back to CDN2. Whether such proxying is allowed is governed by policy and contracts between the parties.
The STAR protocol allows its client to obtain certificates bearing the DNO’s identity. Therefore strong client authentication is mandatory.
When multiple NDCs may connect to the same DNO, the STAR protocol’s authentication MUST allow the DNO to distinguish between different NDCs, and the DNO MUST associate different Registration objects to different clients. Among other benefits, this allows the DNO to cancel a STAR registration for one of its clients instead of all of them.
This work is partially supported by the European Commission under Horizon 2020 grant agreement no. 688421 Measurement and Architecture for a Middleboxed Internet (MAMI). This support does not imply endorsement.
[I-D.ietf-acme-acme] | Barnes, R., Hoffman-Andrews, J. and J. Kasten, "Automatic Certificate Management Environment (ACME)", Internet-Draft draft-ietf-acme-acme-06, March 2017. |
[I-D.sheffer-acme-star] | Sheffer, Y., Lopez, D., Dios, O. and T. Fossati, "Use of Short-Term, Automatically-Renewed (STAR) Certificates to Delegate Authority over Web Sites", Internet-Draft draft-sheffer-acme-star-02, May 2017. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC7617] | Reschke, J., "The 'Basic' HTTP Authentication Scheme", RFC 7617, DOI 10.17487/RFC7617, September 2015. |
[I-D.fieau-cdni-https-delegation] | Fieau, F., Emile, S. and S. Mishra, "HTTPS delegation in CDNI", Internet-Draft draft-fieau-cdni-https-delegation-01, March 2017. |
[[Note to RFC Editor: please remove before publication.]]