| rfc8739xml2.original.xml | rfc8739.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 --> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| ]> | ||||
| <?rfc rfcedstyle="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?rfc toc="yes"?> | ||||
| <?rfc tocindent="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc strict="yes"?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <?rfc text-list-symbols="o-*+"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="yes"?> | ||||
| <rfc ipr="trust200902" docName="draft-ietf-acme-star-11" category="std"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft -ietf-acme-star-11" number="8739" category="std" obsoletes="" updates="" submiss ionType="IETF" consensus="true" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> | |||
| <front> | <front> | |||
| <title abbrev="ACME STAR">Support for Short-Term, Automatically-Renewed (STA | <title abbrev="Support for ACME STAR">Support for Short-Term, | |||
| R) Certificates in Automated Certificate Management Environment (ACME)</title> | Automatically Renewed (STAR) Certificates in the Automated Certificate | |||
| Management Environment (ACME)</title> | ||||
| <seriesInfo name="RFC" value="8739"/> | ||||
| <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer"> | <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer"> | |||
| <organization>Intuit</organization> | <organization>Intuit</organization> | |||
| <address> | <address> | |||
| <email>yaronf.ietf@gmail.com</email> | <email>yaronf.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="D." surname="Lopez" fullname="Diego Lopez"> | <author initials="D." surname="Lopez" fullname="Diego Lopez"> | |||
| <organization>Telefonica I+D</organization> | <organization>Telefonica I+D</organization> | |||
| <address> | <address> | |||
| <email>diego.r.lopez@telefonica.com</email> | <email>diego.r.lopez@telefonica.com</email> | |||
| skipping to change at line 55 ¶ | skipping to change at line 42 ¶ | |||
| <address> | <address> | |||
| <email>antonio.pastorperales@telefonica.com</email> | <email>antonio.pastorperales@telefonica.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="T." surname="Fossati" fullname="Thomas Fossati"> | <author initials="T." surname="Fossati" fullname="Thomas Fossati"> | |||
| <organization>ARM</organization> | <organization>ARM</organization> | |||
| <address> | <address> | |||
| <email>thomas.fossati@arm.com</email> | <email>thomas.fossati@arm.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="March" year="2020" /> | ||||
| <date year="2019" month="October" day="24"/> | ||||
| <area>Security</area> | <area>Security</area> | |||
| <workgroup>ACME Working Group</workgroup> | <workgroup>ACME Working Group</workgroup> | |||
| <keyword>Internet-Draft</keyword> | ||||
| <abstract> | ||||
| <t>Public-key certificates need to be revoked when they are compromised, that is | ||||
| , when the associated private key is exposed | ||||
| to an unauthorized entity. | ||||
| However the revocation process is often unreliable. An alternative to revocation | ||||
| is issuing a sequence | ||||
| of certificates, each with a short validity period, and terminating this sequenc | ||||
| e upon compromise. | ||||
| This memo proposes an ACME extension to enable the issuance of short-term and au | ||||
| tomatically renewed (STAR) | ||||
| X.509 certificates.</t> | ||||
| <t>[RFC Editor: please remove before publication]</t> | ||||
| <t>While the draft is being developed, the editor’s version can be found at | <keyword>OCSP</keyword> | |||
| https://github.com/yaronf/I-D/tree/master/STAR.</t> | <keyword>CRL</keyword> | |||
| <keyword>revocation</keyword> | ||||
| <abstract> | ||||
| <t>Public key certificates need to be revoked when they are compromised, | ||||
| that is, when the associated private key is exposed to an unauthorized | ||||
| entity. However, the revocation process is often unreliable. An | ||||
| alternative to revocation is issuing a sequence of certificates, each | ||||
| with a short validity period, and terminating the sequence upon | ||||
| compromise. This memo proposes an Automated Certificate Management | ||||
| Environment (ACME) extension to enable the issuance of Short-Term, | ||||
| Automatically Renewed (STAR) X.509 certificates.</t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" title="Introduction"> | <section anchor="introduction" numbered="true" toc="default"> | |||
| <name>Introduction</name> | ||||
| <t>The ACME protocol <xref target="RFC8555"/> automates the process of issuing a | <t>The ACME protocol <xref target="RFC8555" format="default"/> automates | |||
| certificate to a named entity | the process of issuing a certificate to a named entity (an Identifier | |||
| (an Identifier Owner or IdO). Typically, but not always, the identifier is a dom | Owner or IdO). Typically, but not always, the identifier is a domain | |||
| ain name.</t> | name.</t> | |||
| <t>If the IdO wishes to obtain a string of short-term certificates | ||||
| <t>If the IdO wishes to obtain a string of short-term certificates originating f | originating from the same private key (see <xref target="TOPALOVIC" | |||
| rom the same private key (see <xref target="Topalovic"/> about why using short-l | format="default"/> about why using short-lived certificates might be | |||
| ived certificates might be preferable to explicit revocation), she must go throu | preferable to explicit revocation), she must go through the whole ACME | |||
| gh the whole ACME protocol each time a new short-term certificate is needed – e. | protocol each time a new short-term certificate is needed, e.g., every | |||
| g., every 2-3 days. | 2-3 days. If done this way, the process would involve frequent | |||
| If done this way, the process would involve frequent interactions between the re | interactions between the registration function of the ACME Certification | |||
| gistration function of the ACME Certification Authority (CA) and the identity pr | Authority (CA) and the identity provider infrastructure (e.g., DNS, web | |||
| ovider infrastructure (e.g.: DNS, web servers), therefore making the issuance of | servers), therefore making the issuance of short-term certificates | |||
| short-term certificates exceedingly dependent on the reliability of both.</t> | exceedingly dependent on the reliability of both.</t> | |||
| <t>This document presents an extension of the ACME protocol that | ||||
| <t>This document presents an extension of the ACME protocol that optimizes this | optimizes this process by making short-term certificates first-class | |||
| process by making short-term certificates first class objects in the ACME ecosys | objects in the ACME ecosystem. Once the Order for a string of | |||
| tem. | short-term certificates is accepted, the CA is responsible for | |||
| Once the Order for a string of short-term certificates is accepted, the CA is re | publishing the next certificate at an agreed upon URL before the | |||
| sponsible for publishing the next certificate at an agreed upon URL before the p | previous one expires. The IdO can terminate the automatic renewal | |||
| revious one expires. The IdO can terminate the automatic renewal before the neg | before the negotiated deadline if needed, e.g., on key compromise.</t> | |||
| otiated deadline, if needed – e.g., on key compromise.</t> | <t>For a more generic treatment of STAR certificates, readers are referred | |||
| to <xref target="I-D.nir-saag-star" format="default"/>.</t> | ||||
| <t>For a more generic treatment of STAR certificates, readers are referred to <x | <section anchor="name-delegation-use-case" numbered="true" toc="default"> | |||
| ref target="I-D.nir-saag-star"/>.</t> | <name>Name Delegation Use Case</name> | |||
| <section anchor="name-delegation-use-case" title="Name Delegation Use Case"> | ||||
| <t>The proposed mechanism can be used as a building block of an efficient | ||||
| name-delegation protocol, for example one that exists between a CDN or a cloud | ||||
| provider and its customers <xref target="I-D.ietf-acme-star-delegation"/>. At a | ||||
| ny time, | ||||
| the service customer (i.e., the IdO) can terminate the delegation by simply | ||||
| instructing the CA to stop the automatic renewal and letting the currently | ||||
| active certificate expire shortly thereafter.</t> | ||||
| <t>Note that in the name delegation use case the delegated entity needs to acces | <t>The proposed mechanism can be used as a building block of an | |||
| s | efficient name-delegation protocol, for example, one that exists between | |||
| a | ||||
| Content Distribution Network (CDN) or a cloud provider and its | ||||
| customers <xref target="I-D.ietf-acme-star-delegation" | ||||
| format="default"/>. At any time, the service customer (i.e., the IdO) | ||||
| can terminate the delegation by simply instructing the CA to stop the | ||||
| automatic renewal and letting the currently active certificate expire | ||||
| shortly thereafter.</t> | ||||
| <t>Note that in the name delegation use case, the delegated entity needs | ||||
| to access | ||||
| the auto-renewed certificate without being in possession of the ACME account | the auto-renewed certificate without being in possession of the ACME account | |||
| key that was used for initiating the STAR issuance. This leads to the optional | key that was used for initiating the STAR issuance. This leads to the optional | |||
| use of unauthenticated GET in this protocol (<xref target="certificate-get-nego" | use of unauthenticated GET in this protocol (<xref target="certificate-get-nego" | |||
| />).</t> | format="default"/>).</t> | |||
| </section> | ||||
| </section> | <section anchor="terminology" numbered="true" toc="default"> | |||
| <section anchor="terminology" title="Terminology"> | <name>Terminology</name> | |||
| <dl newline="false" spacing="compact" indent="8"> | ||||
| <t><list style="hanging"> | <dt>IdO</dt> | |||
| <t hangText='IdO'> | <dd> | |||
| Identifier Owner, the owner of an identifier, e.g.: a domain name, a telephone | Identifier Owner, the owner of an identifier, e.g., a domain name, a | |||
| number.</t> | telephone number, etc.</dd> | |||
| <t hangText='STAR'> | <dt>STAR</dt> | |||
| Short-Term and Automatically Renewed X.509 certificates.</t> | <dd> | |||
| </list></t> | Short-Term, Automatically Renewed X.509 certificates.</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="conventions-used-in-this-document" title="Conventions used in t | <section anchor="conventions-used-in-this-document" numbered="true" toc="d | |||
| his document"> | efault"> | |||
| <name>Conventions Used in This Document</name> | ||||
| <t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | ||||
| only when, they | ||||
| appear in all capitals, as shown here.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="protocol-flow" title="Protocol Flow"> | ||||
| <t>The following subsections describe the three main phases of the protocol:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Bootstrap: the IdO asks an ACME CA to create a short-term and automatically | ||||
| -renewed (STAR) certificate (<xref target="proto-bootstrap"/>);</t> | ||||
| <t>Auto-renewal: the ACME CA periodically re-issues the short-term certificate | ||||
| and posts it to the star-certificate URL (<xref target="proto-auto-renewal"/>); | ||||
| </t> | ||||
| <t>Termination: the IdO requests the ACME CA to discontinue the automatic rene | ||||
| wal of the certificate (<xref target="proto-termination"/>).</t> | ||||
| </list></t> | ||||
| <section anchor="proto-bootstrap" title="Bootstrap"> | <t> | |||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
| RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| <t>The IdO, in its role as an | </section> | |||
| </section> | ||||
| <section anchor="protocol-flow" numbered="true" toc="default"> | ||||
| <name>Protocol Flow</name> | ||||
| <t>The following subsections describe the three main phases of the protoco | ||||
| l:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>Bootstrap: the IdO asks an ACME CA to create a short-term, | ||||
| automatically renewed (STAR) certificate (<xref target="proto-bootstrap" | ||||
| format="default"/>);</li> | ||||
| <li>Auto-renewal: the ACME CA periodically reissues the short-term | ||||
| certificate and posts it to the star-certificate URL (<xref target="proto | ||||
| -auto-renewal" format="default"/>);</li> | ||||
| <li>Termination: the IdO requests the ACME CA to discontinue the | ||||
| automatic renewal of the certificate (<xref target="proto-termination" fo | ||||
| rmat="default"/>).</li> | ||||
| </ul> | ||||
| <section anchor="proto-bootstrap" numbered="true" toc="default"> | ||||
| <name>Bootstrap</name> | ||||
| <t>The IdO, in its role as an | ||||
| ACME client, requests the CA to issue a STAR certificate, i.e., one that:</t> | ACME client, requests the CA to issue a STAR certificate, i.e., one that:</t> | |||
| <ul spacing="compact"> | ||||
| <t><list style="symbols"> | <li>Has a short validity, e.g., 24 to 72 hours. Note that the exact de | |||
| <t>Has a short validity, e.g., 24 to 72 hours. Note that the exact definition | finition of "short" depends on the use case;</li> | |||
| of “short” depends on the use case;</t> | <li>Is automatically renewed by the CA for a certain period of time;</ | |||
| <t>Is automatically renewed by the CA for a certain period of time;</t> | li> | |||
| <t>Is downloadable from a (highly available) location.</t> | <li>Is downloadable from a (highly available) location.</li> | |||
| </list></t> | </ul> | |||
| <t>Other than that, the ACME protocol flows as usual between IdO and CA. | ||||
| <t>Other than that, the ACME protocol flows as usual between IdO and CA. | ||||
| In particular, IdO is responsible for satisfying the requested ACME challenges u ntil the CA is willing to issue the requested certificate. | In particular, IdO is responsible for satisfying the requested ACME challenges u ntil the CA is willing to issue the requested certificate. | |||
| Per normal ACME processing, the IdO is given back an Order resource associated w ith the STAR certificate to be used in subsequent interaction with the CA (e.g., if | Per normal ACME processing, the IdO is given back an Order resource associated w ith the STAR certificate to be used in subsequent interaction with the CA (e.g., if | |||
| the certificate needs to be terminated.)</t> | the certificate needs to be terminated.)</t> | |||
| <t>The bootstrap phase ends when the ACME CA updates the Order resource | ||||
| to include the URL for the issued STAR certificate.</t> | ||||
| </section> | ||||
| <section anchor="proto-auto-renewal" numbered="true" toc="default"> | ||||
| <t>The bootstrap phase ends when the ACME CA updates the Order resource to inclu | <name>Auto Renewal</name> | |||
| de the URL for the issued STAR certificate.</t> | ||||
| </section> | ||||
| <section anchor="proto-auto-renewal" title="Refresh"> | ||||
| <t>The CA issues the initial certificate after the authorization completes succe | ||||
| ssfully. | ||||
| It then automatically re-issues the certificate using the same CSR (and | ||||
| therefore the same identifier and public key) before the previous one expires, a | ||||
| nd publishes | ||||
| it to the URL that was returned to the IdO at the end of the bootstrap phase. | ||||
| The certificate user, which could be either the IdO itself or a delegated third | ||||
| party, as described in <xref target="I-D.ietf-acme-star-delegation"/>, obtains t | ||||
| he | ||||
| certificate (<xref target="fetching-certificates"/>) and uses it.</t> | ||||
| <t>The refresh process (<xref target="figprotorefresh"/>) goes on until either:< | ||||
| /t> | ||||
| <t><list style="symbols"> | <t>The CA issues the initial certificate after the authorization | |||
| <t>IdO explicitly terminates the automatic renewal (<xref target="proto-termin | completes successfully. It then automatically reissues the | |||
| ation"/>); or</t> | certificate using the same Certificate Signing Request (CSR) (and theref | |||
| <t>Automatic renewal expires.</t> | ore the same identifier and | |||
| </list></t> | public key) before the previous one expires and publishes it to the | |||
| URL that was returned to the IdO at the end of the bootstrap phase. | ||||
| The certificate user, which could be either the IdO itself or a | ||||
| delegated third party as described in <xref | ||||
| target="I-D.ietf-acme-star-delegation" format="default"/>, obtains the | ||||
| certificate (<xref target="fetching-certificates" format="default"/>) | ||||
| and uses it.</t> | ||||
| <t>The auto-renewal process (<xref target="figprotorefresh" format="defa | ||||
| ult"/>) goes on until either:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>IdO explicitly terminates the automatic renewal (<xref target="pro | ||||
| to-termination" format="default"/>); or</li> | ||||
| <li>Automatic renewal expires.</li> | ||||
| </ul> | ||||
| <figure title="Auto renewal" anchor="figprotorefresh"><artwork><![CDATA[ | <figure anchor="figprotorefresh"> | |||
| <name>Auto-renewal</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| Certificate ACME/STAR | Certificate ACME/STAR | |||
| User Server | User Server | |||
| | Retrieve cert | [...] | | Retrieve cert | [...] | |||
| |---------------------->| | | |---------------------->| | | |||
| | +------. / | | +------. / | |||
| | | | / | | | | / | |||
| | | Automatic renewal : | | | Automatic renewal : | |||
| | | | \ | | | | \ | |||
| | |<-----' \ | | |<-----' \ | |||
| | Retrieve cert | | | | Retrieve cert | | | |||
| skipping to change at line 204 ¶ | skipping to change at line 204 ¶ | |||
| | Retrieve cert | | | | Retrieve cert | | | |||
| |---------------------->| short validity period | |---------------------->| short validity period | |||
| | | | | | | | | |||
| | +------. / | | +------. / | |||
| | | | / | | | | / | |||
| | | Automatic renewal : | | | Automatic renewal : | |||
| | | | \ | | | | \ | |||
| | |<-----' \ | | |<-----' \ | |||
| | | | | | | | | |||
| | [...] | [...] | | [...] | [...] | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| </section> | </section> | |||
| <section anchor="proto-termination" title="Termination"> | <section anchor="proto-termination" numbered="true" toc="default"> | |||
| <name>Termination</name> | ||||
| <t>The IdO may request early termination of the STAR certificate by sending a ca | <t>The IdO may request early termination of the STAR certificate by | |||
| ncellation request to the Order resource, as described in <xref target="protocol | sending a cancellation request to the Order resource as described in | |||
| -details-canceling"/>. | <xref target="protocol-details-canceling" format="default"/>. After | |||
| After the CA receives and verifies the request, it shall:</t> | the CA receives and verifies the request, it shall:</t> | |||
| <ul spacing="compact"> | ||||
| <t><list style="symbols"> | <li>Cancel the automatic renewal process for the STAR certificate;</li | |||
| <t>Cancel the automatic renewal process for the STAR certificate;</t> | > | |||
| <t>Change the certificate publication resource to return an error indicating t | <li>Change the certificate publication resource to return an error ind | |||
| he termination of the issuance;</t> | icating the termination of the issuance;</li> | |||
| <t>Change the status of the Order to “canceled”.</t> | <li>Change the status of the Order to "canceled".</li> | |||
| </list></t> | </ul> | |||
| <t>Note that it is not necessary to explicitly revoke the short-term cer | ||||
| <t>Note that it is not necessary to explicitly revoke the short-term certificate | tificate.</t> | |||
| .</t> | <figure anchor="figprototerm"> | |||
| <name>Termination</name> | ||||
| <figure title="Termination" anchor="figprototerm"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Certificate ACME/STAR | Certificate ACME/STAR | |||
| User IdO Server | User IdO Server | |||
| | | | | | | | | |||
| | | Cancel Order | | | | Cancel Order | | |||
| | +---------------------->| | | +---------------------->| | |||
| | | +-------. | | | +-------. | |||
| | | | | | | | | | | |||
| | | | End auto renewal | | | | End auto-renewal | |||
| | | | Remove cert link | | | | Remove cert link | |||
| | | | etc. | | | | etc. | |||
| | | | | | | | | | | |||
| | | Done |<------' | | | Done |<------' | |||
| | |<----------------------+ | | |<----------------------+ | |||
| | | | | | | | | |||
| | | | | | | |||
| | Retrieve cert | | | Retrieve cert | | |||
| +---------------------------------------------->| | +---------------------------------------------->| | |||
| | Error: autoRenewalCanceled | | | Error: autoRenewalCanceled | | |||
| |<----------------------------------------------+ | |<----------------------------------------------+ | |||
| | | | | | | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="protocol-details" title="Protocol Details"> | ||||
| <t>This section describes the protocol details, namely the extensions | <section anchor="protocol-details" numbered="true" toc="default"> | |||
| <name>Protocol Details</name> | ||||
| <t>This section describes the protocol details, namely the extensions | ||||
| to the ACME protocol required to issue STAR certificates.</t> | to the ACME protocol required to issue STAR certificates.</t> | |||
| <section anchor="acme-extensions" numbered="true" toc="default"> | ||||
| <name>ACME Extensions</name> | ||||
| <t>This protocol extends the ACME protocol to allow for automatically re | ||||
| newed Orders.</t> | ||||
| <section anchor="star-order-ext" numbered="true" toc="default"> | ||||
| <name>Extending the Order Resource</name> | ||||
| <t>The Order resource is extended with a new "auto-renewal" object | ||||
| that <bcp14>MUST</bcp14> be present for STAR certificates. The | ||||
| "auto-renewal" object has the following structure:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>start-date (optional, string): The earliest date of validity | ||||
| of the first certificate issued, in <xref target="RFC3339" | ||||
| format="default"/> format. When omitted, the start date is as | ||||
| soon as authorization is complete.</li> | ||||
| <li>end-date (required, string): The latest date of validity of | ||||
| the last certificate issued, in <xref target="RFC3339" | ||||
| format="default"/> format.</li> | ||||
| <li>lifetime (required, integer): The maximum validity period of | ||||
| each STAR certificate, an integer that denotes a number of | ||||
| seconds. This is a nominal value that does not include any extra | ||||
| validity time due to server or client adjustment (see below).</li> | ||||
| <li>lifetime-adjust (optional, integer): The amount of "left pad" | ||||
| added to each STAR certificate, an integer that denotes a number | ||||
| of seconds. The default is 0. If present, the value of the | ||||
| notBefore field that would otherwise appear in the STAR | ||||
| certificates is pre-dated by the specified number of seconds. See | ||||
| <xref target="operational-cons-clocks" format="default"/> for | ||||
| why a client might want to use this control, and <xref | ||||
| target="computing-effective-cert-lifetime" format="default"/> for | ||||
| how the effective certificate lifetime is computed. The value | ||||
| reflected by the server, together with the value of the lifetime | ||||
| attribute, can be used by the client as a hint to configure its | ||||
| polling timer.</li> | ||||
| <li>allow-certificate-get (optional, boolean): See <xref | ||||
| target="certificate-get-nego" format="default"/>.</li> | ||||
| </ul> | ||||
| <section anchor="acme-extensions" title="ACME Extensions"> | <t>These attributes are included in a POST message when creating the | |||
| Order as part of the object encoded as "payload". They are returned | ||||
| <t>This protocol extends the ACME protocol, to allow for automatically renewed O | when the Order has been created. The ACME server <bcp14>MAY</bcp14> | |||
| rders.</t> | adjust them at will according to its local policy (see also <xref | |||
| target="capability-discovery" format="default"/>).</t> | ||||
| <section anchor="star-order-ext" title="Extending the Order Resource"> | <t>The optional notBefore and notAfter fields defined in <xref | |||
| target="RFC8555" sectionFormat="of" section="7.1.3"/> <bcp14>MUST | ||||
| <t>The Order resource is extended with a new “auto-renewal” object that MUST be | NOT</bcp14> be present in a STAR Order. If they are included, the | |||
| present for STAR certificates. The “auto-renewal” object has the following stru | server <bcp14>MUST</bcp14> return an error with status code 400 (Bad | |||
| cture:</t> | Request) and type "malformedRequest".</t> | |||
| <t><xref target="RFC8555" sectionFormat="of" section="7.1.6"/> | ||||
| <t><list style="symbols"> | defines the following values for the Order resource's status: | |||
| <t>start-date (optional, string): the earliest date of validity of the first c | "pending", "ready", "processing", "valid", and "invalid". In the | |||
| ertificate issued, | case of auto-renewal Orders, the status <bcp14>MUST</bcp14> be | |||
| in <xref target="RFC3339"/> format. When omitted, the start date is as soon as | "valid" as long as STAR certificates are being issued. This | |||
| authorization is complete.</t> | document adds a new status value: "canceled" (see <xref | |||
| <t>end-date (required, string): the latest date of validity of the last certif | target="protocol-details-canceling" format="default"/>).</t> | |||
| icate issued, | <t>A STAR certificate is by definition a dynamic resource, i.e., it | |||
| in <xref target="RFC3339"/> format.</t> | refers to an entity that varies over time. Instead of overloading | |||
| <t>lifetime (required, integer): the maximum validity period of each STAR cert | the semantics of the "certificate" attribute, this document defines | |||
| ificate, an integer that denotes a number of seconds. This is a nominal value w | a new attribute, "star-certificate", to be used instead of | |||
| hich does not include any extra validity time due to server or client adjustment | "certificate".</t> | |||
| (see below).</t> | <ul spacing="compact"> | |||
| <t>lifetime-adjust (optional, integer): amount of “left pad” added to each STA | <li>star-certificate (optional, string): A URL for the (rolling) | |||
| R certificate, an integer that denotes a number of seconds. The default is 0. | STAR certificate that has been issued in response to this | |||
| If present, the value of the notBefore field that would otherwise appear in the | Order.</li> | |||
| STAR certificates is pre-dated by the specified number of seconds. See also <xr | </ul> | |||
| ef target="operational-cons-clocks"/> for why a client might want to use this co | </section> | |||
| ntrol and <xref target="computing-effective-cert-lifetime"/> for how the effecti | <section anchor="protocol-details-canceling" numbered="true" toc="defaul | |||
| ve certificate lifetime is computed. The value reflected by the server, togethe | t"> | |||
| r with the value of the lifetime attribute, can be used by the client as a hint | <name>Canceling an Auto-renewal Order</name> | |||
| to configure its polling timer.</t> | <t>An important property of the auto-renewal Order is that it can be | |||
| <t>allow-certificate-get (optional, boolean): see <xref target="certificate-ge | canceled by the IdO with no need for certificate revocation. To | |||
| t-nego"/>.</t> | cancel the Order, the ACME client sends a POST to the Order URL as | |||
| </list></t> | shown in <xref target="figcancelingstarorder" | |||
| format="default"/>.</t> | ||||
| <t>These attributes are included in a POST message when creating the Order, as p | <figure anchor="figcancelingstarorder"> | |||
| art of the “payload” encoded object. | <name>Canceling an Auto-renewal Order</name> | |||
| They are returned when the Order has been created, and the ACME server MAY adjus | <sourcecode> | |||
| t them at will, according to its local policy (see also <xref target="capability | ||||
| -discovery"/>).</t> | ||||
| <t>The optional notBefore and notAfter fields defined in Section 7.1.3 of <xref | ||||
| target="RFC8555"/> MUST NOT be present in a STAR Order. | ||||
| If they are included, the server MUST return an error with status code 400 “Bad | ||||
| Request” and type “malformedRequest”.</t> | ||||
| <t>Section 7.1.6 of <xref target="RFC8555"/> defines the following values for th | ||||
| e Order resource’s status: “pending”, “ready”, “processing”, “valid”, and “inval | ||||
| id”. | ||||
| In the case of auto-renewal Orders, the status MUST be “valid” as long as STAR c | ||||
| ertificates are being issued. We add a new status value: “canceled”, see <xref | ||||
| target="protocol-details-canceling"/>.</t> | ||||
| <t>A STAR certificate is by definition a dynamic resource, i.e., it refers to an | ||||
| entity that varies over time. Instead of overloading the semantics of the “cer | ||||
| tificate” attribute, this document defines a new attribute “star-certificate” to | ||||
| be used instead of “certificate”.</t> | ||||
| <t><list style="symbols"> | ||||
| <t>star-certificate (optional, string): A URL for the (rolling) STAR certific | ||||
| ate that has been issued in response to this Order.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="protocol-details-canceling" title="Canceling an Auto-renewal Or | ||||
| der"> | ||||
| <t>An important property of the auto-renewal Order is that it can be canceled by | ||||
| the IdO, with no need for certificate revocation. To cancel the Order, the ACME | ||||
| client sends a POST to the Order URL as shown in <xref target="figcancelingstar | ||||
| order"/>.</t> | ||||
| <figure title="Canceling an Auto-renewal Order" anchor="figcancelingstarorder">< | ||||
| artwork><![CDATA[ | ||||
| POST /acme/order/ogfr8EcolOT HTTP/1.1 | POST /acme/order/ogfr8EcolOT HTTP/1.1 | |||
| Host: example.org | Host: example.com | |||
| Content-Type: application/jose+json | Content-Type: application/jose+json | |||
| { | { | |||
| "protected": base64url({ | "protected": base64url({ | |||
| "alg": "ES256", | "alg": "ES256", | |||
| "kid": "https://example.com/acme/acct/gw06UNhKfOve", | "kid": "https://example.com/acme/acct/gw06UNhKfOve", | |||
| "nonce": "Alc00Ap6Rt7GMkEl3L1JX5", | "nonce": "Alc00Ap6Rt7GMkEl3L1JX5", | |||
| "url": "https://example.com/acme/order/ogfr8EcolOT" | "url": "https://example.com/acme/order/ogfr8EcolOT" | |||
| }), | }), | |||
| "payload": base64url({ | "payload": base64url({ | |||
| "status": "canceled" | "status": "canceled" | |||
| }), | }), | |||
| "signature": "g454e3hdBlkT4AEw...nKePnUyZTjGtXZ6H" | "signature": "g454e3hdBlkT4AEw...nKePnUyZTjGtXZ6H" | |||
| } | } | |||
| ]]></artwork></figure> | </sourcecode> | |||
| </figure> | ||||
| <t>After a successful cancellation, the server MUST NOT issue any additional cer | <t>After a successful cancellation, the server <bcp14>MUST NOT</bcp14> | |||
| tificates for this Order.</t> | issue any additional certificates for this Order.</t> | |||
| <t>When the Order is canceled, the server:</t> | ||||
| <t>When the Order is canceled, the server:</t> | <ul spacing="compact"> | |||
| <li><bcp14>MUST</bcp14> update the status of the Order resource to " | ||||
| <t><list style="symbols"> | canceled" and <bcp14>MUST</bcp14> set an appropriate "expires" date;</li> | |||
| <t>MUST update the status of the Order resource to “canceled” and MUST set an | <li><bcp14>MUST</bcp14> respond with 403 (Forbidden) to any | |||
| appropriate “expires” date;</t> | requests to the star-certificate endpoint. The response | |||
| <t>MUST respond with 403 (Forbidden) to any requests to the star-certificate e | <bcp14>SHOULD</bcp14> provide additional information using a | |||
| ndpoint. The response SHOULD provide | problem document <xref target="RFC7807" format="default"/> with | |||
| additional information using a problem document <xref target="RFC7807"/> with ty | type "urn:ietf:params:acme:error:autoRenewalCanceled".</li> | |||
| pe “urn:ietf:params:acme:error:autoRenewalCanceled”.</t> | </ul> | |||
| </list></t> | <t>Issuing a cancellation for an Order that is not in "valid" state | |||
| is not allowed. A client <bcp14>MUST NOT</bcp14> send such a | ||||
| <t>Issuing a cancellation for an Order that is not in “valid” state is not allow | request, and a server <bcp14>MUST</bcp14> return an error response | |||
| ed. A client MUST NOT send such a request, and a server MUST return an error re | with status code 400 (Bad Request) and type | |||
| sponse with status code 400 (Bad Request) and type “urn:ietf:params:acme:error:a | "urn:ietf:params:acme:error:autoRenewalCancellationInvalid".</t> | |||
| utoRenewalCancellationInvalid”.</t> | <t>The state machine described in <xref | |||
| target="RFC8555" sectionFormat="of" section="7.1.6"/> is extended as i | ||||
| <t>The state machine described in Section 7.1.6 of <xref target="RFC8555"/> is e | llustrated in | |||
| xtended as illustrated in <xref target="fig-order-state-transitions-ext"/> (Stat | <xref target="fig-order-state-transitions-ext" format="default"/>.</t> | |||
| e Transitions for Order Objects).</t> | ||||
| <figure anchor="fig-order-state-transitions-ext"><artwork><![CDATA[ | <figure anchor="fig-order-state-transitions-ext"> | |||
| <name>State Transitions for STAR Order Objects</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| pending --------------+ | pending --------------+ | |||
| | | | | | | |||
| | All authz | | | All authz | | |||
| | "valid" | | | "valid" | | |||
| V | | V | | |||
| ready ---------------+ | ready ---------------+ | |||
| | | | | | | |||
| | Receive | | | Receive | | |||
| | finalize | | | finalize | | |||
| | request | | | request | | |||
| V | | V | | |||
| processing ------------+ | processing ------------+ | |||
| | | | | | | |||
| | First | | | First | | |||
| | certificate | Error or | | certificate | Error or | |||
| | issued | Authorization failure | | issued | Authorization failure | |||
| V V | | | | |||
| valid invalid | | V | |||
| | | | invalid | |||
| | STAR | ||||
| | Certificate | ||||
| | canceled | ||||
| V | V | |||
| canceled | valid----------------+ | |||
| | | | ||||
| ]]></artwork></figure> | | STAR | | |||
| | Certificate | Natural | ||||
| <t>Explicit certificate revocation using the revokeCert interface (Section 7.6 o | | canceled | Expiration | |||
| f <xref target="RFC8555"/>) is not supported for STAR certificates. A server re | V | | |||
| ceiving a revocation request for a STAR certificate MUST return an error respons | canceled ='= | |||
| e with status code 403 (Forbidden) and type “urn:ietf:params:acme:error:autoRene | ]]></artwork> | |||
| walRevocationNotSupported”.</t> | </figure> | |||
| <t>Explicit certificate revocation using the revokeCert interface | ||||
| </section> | (<xref target="RFC8555" sectionFormat="of" section="7.6"/>) is not | |||
| </section> | supported for STAR certificates. A server receiving a revocation | |||
| <section anchor="capability-discovery" title="Capability Discovery"> | request for a STAR certificate <bcp14>MUST</bcp14> return an error | |||
| response with status code 403 (Forbidden) and type | ||||
| <t>In order to support the discovery of STAR capabilities, the “meta” field insi | "urn:ietf:params:acme:error:autoRenewalRevocationNotSupported".</t> | |||
| de | </section> | |||
| the directory object defined in Section 9.7.6 of <xref target="RFC8555"/> is ext | </section> | |||
| ended with a | <section anchor="capability-discovery" numbered="true" toc="default"> | |||
| new “auto-renewal” object. The “auto-renewal” object MUST be present if the | <name>Capability Discovery</name> | |||
| server supports STAR. Its structure is as follows:</t> | <t>In order to support the discovery of STAR capabilities, the "meta" | |||
| field inside the directory object defined in <xref | ||||
| <t><list style="symbols"> | target="RFC8555" sectionFormat="of" section="9.7.6"/> is extended with a | |||
| <t>min-lifetime (required, integer): minimum acceptable value for auto-renewal | new | |||
| lifetime, in seconds.</t> | "auto-renewal" object. The "auto-renewal" object <bcp14>MUST</bcp14> | |||
| <t>max-duration (required, integer): maximum delta between the auto-renewal en | be present if the server supports STAR. Its structure is as | |||
| d-date and start-date, in seconds.</t> | follows:</t> | |||
| <t>allow-certificate-get (optional, boolean): see <xref target="certificate-ge | <ul spacing="compact"> | |||
| t-nego"/>.</t> | <li>min-lifetime (required, integer): Minimum acceptable value for | |||
| </list></t> | auto-renewal lifetime, in seconds.</li> | |||
| <li>max-duration (required, integer): Maximum allowed delta between | ||||
| <t>An example directory object advertising STAR support with one day min-lifetim | the end-date and start-date attributes of the Order's auto-renewal | |||
| e and one year max-duration, and supporting certificate fetching with an HTTP GE | object.</li> | |||
| T is shown in <xref target="figstardir"/>.</t> | <li>allow-certificate-get (optional, boolean): See <xref | |||
| target="certificate-get-nego" format="default"/>.</li> | ||||
| <figure title="Directory object with STAR support" anchor="figstardir"><artwork> | </ul> | |||
| <![CDATA[ | <t>An example directory object advertising STAR support with one-day | |||
| { | min-lifetime and one-year max-duration and supporting certificate | |||
| "new-nonce": "https://example.com/acme/new-nonce", | fetching with an HTTP GET is shown in <xref target="figstardir" | |||
| "new-account": "https://example.com/acme/new-account", | format="default"/>.</t> | |||
| "new-order": "https://example.com/acme/new-order", | <figure anchor="figstardir"> | |||
| "new-authz": "https://example.com/acme/new-authz", | <name>Directory Object with STAR Support</name> | |||
| "revoke-cert": "https://example.com/acme/revoke-cert", | ||||
| "key-change": "https://example.com/acme/key-change", | ||||
| "meta": { | ||||
| "terms-of-service": "https://example.com/acme/terms/2017-5-30", | ||||
| "website": "https://www.example.com/", | ||||
| "caa-identities": ["example.com"], | ||||
| "auto-renewal": { | ||||
| "min-lifetime": 86400, | ||||
| "max-duration": 31536000, | ||||
| "allow-certificate-get": true | ||||
| } | ||||
| } | ||||
| } | ||||
| ]]></artwork></figure> | ||||
| </section> | ||||
| <section anchor="fetching-certificates" title="Fetching the Certificates"> | ||||
| <t>The certificate is fetched from the star-certificate endpoint with POST-as-GE | <sourcecode type="JSON"> | |||
| T | { | |||
| as per <xref target="RFC8555"/> Section 7.4.2, unless client and server have | "new-nonce": "https://example.com/acme/new-nonce", | |||
| successfully negotiated the “unauthenticated GET” option described in | "new-account": "https://example.com/acme/new-account", | |||
| <xref target="certificate-get-nego"/>. In such case, the client can simply issu | "new-order": "https://example.com/acme/new-order", | |||
| e a GET to | "new-authz": "https://example.com/acme/new-authz", | |||
| the star-certificate resource without authenticating itself to the server as | "revoke-cert": "https://example.com/acme/revoke-cert", | |||
| illustrated in <xref target="figunauthgetstarcert"/>.</t> | "key-change": "https://example.com/acme/key-change", | |||
| "meta": { | ||||
| "terms-of-service": "https://example.com/acme/terms/2017-5-30", | ||||
| "website": "https://www.example.com/", | ||||
| "caa-identities": ["example.com"], | ||||
| "auto-renewal": { | ||||
| "min-lifetime": 86400, | ||||
| "max-duration": 31536000, | ||||
| "allow-certificate-get": true | ||||
| } | ||||
| } | ||||
| } | ||||
| </sourcecode> | ||||
| <figure title="Fetching a STAR certificate with unauthenticated GET" anchor="fig | </figure> | |||
| unauthgetstarcert"><artwork><![CDATA[ | </section> | |||
| <section anchor="fetching-certificates" numbered="true" toc="default"> | ||||
| <name>Fetching the Certificates</name> | ||||
| <t>The certificate is fetched from the star-certificate endpoint with | ||||
| POST-as-GET as per <xref target="RFC8555" sectionFormat="of" | ||||
| section="7.4.2"/> unless the client and server have successfully | ||||
| negotiated the "unauthenticated GET" option described in <xref | ||||
| target="certificate-get-nego" format="default"/>. In such case, the | ||||
| client can simply issue a GET to the star-certificate resource without | ||||
| authenticating itself to the server as illustrated in <xref | ||||
| target="figunauthgetstarcert" format="default"/>.</t> | ||||
| <figure anchor="figunauthgetstarcert"> | ||||
| <name>Fetching a STAR Certificate with Unauthenticated GET</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| GET /acme/cert/g7m3ZQeTEqa HTTP/1.1 | GET /acme/cert/g7m3ZQeTEqa HTTP/1.1 | |||
| Host: example.org | Host: example.com | |||
| Accept: application/pem-certificate-chain | Accept: application/pem-certificate-chain | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/pem-certificate-chain | Content-Type: application/pem-certificate-chain | |||
| Link: <https://example.com/acme/some-directory>;rel="index" | Link: <https://example.com/acme/some-directory>;rel="index" | |||
| Cert-Not-Before: Thu, 3 Oct 2019 00:00:00 GMT | Cert-Not-Before: Thu, 3 Oct 2019 00:00:00 GMT | |||
| Cert-Not-After: Thu, 10 Oct 2019 00:00:00 GMT | Cert-Not-After: Thu, 10 Oct 2019 00:00:00 GMT | |||
| -----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
| [End-entity certificate contents] | [End-entity certificate contents] | |||
| -----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
| -----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
| [Issuer certificate contents] | [Issuer certificate contents] | |||
| -----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
| -----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
| [Other certificate contents] | [Other certificate contents] | |||
| -----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>The Server SHOULD include the “Cert-Not-Before” and “Cert-Not-After” HTTP hea | <t>The server <bcp14>SHOULD</bcp14> include the "Cert-Not-Before" and | |||
| der fields in the response. | "Cert-Not-After" HTTP header fields in the response. When they exist, | |||
| When they exist, they MUST be equal to the respective fields inside the end-enti | they <bcp14>MUST</bcp14> be equal to the respective fields inside the | |||
| ty certificate. Their format is “HTTP-date” as defined in Section 7.1.1.2 of <xr | end-entity certificate. Their format is "HTTP-date" as defined in | |||
| ef target="RFC7231"/>. | <xref target="RFC7231" sectionFormat="of" section="7.1.1.2"/>. Their | |||
| Their purpose is to enable client implementations that do not parse the certific | purpose is to enable client implementations that do not parse the | |||
| ate.</t> | certificate.</t> | |||
| <t>The following are further clarifications regarding usage of these | ||||
| <t>Following are further clarifications regarding usage of these header fields, | header fields as per <xref target="RFC7231" sectionFormat="of" | |||
| as per <xref target="RFC7231"/> Sec. 8.3.1. | section="8.3.1"/>. All apply to both headers.</t> | |||
| All apply to both headers.</t> | <ul spacing="compact"> | |||
| <li>This header field is a single value, not a list.</li> | ||||
| <t><list style="symbols"> | <li>The header field is used only in responses to GET, HEAD, and | |||
| <t>This header field is a single value, not a list.</t> | POST-as-GET requests, and only for MIME types that denote public key | |||
| <t>The header field is used only in responses to GET, HEAD and POST-as-GET req | certificates.</li> | |||
| uests, and only for MIME types that | <li>Header field semantics are independent of context.</li> | |||
| denote public key certificates.</t> | <li>The header field is not hop-by-hop.</li> | |||
| <t>Header field semantics are independent of context.</t> | <li>Intermediaries <bcp14>MAY</bcp14> insert or delete the value;</li> | |||
| <t>The header field is not hop-by-hop.</t> | <li>If an intermediary inserts the value, it <bcp14>MUST</bcp14> | |||
| <t>Intermediaries MAY insert or delete the value;</t> | ensure that the newly added value matches the corresponding value in | |||
| <t>If an intermediary inserts the value, it MUST ensure that the newly added v | the certificate.</li> | |||
| alue matches the corresponding value in the certificate.</t> | <li>The header field is not appropriate for a Vary field.</li> | |||
| <t>The header field is not appropriate for a Vary field.</t> | <li>The header field is allowed within message trailers.</li> | |||
| <t>The header field is allowed within message trailers.</t> | <li>The header field is not appropriate within redirects.</li> | |||
| <t>The header field is not appropriate within redirects.</t> | <li>The header field does not introduce additional security | |||
| <t>The header field does not introduce additional security considerations. It | considerations. It discloses in a simpler form information that is | |||
| discloses in a simpler form information | already available inside the certificate.</li> | |||
| that is already available inside the certificate.</t> | </ul> | |||
| </list></t> | ||||
| <t>To improve robustness, the next certificate MUST be made available by the ACM | ||||
| E CA at the URL | ||||
| pointed by “star-certificate” at the latest halfway through the lifetime of the | ||||
| currently active certificate. | ||||
| It is worth noting that this has an implication in case of cancellation: in fact | ||||
| , from the time | ||||
| the next certificate is made available, the cancellation is not completely effec | ||||
| tive until the “next” certificate | ||||
| also expires. | ||||
| To avoid the client accidentally entering a broken state, the notBefore of the “ | ||||
| next” certificate MUST be set | ||||
| so that the certificate is already valid when it is published at the “star-certi | ||||
| ficate” URL. Note that the server | ||||
| might need to increase the auto-renewal lifetime-adjust value to satisfy the lat | ||||
| ter requirement. | ||||
| For a detailed description of the renewal scheduling logic, see <xref target="co | ||||
| mputing-effective-cert-lifetime"/>. | ||||
| For further rationale on the need for adjusting the certificate validity, see <x | ||||
| ref target="operational-cons-clocks"/>.</t> | ||||
| <t>The server MUST NOT issue any certificates for this Order with notAfter after | ||||
| the auto-renewal end-date.</t> | ||||
| <t>For expired Orders, the server MUST respond with 403 (Forbidden) to any reque | ||||
| sts to the star-certificate endpoint. The response SHOULD provide additional in | ||||
| formation using a problem document <xref target="RFC7807"/> with type “urn:ietf: | ||||
| params:acme:error:autoRenewalExpired”. Note that the Order resource’s state rema | ||||
| ins “valid”, as per the base protocol.</t> | ||||
| </section> | ||||
| <section anchor="certificate-get-nego" title="Negotiating an unauthenticated GET | ||||
| "> | ||||
| <t>In order to enable the name delegation workflow defined in | ||||
| <xref target="I-D.ietf-acme-star-delegation"/> as well as to increase the reliab | ||||
| ility of the | ||||
| STAR ecosystem (see <xref target="dependability"/> for details), this document d | ||||
| efines a | ||||
| mechanism that allows a server to advertise support for accessing | ||||
| star-certificate resources via unauthenticated GET (in addition | ||||
| to POST-as-GET), and a client to enable this service with per-Order | ||||
| granularity.</t> | ||||
| <t>Specifically, a server states its availability to grant unauthenticated acces | ||||
| s | ||||
| to a client’s Order star-certificate by setting the allow-certificate-get | ||||
| attribute to true in the auto-renewal object of the meta field inside the | ||||
| Directory object:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>allow-certificate-get (optional, boolean): If this field is present and set | ||||
| to true, the server allows GET (and HEAD) requests to star-certificate URLs.</t> | ||||
| </list></t> | ||||
| <t>A client states its desire to access the issued star-certificate via | ||||
| unauthenticated GET by adding an allow-certificate-get attribute to the | ||||
| auto-renewal object of the payload of its newOrder request and setting it to | ||||
| true.</t> | ||||
| <t><list style="symbols"> | ||||
| <t>allow-certificate-get (optional, boolean): If this field is present and set | ||||
| to true, the client requests the server to allow unauthenticated GET (and | ||||
| HEAD) to the star-certificate associated with this Order.</t> | ||||
| </list></t> | ||||
| <t>If the server accepts the request, it MUST reflect the attribute setting in t | ||||
| he resulting Order object.</t> | ||||
| <t>Note that even when the use of unauthenticated GET has been agreed, the serve | <t>To improve robustness, the next certificate <bcp14>MUST</bcp14> be made | |||
| r | available by the ACME CA at the URL indicated by "star-certificate" halfway | |||
| MUST also allow POST-as-GET requests to the star-certificate resource.</t> | through the lifetime of the currently active certificate at the latest. It is | |||
| worth noting that this has an implication in case of cancellation; in fact, | ||||
| from the time the next certificate is made available, the cancellation is not | ||||
| completely effective until the "next" certificate also expires. To avoid the | ||||
| client accidentally entering a broken state, the notBefore of the "next" | ||||
| certificate <bcp14>MUST</bcp14> be set so that the certificate is already | ||||
| valid when it is published at the "star-certificate" URL. Note that the | ||||
| server might need to increase the auto-renewal lifetime-adjust value to | ||||
| satisfy the latter requirement. For a detailed description of the renewal | ||||
| scheduling logic, see <xref target="computing-effective-cert-lifetime" | ||||
| format="default"/>. For further rationale on the need for adjusting the | ||||
| certificate validity, see <xref target="operational-cons-clocks" | ||||
| format="default"/>.</t> | ||||
| <t>The server <bcp14>MUST NOT</bcp14> issue any certificates for this | ||||
| Order with notAfter after the auto-renewal end-date.</t> | ||||
| <t>For expired Orders, the server <bcp14>MUST</bcp14> respond with 403 | ||||
| (Forbidden) to any requests to the star-certificate endpoint. The | ||||
| response <bcp14>SHOULD</bcp14> provide additional information using a | ||||
| problem document <xref target="RFC7807" format="default"/> with type | ||||
| "urn:ietf:params:acme:error:autoRenewalExpired". Note that the Order | ||||
| resource's state remains "valid", as per the base protocol.</t> | ||||
| </section> | ||||
| </section> | <section anchor="certificate-get-nego" numbered="true" toc="default"> | |||
| <section anchor="computing-effective-cert-lifetime" title="Computing notBefore a | <name>Negotiating an Unauthenticated GET</name> | |||
| nd notAfter of STAR Certificates"> | <t>In order to enable the name delegation workflow defined in <xref | |||
| target="I-D.ietf-acme-star-delegation" format="default"/> and to | ||||
| increase the reliability of the STAR ecosystem (see <xref | ||||
| target="dependability" format="default"/> for details), this document | ||||
| defines a mechanism that allows a server to advertise support for | ||||
| accessing star-certificate resources via unauthenticated GET (in | ||||
| addition to POST-as-GET), and a client to enable this service with | ||||
| per-Order granularity.</t> | ||||
| <t>We define “nominal renewal date” as the point in time when a new short-term | <t>Specifically, a server states its availability to grant | |||
| certificate for a given STAR Order is due. Its cadence is a multiple of the | unauthenticated access to a client's Order star-certificate by setting | |||
| Order’s auto-renewal lifetime that starts with the issuance of the first | the allow-certificate-get attribute to "true" in the auto-renewal object | |||
| short-term certificate and is upper-bounded by the Order’s auto-renewal | of the meta field inside the directory object:</t> | |||
| end-date (<xref target="fignrd"/>).</t> | <ul spacing="compact"> | |||
| <li>allow-certificate-get (optional, boolean): If this field is | ||||
| present and set to "true", the server allows GET (and HEAD) requests | ||||
| to star-certificate URLs.</li> | ||||
| </ul> | ||||
| <t>A client states its desire to access the issued star-certificate | ||||
| via unauthenticated GET by adding an allow-certificate-get attribute | ||||
| to the auto-renewal object of the payload of its newOrder request and | ||||
| setting it to "true".</t> | ||||
| <ul spacing="compact"> | ||||
| <li>allow-certificate-get (optional, boolean): If this field is | ||||
| present and set to "true", the client requests the server to allow | ||||
| unauthenticated GET (and HEAD) to the star-certificate associated | ||||
| with this Order.</li> | ||||
| </ul> | ||||
| <t>If the server accepts the request, it <bcp14>MUST</bcp14> reflect | ||||
| the attribute setting in the resulting order object.</t> | ||||
| <figure title="Nominal Renewal Date" anchor="fignrd"><artwork><![CDATA[ | <t>Note that even when the use of unauthenticated GET has been agreed | |||
| upon, the server <bcp14>MUST</bcp14> also allow POST-as-GET requests | ||||
| to the star-certificate resource.</t> | ||||
| </section> | ||||
| <section anchor="computing-effective-cert-lifetime" numbered="true" toc="d | ||||
| efault"> | ||||
| <name>Computing notBefore and notAfter of STAR Certificates</name> | ||||
| <t>We define "nominal renewal date" as the point in time when a new | ||||
| short-term certificate for a given STAR Order is due. Its cadence is | ||||
| a multiple of the Order's auto-renewal lifetime that starts with the | ||||
| issuance of the first short-term certificate and is upper-bounded by | ||||
| the Order's auto-renewal end-date (<xref target="fignrd" | ||||
| format="default"/>).</t> | ||||
| <figure anchor="fignrd"> | ||||
| <name>Nominal Renewal Date</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| T - STAR Order's auto-renewal lifetime | T - STAR Order's auto-renewal lifetime | |||
| end - STAR Order's auto-renewal end-date | end - STAR Order's auto-renewal end-date | |||
| nrd[i] - nominal renewal date of the i-th STAR certificate | nrd[i] - nominal renewal date of the i-th STAR certificate | |||
| .- T -. .- T -. .- T -. .__. | .- T -. .- T -. .- T -. .__. | |||
| / \ / \ / \ / end | / \ / \ / \ / end | |||
| -----------o---------o---------o---------o----X-------> t | -----------o---------o---------o---------o----X-------> t | |||
| nrd[0] nrd[1] nrd[2] nrd[3] | nrd[0] nrd[1] nrd[2] nrd[3] | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>The rules to determine the notBefore and notAfter values of the i-th STAR | <t>The rules to determine the notBefore and notAfter values of the i-th | |||
| STAR | ||||
| certificate are as follows:</t> | certificate are as follows:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| notAfter = min(nrd[i] + T, end) | notAfter = min(nrd[i] + T, end) | |||
| notBefore = nrd[i] - max(adjust_client, adjust_server) | notBefore = nrd[i] - max(adjust_client, adjust_server) | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>Where “adjust_client” is the min between the auto-renewal lifetime-adjust val | ||||
| ue | ||||
| (“la”), optionally supplied by the client, and the auto-renewal lifetime of | ||||
| each short-term certificate (“T”); “adjust_server” is the amount of padding | ||||
| added by the ACME server to make sure that all certificates being published are | ||||
| valid at the time of publication. The server padding is a fraction f of T | ||||
| (i.e., f * T with .5 <= f < 1, see <xref target="fetching-certificates"/>) | ||||
| :</t> | ||||
| <figure><artwork><![CDATA[ | <t>Where "adjust_client" is the minimum value between the auto-renewal | |||
| lifetime-adjust value ("la"), optionally supplied by the client, and | ||||
| the auto-renewal lifetime of each short-term certificate ("T"); | ||||
| "adjust_server" is the amount of padding added by the ACME server to | ||||
| make sure that all certificates being published are valid at the time | ||||
| of publication. The server padding is a fraction (f) of T (i.e., f | ||||
| * T with .5 <= f < 1; see <xref target="fetching-certificates" | ||||
| format="default"/>):</t> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| adjust_client = min(T, la) | adjust_client = min(T, la) | |||
| adjust_server = f * T | adjust_server = f * T | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>Note that the ACME server <bcp14>MUST NOT</bcp14> set the notBefore o | ||||
| <t>Note that the ACME server MUST NOT set the notBefore of the first STAR | f the first STAR | |||
| certificate to a date prior to the auto-renewal start-date.</t> | certificate to a date prior to the auto-renewal start-date.</t> | |||
| <section anchor="example" numbered="true" toc="default"> | ||||
| <section anchor="example" title="Example"> | <name>Example</name> | |||
| <t>Given a server that intends to publish the next STAR certificate ha | ||||
| <t>Given a server that intends to publish the next STAR certificate halfway | lfway | |||
| through the lifetime of the previous one, and a STAR Order with the following | through the lifetime of the previous one, and a STAR Order with the following | |||
| attributes:</t> | attributes:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| "auto-renewal": { | "auto-renewal": { | |||
| "start-date": "2019-01-10T00:00:00Z", | "start-date": "2019-01-10T00:00:00Z", | |||
| "end-date": "2019-01-20T00:00:00Z", | "end-date": "2019-01-20T00:00:00Z", | |||
| "lifetime": 345600, // 4 days | "lifetime": 345600, // 4 days | |||
| "lifetime-adjust": 259200 // 3 days | "lifetime-adjust": 259200 // 3 days | |||
| } | } | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>The amount of time that needs to be subtracted from each nominal re | ||||
| <t>The amount of time that needs to be subtracted from each nominal renewal | newal | |||
| date is 3 days – i.e., max(min(345600, 259200), 345600 * .5).</t> | date is 3 days, i.e., max(min(345600, 259200), 345600 * .5).</t> | |||
| <t>The notBefore and notAfter of each short-term certificate are:</t> | ||||
| <t>The notBefore and notAfter of each short-term certificate are:</t> | <table align="center"> | |||
| <thead> | ||||
| <texttable> | <tr> | |||
| <ttcol align='left'>notBefore</ttcol> | <th align="left">notBefore</th> | |||
| <ttcol align='left'>notAfter</ttcol> | <th align="left">notAfter</th> | |||
| <c>2019-01-10T00:00:00Z</c> | </tr> | |||
| <c>2019-01-14T00:00:00Z</c> | </thead> | |||
| <c>2019-01-11T00:00:00Z</c> | <tbody> | |||
| <c>2019-01-18T00:00:00Z</c> | <tr> | |||
| <c>2019-01-15T00:00:00Z</c> | <td align="left">2019-01-10T00:00:00Z</td> | |||
| <c>2019-01-20T00:00:00Z</c> | <td align="left">2019-01-14T00:00:00Z</td> | |||
| </texttable> | </tr> | |||
| <tr> | ||||
| <t>The value of the notBefore is also the time at which the client should expect | <td align="left">2019-01-11T00:00:00Z</td> | |||
| <td align="left">2019-01-18T00:00:00Z</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">2019-01-15T00:00:00Z</td> | ||||
| <td align="left">2019-01-20T00:00:00Z</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>The value of the notBefore is also the time at which the client sho | ||||
| uld expect | ||||
| the new certificate to be available from the star-certificate endpoint.</t> | the new certificate to be available from the star-certificate endpoint.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="operational-considerations" numbered="true" toc="default"> | ||||
| <name>Operational Considerations</name> | ||||
| <section anchor="operational-cons-clocks" numbered="true" toc="default"> | ||||
| <name>The Meaning of "Short Term" and the Impact of Skewed Clocks</name> | ||||
| <t>"Short Term" is a relative concept; therefore, trying to define a | ||||
| cutoff point that works in all cases would be a useless exercise. In | ||||
| practice, the expected lifetime of a STAR certificate will be counted | ||||
| in minutes, hours, or days, depending on different factors: the | ||||
| underlying requirements for revocation, how much clock synchronization | ||||
| is expected among relying parties and the issuing CA, etc.</t> | ||||
| <t>Nevertheless, this section attempts to provide reasonable | ||||
| suggestions for the Web use case, informed by current operational and | ||||
| research experience.</t> | ||||
| <t>Acer et al. <xref target="ACER" format="default"/> find that one | ||||
| of | ||||
| the main causes of "HTTPS error" warnings in browsers is misconfigured | ||||
| client clocks. In particular, they observe that roughly 95% of the | ||||
| "severe" clock skews -- the 6.7% of clock-related breakage reports | ||||
| that account for clients that are more than 24 hours behind -- happen | ||||
| to be within 6-7 days.</t> | ||||
| </section> | <t>In order to avoid these spurious warnings about a not yet valid | |||
| </section> | server certificate, site owners could use the auto-renewal | |||
| </section> | lifetime-adjust attribute to control the effective lifetime of their | |||
| <section anchor="operational-considerations" title="Operational Considerations"> | Web-facing certificates. The exact number depends on the percentage | |||
| of the "clock-skewed" population that the site owner expects to | ||||
| <section anchor="operational-cons-clocks" title="The Meaning of “Short Term” and | protect -- 5 days cover 97.3%, 7 days cover 99.6% -- as well as the | |||
| the Impact of Skewed Clocks"> | nominal auto-renewal lifetime of the STAR Order. Note that exact | |||
| choice is also likely to depend on the kinds of client that are | ||||
| <t>“Short Term” is a relative concept, therefore trying to define a cut-off poin | prevalent for a given site or app -- for example, Android and Mac OS | |||
| t that works in all cases would be a useless exercise. In practice, the expecte | clients are known to behave better than Windows clients. These | |||
| d lifetime of a STAR certificate will be counted in minutes, hours or days, depe | considerations are clearly out of scope of this document.</t> | |||
| nding on different factors: the underlying requirements for revocation, how much | ||||
| clock synchronization is expected among relying parties and the issuing CA, etc | ||||
| .</t> | ||||
| <t>Nevertheless, this section attempts to provide reasonable suggestions for the | ||||
| Web use case, informed by current operational and research experience.</t> | ||||
| <t>Acer et al. <xref target="Acer"/> find that one of the main causes of “HTTPS | ||||
| error” warnings in browsers is misconfigured client clocks. In particular, they | ||||
| observe that roughly 95% of the “severe” clock skews – the 6.7% of clock-relate | ||||
| d breakage reports which account for clients that are more than 24 hours behind | ||||
| – happen to be within 6-7 days.</t> | ||||
| <t>In order to avoid these spurious warnings about a not (yet) valid server cert | ||||
| ificate, site owners could use the auto-renewal lifetime-adjust attribute to con | ||||
| trol the effective lifetime of their Web facing certificates. The exact number | ||||
| depends on the percentage of the “clock-skewed” population that the site owner e | ||||
| xpects to protect – 5 days cover 97.3%, 7 days cover 99.6% – as well as the nomi | ||||
| nal auto-renewal lifetime of the STAR Order. Note that exact choice is also lik | ||||
| ely to depend on the kinds of client that is prevalent for a given site or app – | ||||
| for example, Android and Mac OS clients are known to behave better than Windows | ||||
| clients. These considerations are clearly out of scope of the present document | ||||
| .</t> | ||||
| <t>In terms of security, STAR certificates and certificates with OCSP must-stapl | ||||
| e <xref target="RFC7633"/> can be considered roughly equivalent if the STAR cert | ||||
| ificate’s and the OCSP response’s lifetimes are the same. Given OCSP responses | ||||
| can be cached on average for 4 days <xref target="Stark"/>, it is RECOMMENDED th | ||||
| at a STAR certificate that is used on the Web has an “effective” lifetime (exclu | ||||
| ding any adjustment to account for clock skews) no longer than 4 days.</t> | ||||
| </section> | ||||
| <section anchor="impact-on-certificate-transparency-ct-logs" title="Impact on Ce | ||||
| rtificate Transparency (CT) Logs"> | ||||
| <t>Even in the highly unlikely case STAR becomes the only certificate issuance m | ||||
| odel, | ||||
| discussion with the IETF TRANS Working Group and Certificate Transparency (CT) | ||||
| logs implementers suggests that existing CT Log Server implementations | ||||
| are capable of sustaining the resulting 100-fold increase in ingestion | ||||
| rate. Additionally, such a future, higher load could be managed with a variety | ||||
| of techniques (e.g., sharding by modulo of certificate hash, using “smart” | ||||
| load-balancing CT proxies, etc.). With regards to the increase in the log | ||||
| size, current CT log growth is already being managed with schemes like Chrome’s | ||||
| Log Policy <xref target="OBrien"/> which allow Operators to define their log lif | ||||
| e-cycle; and | ||||
| allowing the CAs, User Agents, Monitors, and any other interested entities to | ||||
| build-in support for that life-cycle ahead of time.</t> | ||||
| </section> | ||||
| <section anchor="dependability" title="HTTP Caching and Dependability"> | ||||
| <t>When using authenticated POST-as-GET, the HTTPS endpoint from where the STAR | ||||
| certificate is fetched can’t be easily replicated by an on-path HTTP cache. | ||||
| Reducing the caching properties of the protocol makes STAR clients increasingly | ||||
| dependent on the ACME server availability. This might be problematic given the | ||||
| relatively high rate of client-server interactions in a STAR ecosystem and | ||||
| especially when multiple endpoints (e.g., a high number of CDN edge nodes) end | ||||
| up requesting the same certificate. | ||||
| Clients and servers should consider using the mechanism described in | ||||
| <xref target="certificate-get-nego"/> to mitigate the risk.</t> | ||||
| <t>When using unauthenticated GET to fetch the STAR certificate, the server SHAL | <t>In terms of security, STAR certificates and certificates with the | |||
| L | Online Certificate Status Protocol (OCSP) "must-staple" flag asserted <x | |||
| ref | ||||
| target="RFC7633" format="default"/> can be considered roughly | ||||
| equivalent if the STAR certificate's and the OCSP response's lifetimes | ||||
| are the same. (Here, "must-staple" refers to a certificate carrying a | ||||
| TLS feature extension with the "status_request" extension identifier | ||||
| <xref target="RFC6066"/>.) Given OCSP responses can be cached, on averag | ||||
| e, for 4 | ||||
| days <xref target="STARK" format="default"/>, it is | ||||
| <bcp14>RECOMMENDED</bcp14> that a STAR certificate that is used on the | ||||
| Web has an "effective" lifetime (excluding any adjustment to account | ||||
| for clock skews) no longer than 4 days.</t> | ||||
| </section> | ||||
| <section anchor="impact-on-certificate-transparency-ct-logs" numbered="tru | ||||
| e" toc="default"> | ||||
| <name>Impact on Certificate Transparency (CT) Logs</name> | ||||
| <t>Even in the highly unlikely case STAR becomes the only certificate | ||||
| issuance model, discussion with the IETF TRANS Working Group and | ||||
| implementers of Certificate Transparency (CT) logs suggests that existin | ||||
| g | ||||
| CT Log server implementations are capable of sustaining the resulting | ||||
| 100-fold increase in ingestion rate. Additionally, such a future | ||||
| higher load could be managed with a variety of techniques (e.g., | ||||
| sharding by modulo of certificate hash, using "smart" load-balancing | ||||
| CT proxies, etc.). With regards to the increase in the log size, | ||||
| current CT log growth is already being managed with schemes like | ||||
| Chrome's Log Policy <xref target="OBRIEN" format="default"/>, which | ||||
| allow Operators to define their log life cycle, as well as allowing the | ||||
| CAs, | ||||
| User Agents, Monitors, and any other interested entities to build in | ||||
| support for that life cycle ahead of time.</t> | ||||
| </section> | ||||
| <section anchor="dependability" numbered="true" toc="default"> | ||||
| <name>HTTP Caching and Dependability</name> | ||||
| <t>When using authenticated POST-as-GET, the HTTPS endpoint from where | ||||
| the STAR certificate is fetched can't be easily replicated by an | ||||
| on-path HTTP cache. Reducing the caching properties of the protocol | ||||
| makes STAR clients increasingly dependent on the ACME server | ||||
| availability. This might be problematic given the relatively high | ||||
| rate of client-server interactions in a STAR ecosystem, especially | ||||
| when multiple endpoints (e.g., a high number of CDN edge nodes) end up | ||||
| requesting the same certificate. Clients and servers should consider | ||||
| using the mechanism described in <xref target="certificate-get-nego" | ||||
| format="default"/> to mitigate the risk.</t> | ||||
| <t>When using unauthenticated GET to fetch the STAR certificate, the ser | ||||
| ver <bcp14>SHALL</bcp14> | ||||
| use the appropriate cache directives to set the freshness lifetime of the | use the appropriate cache directives to set the freshness lifetime of the | |||
| response (Section 5.2 of <xref target="RFC7234"/>) such that on-path caches will consider | response (<xref target="RFC7234" sectionFormat="of" section="5.2"/>) such that o n-path caches will consider | |||
| it stale before or at the time its effective lifetime is due to expire.</t> | it stale before or at the time its effective lifetime is due to expire.</t> | |||
| </section> | ||||
| </section> | ||||
| </section> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
| </section> | <name>IANA Considerations</name> | |||
| <section anchor="implementation-status" title="Implementation Status"> | ||||
| <t>Note to RFC Editor: please remove this section before publication, | ||||
| including the reference to <xref target="RFC7942"/> and <xref target="I-D.sheffe | ||||
| r-acme-star-request"/>.</t> | ||||
| <t>This section records the status of known implementations of the | ||||
| protocol defined by this specification at the time of posting of | ||||
| this Internet-Draft, and is based on a proposal described in | ||||
| <xref target="RFC7942"/>. The description of implementations in this section is | ||||
| intended to assist the IETF in its decision processes in | ||||
| progressing drafts to RFCs. Please note that the listing of any | ||||
| individual implementation here does not imply endorsement by the | ||||
| IETF. Furthermore, no effort has been spent to verify the | ||||
| information presented here that was supplied by IETF contributors. | ||||
| This is not intended as, and must not be construed to be, a | ||||
| catalog of available implementations or their features. Readers | ||||
| are advised to note that other implementations may exist.</t> | ||||
| <t>According to <xref target="RFC7942"/>, “this will allow reviewers and working | ||||
| groups to assign due consideration to documents that have the | ||||
| benefit of running code, which may serve as evidence of valuable | ||||
| experimentation and feedback that have made the implemented | ||||
| protocols more mature. It is up to the individual working groups | ||||
| to use this information as they see fit”.</t> | ||||
| <section anchor="overview" title="Overview"> | ||||
| <t>The implementation is constructed around 3 elements: STAR Client for the Name | ||||
| Delegation Client (NDC), | ||||
| STAR Proxy for IdO and ACME Server for CA. The communication between | ||||
| them is over an IP network and the HTTPS protocol.</t> | ||||
| <t>The software of the implementation is available at: https://github.com/mami-p | ||||
| roject/lurk</t> | ||||
| <t>The following subsections offer a basic description, detailed information | ||||
| is available in https://github.com/mami-project/lurk/blob/master/proxySTAR_v2/RE | ||||
| ADME.md</t> | ||||
| <section anchor="acme-server-with-star-extension" title="ACME Server with STAR e | ||||
| xtension"> | ||||
| <t>This is a fork of the Let’s Encrypt Boulder project that implements an ACME c | ||||
| ompliant CA. | ||||
| It includes modifications to extend the ACME protocol as it is specified in this | ||||
| draft, | ||||
| to support recurrent Orders and cancelling Orders.</t> | ||||
| <t>The implementation understands the new “recurrent” attributes as part of the | ||||
| Certificate | ||||
| issuance in the POST request for a new resource. | ||||
| An additional process “renewalManager.go” has been included in parallel that rea | ||||
| ds | ||||
| the details of each recurrent request, automatically produces a “cron” Linux bas | ||||
| ed task | ||||
| that issues the recurrent certificates, until the lifetime ends or the Order is | ||||
| canceled. | ||||
| This process is also in charge of maintaining a fixed URI to enable the NDC to d | ||||
| ownload certificates, | ||||
| unlike Boulder’s regular process of producing a unique URI per certificate.</t> | ||||
| </section> | ||||
| <section anchor="star-proxy" title="STAR Proxy"> | ||||
| <t>The STAR Proxy has a double role as ACME client and STAR Server. The former i | ||||
| s a fork of the EFF | ||||
| Certbot project that implements an ACME compliant client with the STAR extension | ||||
| . | ||||
| The latter is a basic HTTP REST API server.</t> | ||||
| <t>The STAR Proxy understands the basic API request with a server. The current i | ||||
| mplementation | ||||
| of the API is defined in draft-ietf-acme-star-01. Registration or Order cancella | ||||
| tion | ||||
| triggers the modified Certbot client that requests, or cancels, the recurrent ge | ||||
| neration | ||||
| of certificates using the STAR extension over ACME protocol. | ||||
| The URI with the location of the recurrent certificate is delivered to the STAR | ||||
| client as a response.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="level-of-maturity" title="Level of Maturity"> | ||||
| <t>This is a prototype.</t> | ||||
| </section> | ||||
| <section anchor="coverage" title="Coverage"> | ||||
| <t>A STAR Client is not included in this implementation, but done by direct HTTP | ||||
| request with any open HTTP REST API tool. | ||||
| This is expected to be covered as part of the <xref target="I-D.sheffer-acme-sta | ||||
| r-request"/> implementation.</t> | ||||
| <t>This implementation completely covers STAR Proxy and ACME Server with STAR ex | ||||
| tension.</t> | ||||
| </section> | ||||
| <section anchor="version-compatibility" title="Version Compatibility"> | ||||
| <t>The implementation is compatible with version draft-ietf-acme-star-01. | ||||
| The implementation is based on the Boulder and Certbot code release from 7-Aug-2 | ||||
| 017.</t> | ||||
| </section> | ||||
| <section anchor="licensing" title="Licensing"> | ||||
| <t>This implementation inherits the Boulder license (Mozilla Public License 2.0) | ||||
| and Certbot license (Apache License Version 2.0 ).</t> | ||||
| </section> | ||||
| <section anchor="implementation-experience" title="Implementation experience"> | ||||
| <t>To prove the concept all the implementation has been done with a self-signed | ||||
| CA, | ||||
| to avoid impact on real domains. To be able to do it we use the FAKE_DNS propert | ||||
| y | ||||
| of Boulder and static /etc/hosts entries with domains names. | ||||
| Nonetheless this implementation should run with real domains.</t> | ||||
| <t>Most of the implementation has been made to avoid deep changes inside of Boul | ||||
| der | ||||
| or Certbot, for example, the recurrent certificates issuance by the CA is based | ||||
| on an external process that auto-configures the standard Linux “cron” daemon in | ||||
| the ACME CA server.</t> | ||||
| <t>The reference setup recommended is one physical host with 3 virtual machines, | ||||
| one for each of the 3 components (client, proxy and server) and the connectivity | ||||
| based on host bridge.</t> | ||||
| <t>Network security is not enabled (iptables default policies are “accept” and a | ||||
| ll rules removed) | ||||
| in this implementation to simplify and test the protocol.</t> | ||||
| </section> | ||||
| <section anchor="contact-information" title="Contact Information"> | ||||
| <t>See author details below.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="iana-considerations" title="IANA Considerations"> | ||||
| <t>[[RFC Editor: please replace XXXX below by the RFC number.]]</t> | ||||
| <section anchor="new-registries" title="New Registries"> | ||||
| <t>This document requests that IANA create the following new registries:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>ACME Order Auto Renewal Fields (<xref target="iana-order-auto-renewal-regis | ||||
| try"/>)</t> | ||||
| <t>ACME Directory Metadata Auto Renewal Fields (<xref target="iana-metadata-au | ||||
| to-renewal-registry"/>)</t> | ||||
| </list></t> | ||||
| <t>All of these registries are administered under a Specification Required polic | ||||
| y | ||||
| <xref target="RFC8126"/>.</t> | ||||
| </section> | ||||
| <section anchor="new-error-types" title="New Error Types"> | ||||
| <t>This document adds the following entries to the ACME Error Type registry:</t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Type</ttcol> | ||||
| <ttcol align='left'>Description</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>autoRenewalCanceled</c> | ||||
| <c>The short-term certificate is no longer available because the auto-rene | ||||
| wal Order has been explicitly canceled by the IdO</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>autoRenewalExpired</c> | ||||
| <c>The short-term certificate is no longer available because the auto-rene | ||||
| wal Order has expired</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>autoRenewalCancellationInvalid</c> | ||||
| <c>A request to cancel a auto-renewal Order that is not in state “valid” h | ||||
| as been received</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>autoRenewalRevocationNotSupported</c> | ||||
| <c>A request to revoke a auto-renewal Order has been received</c> | ||||
| <c>RFC XXXX</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section anchor="new-fields-in-order-objects" title="New fields in Order Objects | ||||
| "> | ||||
| <t>This document adds the following entries to the ACME Order Object Fields regi | ||||
| stry:</t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Field Name</ttcol> | ||||
| <ttcol align='left'>Field Type</ttcol> | ||||
| <ttcol align='left'>Configurable</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>auto-renewal</c> | ||||
| <c>object</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>star-certificate</c> | ||||
| <c>string</c> | ||||
| <c>false</c> | ||||
| <c>RFC XXXX</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section anchor="iana-order-auto-renewal-registry" title="Fields in the “auto-re | ||||
| newal” Object within an Order Object"> | ||||
| <t>The “ACME Order Auto Renewal Fields” registry lists field names that are | <section anchor="new-registries" numbered="true" toc="default"> | |||
| defined for use in the JSON object included in the “auto-renewal” field of an | <name>New Registries</name> | |||
| <t>Per this document, IANA has created the following new registries:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>ACME Order Auto-Renewal Fields (<xref target="iana-order-auto-rene | ||||
| wal-registry" format="default"/>)</li> | ||||
| <li>ACME Directory Metadata Auto-Renewal Fields (<xref target="iana-me | ||||
| tadata-auto-renewal-registry" format="default"/>)</li> | ||||
| </ul> | ||||
| <t>These registries are administered under a Specification Required poli | ||||
| cy | ||||
| <xref target="RFC8126" format="default"/>.</t> | ||||
| </section> | ||||
| <section anchor="new-error-types" numbered="true" toc="default"> | ||||
| <name>New Error Types</name> | ||||
| <t>Per this document, IANA has added the following entries to the "ACME | ||||
| Error Types" registry:</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Type</th> | ||||
| <th align="left">Description</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">autoRenewalCanceled</td> | ||||
| <td align="left">The short-term certificate is no longer available | ||||
| because the auto-renewal Order has been explicitly canceled by the IdO</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">autoRenewalExpired</td> | ||||
| <td align="left">The short-term certificate is no longer available | ||||
| because the auto-renewal Order has expired</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">autoRenewalCancellationInvalid</td> | ||||
| <td align="left">A request to cancel an auto-renewal Order that is | ||||
| not in state "valid" has been received</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">autoRenewalRevocationNotSupported</td> | ||||
| <td align="left">A request to revoke an auto-renewal Order has bee | ||||
| n received</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="new-fields-in-order-objects" numbered="true" toc="default | ||||
| "> | ||||
| <name>New Fields in Order Objects</name> | ||||
| <t>Per this document, IANA has added the following entries to the | ||||
| "ACME Order Object Fields" registry:</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Field Name</th> | ||||
| <th align="left">Field Type</th> | ||||
| <th align="left">Configurable</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">auto-renewal</td> | ||||
| <td align="left">object</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">star-certificate</td> | ||||
| <td align="left">string</td> | ||||
| <td align="left">false</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="iana-order-auto-renewal-registry" numbered="true" toc="de | ||||
| fault"> | ||||
| <name>Fields in the "auto-renewal" Object within an Order Object</name> | ||||
| <t>The "ACME Order Auto-Renewal Fields" registry lists field names that | ||||
| are | ||||
| defined for use in the JSON object included in the "auto-renewal" field of an | ||||
| ACME order object.</t> | ACME order object.</t> | |||
| <t>Template:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>Field name: The string to be used as a field name in the JSON obje | ||||
| ct</li> | ||||
| <li>Field type: The type of value to be provided, e.g., string, boolea | ||||
| n, array of | ||||
| string</li> | ||||
| <li>Configurable: Boolean indicating whether the server should accept | ||||
| values | ||||
| provided by the client</li> | ||||
| <li>Reference: Where this field is defined</li> | ||||
| </ul> | ||||
| <t>Initial contents: The fields and descriptions defined in <xref target | ||||
| ="star-order-ext" format="default"/>.</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Field Name</th> | ||||
| <th align="left">Field Type</th> | ||||
| <th align="left">Configurable</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">start-date</td> | ||||
| <td align="left">string</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">end-date</td> | ||||
| <td align="left">string</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">lifetime</td> | ||||
| <td align="left">integer</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">lifetime-adjust</td> | ||||
| <td align="left">integer</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">allow-certificate-get</td> | ||||
| <td align="left">boolean</td> | ||||
| <td align="left">true</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="new-fields-in-the-meta-object-within-a-directory-object" | ||||
| numbered="true" toc="default"> | ||||
| <name>New Fields in the "meta" Object within a Directory Object</name> | ||||
| <t>Per this document, IANA has added the following entry to the "ACME Di | ||||
| rectory Metadata Fields":</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Field Name</th> | ||||
| <th align="left">Field Type</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">auto-renewal</td> | ||||
| <td align="left">object</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="iana-metadata-auto-renewal-registry" numbered="true" toc= | ||||
| "default"> | ||||
| <name>Fields in the "auto-renewal" Object within a Directory Metadata Ob | ||||
| ject</name> | ||||
| <t>The "ACME Directory Metadata Auto-Renewal Fields" registry lists fiel | ||||
| d names | ||||
| that are defined for use in the JSON object included in the "auto-renewal" | ||||
| field of an ACME directory "meta" object.</t> | ||||
| <t>Template:</t> | ||||
| <ul spacing="compact"> | ||||
| <li>Field name: The string to be used as a field name in the JSON obje | ||||
| ct</li> | ||||
| <li>Field type: The type of value to be provided, e.g., string, boolea | ||||
| n, array of | ||||
| string</li> | ||||
| <li>Reference: Where this field is defined</li> | ||||
| </ul> | ||||
| <t>Initial contents: The fields and descriptions defined in <xref target | ||||
| ="capability-discovery" format="default"/>.</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Field Name</th> | ||||
| <th align="left">Field Type</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">min-lifetime</td> | ||||
| <td align="left">integer</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">max-duration</td> | ||||
| <td align="left">integer</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">allow-certificate-get</td> | ||||
| <td align="left">boolean</td> | ||||
| <td align="left">RFC 8739</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="iana-http-headers" numbered="true" toc="default"> | ||||
| <name>Cert-Not-Before and Cert-Not-After HTTP Headers</name> | ||||
| <t>The "Message Headers" registry has been updated with the following ad | ||||
| ditional values:</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Header Field Name</th> | ||||
| <th align="left">Protocol</th> | ||||
| <th align="left">Status</th> | ||||
| <th align="left">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">Cert-Not-Before</td> | ||||
| <td align="left">http</td> | ||||
| <td align="left">standard</td> | ||||
| <td align="left">RFC 8739, <xref target="fetching-certificates" fo | ||||
| rmat="default"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">Cert-Not-After</td> | ||||
| <td align="left">http</td> | ||||
| <td align="left">standard</td> | ||||
| <td align="left">RFC 8739, <xref target="fetching-certificates" fo | ||||
| rmat="default"/></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="security-considerations" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <section anchor="no-revocation" numbered="true" toc="default"> | ||||
| <name>No Revocation</name> | ||||
| <t>STAR certificates eliminate an important security feature of PKI, | ||||
| which is the ability to revoke certificates. Revocation allows the | ||||
| administrator to limit the damage done by a rogue node or an adversary | ||||
| who has control of the private key. With STAR certificates, | ||||
| expiration replaces revocation so there is potential for lack of | ||||
| timeliness in the revocation taking effect. To that end, see also the | ||||
| discussion on clock skew in <xref target="operational-cons-clocks" | ||||
| format="default"/>.</t> | ||||
| <t>It should be noted that revocation also has timeliness issues | ||||
| because both Certificate Revocation Lists (CRLs) and OCSP responses | ||||
| have nextUpdate fields that tell relying parties (RPs) how long they | ||||
| should trust this revocation data. These fields are typically set to | ||||
| hours, days, or even weeks in the future. Any revocation that happens | ||||
| before the time in nextUpdate goes unnoticed by the RP.</t> | ||||
| <t>One situation where the lack of explicit revocation could create a | ||||
| security risk to the IdO is when the Order is created with a | ||||
| start-date of some appreciable amount of time in the future. Recall | ||||
| that when authorizations have been fulfilled, the Order moves to the | ||||
| "valid" state and the star-certificate endpoint is populated with the | ||||
| first cert (<xref target="fig-order-state-transitions-ext" | ||||
| format="default"/>). So, if an attacker manages to get hold of the | ||||
| private key as well as the first (post-dated) certificate, there is | ||||
| a time window in the future when they will be able to successfully | ||||
| impersonate the IdO. Note that cancellation is pointless in this | ||||
| case. In order to mitigate the described threat, it is | ||||
| <bcp14>RECOMMENDED</bcp14> that IdO place their Orders at a time that | ||||
| is close to the Order's start-date.</t> | ||||
| <t>More discussion of the security of STAR certificates is available in | ||||
| <xref target="TOPALOVIC" format="default"/>.</t> | ||||
| </section> | ||||
| <section anchor="denial-of-service-considerations" numbered="true" toc="de | ||||
| fault"> | ||||
| <name>Denial-of-Service Considerations</name> | ||||
| <t>STAR adds a new attack vector that increases the threat of | ||||
| denial-of-service attacks, caused by the change to the CA's | ||||
| behavior. Each STAR request amplifies the resource demands upon the | ||||
| CA, where one Order produces not one but potentially dozens or | ||||
| hundreds of certificates, depending on the auto-renewal "lifetime" | ||||
| parameter. An attacker can use this property to aggressively reduce | ||||
| the auto-renewal "lifetime" (e.g., 1 second) jointly with other ACME | ||||
| attack vectors identified in <xref target="RFC8555" | ||||
| sectionFormat="of" section="10"/>. Other collateral impact is related to | ||||
| the | ||||
| certificate endpoint resource where the client can retrieve the | ||||
| certificates periodically. If this resource is external to the CA | ||||
| (e.g., a hosted web server), the previous attack will be reflected to | ||||
| that resource.</t> | ||||
| <t>Template:</t> | <t>Mitigation recommendations from ACME still apply, but some of them | |||
| need to be adjusted. For example, applying rate limiting to the | ||||
| <t><list style="symbols"> | initial request, due to the nature of the auto-renewal behavior, | |||
| <t>Field name: The string to be used as a field name in the JSON object</t> | cannot solve the above problem. The CA server needs complementary | |||
| <t>Field type: The type of value to be provided, e.g., string, boolean, array | mitigation, and specifically, it <bcp14>SHOULD</bcp14> enforce a | |||
| of | minimum value on auto-renewal "lifetime". Alternatively, the CA can | |||
| string</t> | set a rate limit for internal certificate generation processes. Note | |||
| <t>Configurable: Boolean indicating whether the server should accept values | that this limit has to take account of already scheduled renewal | |||
| provided by the client</t> | issuances as well as new incoming requests.</t> | |||
| <t>Reference: Where this field is defined</t> | </section> | |||
| </list></t> | ||||
| <t>Initial contents: The fields and descriptions defined in <xref target="star-o | ||||
| rder-ext"/>.</t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Field Name</ttcol> | ||||
| <ttcol align='left'>Field Type</ttcol> | ||||
| <ttcol align='left'>Configurable</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>start-date</c> | ||||
| <c>string</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>end-date</c> | ||||
| <c>string</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>lifetime</c> | ||||
| <c>integer</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>lifetime-adjust</c> | ||||
| <c>integer</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>allow-certificate-get</c> | ||||
| <c>boolean</c> | ||||
| <c>true</c> | ||||
| <c>RFC XXXX</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section anchor="new-fields-in-the-meta-object-within-a-directory-object" title= | ||||
| "New fields in the “meta” Object within a Directory Object"> | ||||
| <t>This document adds the following entry to the ACME Directory Metadata Fields: | ||||
| </t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Field Name</ttcol> | ||||
| <ttcol align='left'>Field Type</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>auto-renewal</c> | ||||
| <c>object</c> | ||||
| <c>RFC XXXX</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section anchor="iana-metadata-auto-renewal-registry" title="Fields in the “auto | ||||
| -renewal” Object within a Directory Metadata Object"> | ||||
| <t>The “ACME Directory Metadata Auto Renewal Fields” registry lists field names | ||||
| that are defined for use in the JSON object included in the “auto-renewal” | ||||
| field of an ACME directory “meta” object.</t> | ||||
| <t>Template:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Field name: The string to be used as a field name in the JSON object</t> | ||||
| <t>Field type: The type of value to be provided, e.g., string, boolean, array | ||||
| of | ||||
| string</t> | ||||
| <t>Reference: Where this field is defined</t> | ||||
| </list></t> | ||||
| <t>Initial contents: The fields and descriptions defined in <xref target="capabi | ||||
| lity-discovery"/>.</t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Field Name</ttcol> | ||||
| <ttcol align='left'>Field Type</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>min-lifetime</c> | ||||
| <c>integer</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>max-duration</c> | ||||
| <c>integer</c> | ||||
| <c>RFC XXXX</c> | ||||
| <c>allow-certificate-get</c> | ||||
| <c>boolean</c> | ||||
| <c>RFC XXXX</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section anchor="iana-http-headers" title="Cert-Not-Before and Cert-Not-After HT | ||||
| TP Headers"> | ||||
| <t>The “Message Headers” registry should be updated with the following additiona | ||||
| l values:</t> | ||||
| <texttable> | ||||
| <ttcol align='left'>Header Field Name</ttcol> | ||||
| <ttcol align='left'>Protocol</ttcol> | ||||
| <ttcol align='left'>Status</ttcol> | ||||
| <ttcol align='left'>Reference</ttcol> | ||||
| <c>Cert-Not-Before</c> | ||||
| <c>http</c> | ||||
| <c>standard</c> | ||||
| <c>RFC XXXX, <xref target="fetching-certificates"/></c> | ||||
| <c>Cert-Not-After</c> | ||||
| <c>http</c> | ||||
| <c>standard</c> | ||||
| <c>RFC XXXX, <xref target="fetching-certificates"/></c> | ||||
| </texttable> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="security-considerations" title="Security Considerations"> | ||||
| <section anchor="no-revocation" title=" No revocation"> | ||||
| <t>STAR certificates eliminate an important security feature of PKI which is the | ||||
| ability to revoke certificates. Revocation allows the administrator to limit | ||||
| the damage done by a rogue node or an adversary who has control of the private | ||||
| key. With STAR certificates, expiration replaces revocation so there is | ||||
| potential for lack of timeliness in the revocation taking effect. To that end, | ||||
| see also the discussion on clock skew in <xref target="operational-cons-clocks"/ | ||||
| >.</t> | ||||
| <t>It should be noted that revocation also has timeliness issues, because | ||||
| both CRLs and OCSP responses have nextUpdate fields that tell relying parties (R | ||||
| Ps) how | ||||
| long they should trust this revocation data. These fields are typically | ||||
| set to hours, days, or even weeks in the future. Any revocation that | ||||
| happens before the time in nextUpdate goes unnoticed by the RP.</t> | ||||
| <t>One situation where the lack of explicit revocation could create a security | ||||
| risk to the IdO is when the Order is created with start-date some appreciable | ||||
| amount of time in the future. Recall that when authorizations have been | ||||
| fulfilled, the Order moves to the “valid” state and the star-certificate | ||||
| endpoint is populated with the first cert | ||||
| (<xref target="fig-order-state-transitions-ext"/>). So, if an attacker manages | ||||
| to get hold | ||||
| of the private key as well as of the first (post-dated) certificate, there is a | ||||
| time window in the future when they will be able to successfully impersonate | ||||
| the IdO. Note that cancellation is pointless in this case. In order to | ||||
| mitigate the described threat, it is RECOMMENDED that IdO place their Orders at | ||||
| a time that is close to the Order’s start-date.</t> | ||||
| <t>More discussion of the security of STAR certificates is available in | ||||
| <xref target="Topalovic"/>.</t> | ||||
| </section> | ||||
| <section anchor="denial-of-service-considerations" title="Denial of Service Cons | ||||
| iderations"> | ||||
| <t>STAR adds a new attack vector that increases the threat of denial of | ||||
| service attacks, caused by the change to the CA’s behavior. Each STAR | ||||
| request amplifies the resource demands upon the CA, where one Order | ||||
| produces not one, but potentially dozens or hundreds of certificates, | ||||
| depending on the auto-renewal “lifetime” parameter. An attacker | ||||
| can use this property to aggressively reduce the | ||||
| auto-renewal “lifetime” (e.g. 1 sec.) jointly with other ACME | ||||
| attack vectors identified in Sec. 10 of <xref target="RFC8555"/>. Other coll | ||||
| ateral impact is | ||||
| related to the certificate endpoint resource where the client can | ||||
| retrieve the certificates periodically. If this resource is external to | ||||
| the CA (e.g. a hosted web server), the previous attack will be reflected to | ||||
| that resource.</t> | ||||
| <t>Mitigation recommendations from ACME still apply, but some of them need | ||||
| to be adjusted. For example, applying rate limiting to the initial | ||||
| request, by the nature of the auto-renewal behavior cannot solve the | ||||
| above problem. The CA server needs complementary mitigation and | ||||
| specifically, it SHOULD enforce a minimum value on | ||||
| auto-renewal “lifetime”. Alternatively, the CA can set an | ||||
| internal certificate generation processes rate limit. | ||||
| Note that this limit has to take account of already-scheduled renewal | ||||
| issuances as well as new incoming requests.</t> | ||||
| </section> | ||||
| <section anchor="privacy-considerations" title="Privacy Considerations"> | ||||
| <t>In order to avoid correlation of certificates by account, if unauthenticated | ||||
| GET is negotiated (<xref target="certificate-get-nego"/>) the recommendation in | ||||
| Section 10.5 | ||||
| of <xref target="RFC8555"/> regarding the choice of URL structure applies, i.e. | ||||
| servers SHOULD | ||||
| choose URLs of certificate resources in a non-guessable way, for example using | ||||
| capability URLs <xref target="W3C.WD-capability-urls-20140218"/>.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="acknowledgments" title="Acknowledgments"> | ||||
| <t>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.</t> | ||||
| <t>Thanks to | ||||
| Ben Kaduk, | ||||
| Richard Barnes, | ||||
| Roman Danyliw, | ||||
| Jon Peterson, | ||||
| Eric Rescorla, | ||||
| Ryan Sleevi, | ||||
| Sean Turner, | ||||
| Alexey Melnikov, | ||||
| Adam Roach, | ||||
| Martin Thomson and | ||||
| Mehmet Ersue | ||||
| for helpful comments and discussions that have shaped this document.</t> | ||||
| </section> | <section anchor="privacy-considerations" numbered="true" toc="default"> | |||
| <name>Privacy Considerations</name> | ||||
| <t>In order to avoid correlation of certificates by account, if | ||||
| unauthenticated GET is negotiated (<xref target="certificate-get-nego" | ||||
| format="default"/>), the recommendation in <xref target="RFC8555" | ||||
| sectionFormat="of" section="10.5"/> regarding the choice of URL | ||||
| structure applies, i.e., servers <bcp14>SHOULD</bcp14> choose URLs of | ||||
| certificate resources in a non-guessable way, for example, using | ||||
| capability URLs <xref target="W3C.CAPABILITY-URLS" | ||||
| format="default"/>.</t> | ||||
| </section> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title='Normative References'> | <displayreference target="I-D.ietf-acme-star-delegation" to="STAR-DELEGATION"/> | |||
| <displayreference target="I-D.nir-saag-star" to="SHORT-TERM-CERTS"/> | ||||
| <reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
| <author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ | ||||
| author> | ||||
| <date year='1997' month='March' /> | ||||
| <abstract><t>In many standards track documents several words are used to signify | ||||
| the requirements in the specification. These words are often capitalized. This | ||||
| document defines these words as they should be interpreted in IETF documents. | ||||
| This document specifies an Internet Best Current Practices for the Internet Comm | ||||
| unity, and requests discussion and suggestions for improvements.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='2119'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2119'/> | ||||
| </reference> | ||||
| <reference anchor="RFC3339" target='https://www.rfc-editor.org/info/rfc3339'> | ||||
| <front> | ||||
| <title>Date and Time on the Internet: Timestamps</title> | ||||
| <author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></auth | ||||
| or> | ||||
| <author initials='C.' surname='Newman' fullname='C. Newman'><organization /></au | ||||
| thor> | ||||
| <date year='2002' month='July' /> | ||||
| <abstract><t>This document defines a date and time format for use in Internet pr | ||||
| otocols that is a profile of the ISO 8601 standard for representation of dates a | ||||
| nd times using the Gregorian calendar.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='3339'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC3339'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'> | ||||
| <front> | ||||
| <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title> | ||||
| <author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><o | ||||
| rganization /></author> | ||||
| <author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><org | ||||
| anization /></author> | ||||
| <date year='2014' month='June' /> | ||||
| <abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application | ||||
| - level protocol for distributed, collaborative, hypertext information systems. | ||||
| This document defines the semantics of HTTP/1.1 messages, as expressed by reque | ||||
| st methods, request header fields, response status codes, and response header fi | ||||
| elds, along with the payload of messages (metadata and body content) and mechani | ||||
| sms for content negotiation.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7231'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7231'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7807" target='https://www.rfc-editor.org/info/rfc7807'> | ||||
| <front> | ||||
| <title>Problem Details for HTTP APIs</title> | ||||
| <author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organizatio | ||||
| n /></author> | ||||
| <author initials='E.' surname='Wilde' fullname='E. Wilde'><organization /></auth | ||||
| or> | ||||
| <date year='2016' month='March' /> | ||||
| <abstract><t>This document defines a "problem detail" as a way to carr | ||||
| y machine- readable details of errors in a HTTP response to avoid the need to de | ||||
| fine new error response formats for HTTP APIs.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7807'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7807'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8555" target='https://www.rfc-editor.org/info/rfc8555'> | ||||
| <front> | ||||
| <title>Automatic Certificate Management Environment (ACME)</title> | ||||
| <author initials='R.' surname='Barnes' fullname='R. Barnes'><organization /></au | ||||
| thor> | ||||
| <author initials='J.' surname='Hoffman-Andrews' fullname='J. Hoffman-Andrews'><o | ||||
| rganization /></author> | ||||
| <author initials='D.' surname='McCarney' fullname='D. McCarney'><organization /> | ||||
| </author> | ||||
| <author initials='J.' surname='Kasten' fullname='J. Kasten'><organization /></au | ||||
| thor> | ||||
| <date year='2019' month='March' /> | ||||
| <abstract><t>Public Key Infrastructure using X.509 (PKIX) certificates are used | ||||
| for a number of purposes, the most significant of which is the authentication of | ||||
| domain names. Thus, certification authorities (CAs) in the Web PKI are trusted | ||||
| to verify that an applicant for a certificate legitimately represents the domai | ||||
| n name(s) in the certificate. As of this writing, this verification is done thr | ||||
| ough a collection of ad hoc mechanisms. This document describes a protocol that | ||||
| a CA and an applicant can use to automate the process of verification and certi | ||||
| ficate issuance. The protocol also provides facilities for other certificate ma | ||||
| nagement functions, such as certificate revocation.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8555'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8555'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
| or> | ||||
| <date year='2017' month='May' /> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7234" target='https://www.rfc-editor.org/info/rfc7234'> | ||||
| <front> | ||||
| <title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title> | ||||
| <author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><o | ||||
| rganization /></author> | ||||
| <author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor | ||||
| '><organization /></author> | ||||
| <author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><org | ||||
| anization /></author> | ||||
| <date year='2014' month='June' /> | ||||
| <abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application | ||||
| - level protocol for distributed, collaborative, hypertext information systems. | ||||
| This document defines HTTP caches and the associated header fields that control | ||||
| cache behavior or indicate cacheable response messages.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7234'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7234'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8126" target='https://www.rfc-editor.org/info/rfc8126'> | ||||
| <front> | ||||
| <title>Guidelines for Writing an IANA Considerations Section in RFCs</title> | ||||
| <author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></au | ||||
| thor> | ||||
| <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
| or> | ||||
| <author initials='T.' surname='Narten' fullname='T. Narten'><organization /></au | ||||
| thor> | ||||
| <date year='2017' month='June' /> | ||||
| <abstract><t>Many protocols make use of points of extensibility that use constan | ||||
| ts to identify various protocol parameters. To ensure that the values in these | ||||
| fields do not have conflicting uses and to promote interoperability, their alloc | ||||
| ations are often coordinated by a central record keeper. For IETF protocols, th | ||||
| at role is filled by the Internet Assigned Numbers Authority (IANA).</t><t>To ma | ||||
| ke assignments in a given registry prudently, guidance describing the conditions | ||||
| under which new values should be assigned, as well as when and how modification | ||||
| s to existing values can be made, is needed. This document defines a framework | ||||
| for the documentation of these guidelines by specification authors, in order to | ||||
| assure that the provided guidance for the IANA Considerations is clear and addre | ||||
| sses the various issues that are likely in the operation of a registry.</t><t>Th | ||||
| is is the third edition of this document; it obsoletes RFC 5226.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='26'/> | ||||
| <seriesInfo name='RFC' value='8126'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8126'/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title='Informative References'> | ||||
| <reference anchor="RFC7942" target='https://www.rfc-editor.org/info/rfc7942'> | ||||
| <front> | ||||
| <title>Improving Awareness of Running Code: The Implementation Status Section</t | ||||
| itle> | ||||
| <author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></ | ||||
| author> | ||||
| <author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></au | ||||
| thor> | ||||
| <date year='2016' month='July' /> | ||||
| <abstract><t>This document describes a simple process that allows authors of Int | ||||
| ernet-Drafts to record the status of known implementations by including an Imple | ||||
| mentation Status section. This will allow reviewers and working groups to assig | ||||
| n due consideration to documents that have the benefit of running code, which ma | ||||
| y serve as evidence of valuable experimentation and feedback that have made the | ||||
| implemented protocols more mature.</t><t>This process is not mandatory. Authors | ||||
| of Internet-Drafts are encouraged to consider using the process for their docum | ||||
| ents, and working groups are invited to think about applying the process to all | ||||
| of their protocol specifications. This document obsoletes RFC 6982, advancing i | ||||
| t to a Best Current Practice.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='205'/> | ||||
| <seriesInfo name='RFC' value='7942'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7942'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7633" target='https://www.rfc-editor.org/info/rfc7633'> | ||||
| <front> | ||||
| <title>X.509v3 Transport Layer Security (TLS) Feature Extension</title> | ||||
| <author initials='P.' surname='Hallam-Baker' fullname='P. Hallam-Baker'><organiz | ||||
| ation /></author> | ||||
| <date year='2015' month='October' /> | ||||
| <abstract><t>The purpose of the TLS feature extension is to prevent downgrade at | ||||
| tacks that are not otherwise prevented by the TLS protocol. In particular, the | ||||
| TLS feature extension may be used to mandate support for revocation checking fea | ||||
| tures in the TLS protocol such as Online Certificate Status Protocol (OCSP) stap | ||||
| ling. Informing clients that an OCSP status response will always be stapled per | ||||
| mits an immediate failure in the case that the response is not stapled. This in | ||||
| turn prevents a denial-of-service attack that might otherwise be possible.</t>< | ||||
| /abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7633'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7633'/> | ||||
| </reference> | ||||
| <reference anchor="I-D.sheffer-acme-star-request"> | ||||
| <front> | ||||
| <title>Generating Certificate Requests for Short-Term, Automatically-Renewed (ST | ||||
| AR) Certificates</title> | ||||
| <author initials='Y' surname='Sheffer' fullname='Yaron Sheffer'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='D' surname='Lopez' fullname='Diego Lopez'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='O' surname='Dios' fullname='Oscar de Dios'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Pastor' fullname='Antonio Pastor'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='T' surname='Fossati' fullname='Thomas Fossati'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='June' day='29' year='2018' /> | ||||
| <abstract><t>This memo proposes a protocol that allows a domain name owner to de | ||||
| legate to a third party (such as a CDN) control over a certificate that bears on | ||||
| e or more names in that domain. Specifically the third party creates a Certific | ||||
| ate Signing Request for the domain, which can then be used by the domain owner t | ||||
| o 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 sess | ||||
| ions 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 certific | ||||
| ate revocation mechanisms.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-sheffer-acme-star-request-02' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-sheffer-acme-star-requ | ||||
| est-02.txt' /> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-acme-star-delegation"> | ||||
| <front> | ||||
| <title>An ACME Profile for Generating Delegated STAR Certificates</title> | ||||
| <author initials='Y' surname='Sheffer' fullname='Yaron Sheffer'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='D' surname='Lopez' fullname='Diego Lopez'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Pastor' fullname='Antonio Pastor'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='T' surname='Fossati' fullname='Thomas Fossati'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='August' day='26' year='2019' /> | ||||
| <abstract><t>This memo proposes a profile of the ACME protocol that allows the o | ||||
| wner of an identifier (e.g., a domain name) to delegate to a third party access | ||||
| to a certificate associated with said identifier. A primary use case is that of | ||||
| a CDN (the third party) terminating TLS sessions on behalf of a content provide | ||||
| r (the owner of a domain name). The presented mechanism allows the owner of the | ||||
| identifier to retain control over the delegation and revoke it at any time by c | ||||
| ancelling the associated STAR certificate renewal with the ACME CA. Another key | ||||
| property of this mechanism is it does not require any modification to the deploy | ||||
| ed TLS ecosystem.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-acme-star-delegation-01' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-acme-star-delegat | ||||
| ion-01.txt' /> | ||||
| </reference> | ||||
| <reference anchor="I-D.nir-saag-star"> | ||||
| <front> | ||||
| <title>Considerations For Using Short Term Certificates</title> | ||||
| <author initials='Y' surname='Nir' fullname='Yoav Nir'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='T' surname='Fossati' fullname='Thomas Fossati'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='Y' surname='Sheffer' fullname='Yaron Sheffer'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='T' surname='Eckert' fullname='Toerless Eckert'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='March' day='5' year='2018' /> | ||||
| <abstract><t>Recently there has been renewed interest in an old idea: Issue cert | <references> | |||
| ificates with short validity periods and forego revocation processing, reasoning | <name>References</name> | |||
| that expiration is a sufficient replacement for revocation as long as that expi | <references> | |||
| ration is not too far off. This document covers considerations, both security a | <name>Normative References</name> | |||
| nd operational, for using such Short Term Auto Renewed (STAR) certificates for v | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| arious scenarios where Using a revocation protocol is considered inappropriate.< | FC.2119.xml"/> | |||
| /t></abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.3339.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7231.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7807.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8555.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7234.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8126.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| </front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7633.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6066.xml"/> | ||||
| <seriesInfo name='Internet-Draft' value='draft-nir-saag-star-01' /> | <!--I-D.draft-ietf-acme-star-delegation-01; IESG state I-D Exists --> | |||
| <format type='TXT' | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference. | |||
| target='http://www.ietf.org/internet-drafts/draft-nir-saag-star-01.txt' | I-D.ietf-acme-star-delegation.xml"/> | |||
| /> | ||||
| </reference> | ||||
| <reference anchor="Stark" target="http://crypto.stanford.edu/~dabo/pubs/abstract | <!--I-D.draft-nir-saag-star; IESG state Expired --> | |||
| s/ssl-prefetch.html"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference. | |||
| <front> | I-D.nir-saag-star.xml"/> | |||
| <title>The case for prefetching and prevalidating TLS server certificates</t | ||||
| itle> | ||||
| <author initials="E." surname="Stark" fullname="Emily Stark"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="L." surname="Huang" fullname="Lin-Shung Huang"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Israni" fullname="Dinesh Israni"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Jackson" fullname="Collin Jackson"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Boneh" fullname="Dan Boneh"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <date year="2012"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="Acer" target="https://acmccs.github.io/papers/p1407-acerA.pdf | ||||
| "> | ||||
| <front> | ||||
| <title>Where the Wild Warnings Are: Root Causes of Chrome HTTPS Certificate | ||||
| Errors</title> | ||||
| <author initials="M.E." surname="Acer" fullname="Mustafa Emre Acer"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="E." surname="Stark" fullname="Emily Stark"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="A.P." surname="Felt" fullname="Adrienne Porter Felt"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Fahl" fullname="Sascha Fahl"> | ||||
| <organization>Leibniz University Hannover</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Bhargava" fullname="Radhika Bhargava"> | ||||
| <organization>Purdue University</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Dev" fullname="Bhanu Dev"> | ||||
| <organization>International Institute of Information Technology Hyderabad< | ||||
| /organization> | ||||
| </author> | ||||
| <author initials="M." surname="Braithwaite" fullname="Matt Braithwaite"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Sleevi" fullname="Ryan Sleevi"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Tabriz" fullname="Parisa Tabriz"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <date year="2017"/> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1145/3133956.3134007"/> | ||||
| </reference> | ||||
| <reference anchor="Topalovic" target="http://www.ieee-security.org/TC/W2SP/2012/ | ||||
| papers/w2sp12-final9.pdf"> | ||||
| <front> | ||||
| <title>Towards Short-Lived Certificates</title> | ||||
| <author initials="E." surname="Topalovic" fullname="Emin Topalovic"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Saeta" fullname="Brennan Saeta"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <author initials="L." surname="Huang" fullname="Lin-Shung Huang"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Jackson" fullname="Colling Jackson"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Boneh" fullname="Dan Boneh"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <date year="2012"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OBrien" target="https://github.com/chromium/ct-policy"> | ||||
| <front> | ||||
| <title>Chromium Certificate Transparency Log Policy</title> | ||||
| <author initials="D." surname="O'Brien" fullname="Devon O'Brien"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Sleevi" fullname="Ryan Sleevi"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <date year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="W3C.WD-capability-urls-20140218" | <reference anchor="STARK" target="https://crypto.stanford.edu/~dabo/pubs | |||
| target='http://www.w3.org/TR/2014/WD-capability-urls-20140218'> | /abstracts/ssl-prefetch.html"> | |||
| <front> | <front> | |||
| <title>Good Practices for Capability URLs</title> | <title>The case for prefetching and prevalidating TLS server certifi | |||
| cates</title> | ||||
| <author initials="E." surname="Stark" fullname="Emily Stark"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="L.S." surname="Huang" fullname="Lin-Shung Huang"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Israni" fullname="Dinesh Israni"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Jackson" fullname="Collin Jackson"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Boneh" fullname="Dan Boneh"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <date month="February" year="2012"/> | ||||
| </front> | ||||
| </reference> | ||||
| <author initials='J.' surname='Tennison' fullname='Jeni Tennison'> | <reference anchor="ACER" target="https://acmccs.github.io/papers/p1407-a | |||
| <organization /> | cerA.pdf"> | |||
| </author> | <front> | |||
| <title>Where the Wild Warnings Are: Root Causes of Chrome HTTPS Cert | ||||
| ificate Errors</title> | ||||
| <seriesInfo name="DOI" value="10.1145/3133956.3134007"/> | ||||
| <author initials="M.E." surname="Acer" fullname="Mustafa Emre Acer"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="E." surname="Stark" fullname="Emily Stark"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="A.P." surname="Felt" fullname="Adrienne Porter Fel | ||||
| t"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="S." surname="Fahl" fullname="Sascha Fahl"> | ||||
| <organization>Leibniz University Hannover</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Bhargava" fullname="Radhika Bhargava" | ||||
| > | ||||
| <organization>Purdue University</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Dev" fullname="Bhanu Dev"> | ||||
| <organization>International Institute of Information Technology Hy | ||||
| derabad</organization> | ||||
| </author> | ||||
| <author initials="M." surname="Braithwaite" fullname="Matt Braithwai | ||||
| te"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Sleevi" fullname="Ryan Sleevi"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Tabriz" fullname="Parisa Tabriz"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <date month="October" year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| <date month='February' day='18' year='2014' /> | <reference anchor="TOPALOVIC" target="https://www.ieee-security.org/TC/W | |||
| </front> | 2SP/2012/papers/w2sp12-final9.pdf"> | |||
| <front> | ||||
| <title>Towards Short-Lived Certificates</title> | ||||
| <author initials="E." surname="Topalovic" fullname="Emin Topalovic"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <author initials="B." surname="Saeta" fullname="Brennan Saeta"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <author initials="L.S." surname="Huang" fullname="Lin-Shung Huang"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Jackson" fullname="Colling Jackson"> | ||||
| <organization>Carnegie Mellon University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Boneh" fullname="Dan Boneh"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <date year="2012"/> | ||||
| </front> | ||||
| </reference> | ||||
| <seriesInfo name='World Wide Web Consortium WD' value='WD-capability-urls-201402 | <reference anchor="OBRIEN" target="https://github.com/chromium/ct-policy | |||
| 18' /> | "> | |||
| <format type='HTML' target='http://www.w3.org/TR/2014/WD-capability-urls-2014021 | <front> | |||
| 8' /> | <title>Chromium Certificate Transparency Policy</title> | |||
| </reference> | <author initials="D." surname="O'Brien" fullname="Devon O'Brien"> | |||
| <organization>Google</organization> | ||||
| </author> | ||||
| <author initials="R." surname="Sleevi" fullname="Ryan Sleevi"> | ||||
| <organization>Google</organization> | ||||
| </author> | ||||
| <date month="April" year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="W3C.CAPABILITY-URLS" target="https://www.w3.org/TR/2014/WD | ||||
| -capability-urls-20140218"> | ||||
| <front> | ||||
| <title>Good Practices for Capability URLs</title> | ||||
| <author initials="J." surname="Tennison" fullname="Jeni Tennison"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="February" year="2014"/> | ||||
| </front> | ||||
| <refcontent>W3C First Public Working Draft</refcontent> | ||||
| <refcontent>Latest version available at <https://www.w3.org/TR/capability-url | ||||
| s/> | ||||
| </refcontent> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="document-history" title="Document History"> | <section anchor="acknowledgments" numbered="false" toc="default"> | |||
| <name>Acknowledgments</name> | ||||
| <t>[[Note to RFC Editor: please remove before publication.]]</t> | <t>This work is partially supported by the European Commission under | |||
| Horizon 2020 grant agreement no. 688421 Measurement and Architecture for | ||||
| <section anchor="draft-ietf-acme-star-11" title="draft-ietf-acme-star-11"> | a Middleboxed Internet (MAMI). This support does not imply | |||
| endorsement.</t> | ||||
| <t><list style="symbols"> | <t>Thanks to <contact fullname="Ben Kaduk"/>, <contact fullname="Richard | |||
| <t>One more nit re: random URL</t> | Barnes"/>, <contact fullname="Roman Danyliw"/>, <contact fullname="Jon | |||
| </list></t> | Peterson"/>, <contact fullname="Eric Rescorla"/>, <contact | |||
| fullname="Ryan Sleevi"/>, <contact fullname="Sean Turner"/>, <contact | ||||
| </section> | fullname="Alexey Melnikov"/>, <contact fullname="Adam Roach"/>, <contact | |||
| <section anchor="draft-ietf-acme-star-10" title="draft-ietf-acme-star-10"> | fullname="Martin Thomson"/>, and <contact fullname="Mehmet Ersue"/> for he | |||
| lpful comments and | ||||
| <t>IESG processing:</t> | discussions that have shaped this document.</t> | |||
| </section> | ||||
| <t><list style="symbols"> | ||||
| <t>More clarity on IANA registration (Alexey);</t> | ||||
| <t>HTTP header requirements adjustments (Adam);</t> | ||||
| <t>Misc editorial (Ben)</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-09" title="draft-ietf-acme-star-09"> | ||||
| <t>Richard and Ryan’s review resulted in the following updates:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>STAR Order and Directory Meta attributes renamed slightly and grouped under | ||||
| two brand new “auto-renewal” objects;</t> | ||||
| <t>IANA registration updated accordingly (note that two new registries have be | ||||
| en added as a consequence);</t> | ||||
| <t>Unbounded pre-dating of certificates removed so that STAR certs are never i | ||||
| ssued with their notBefore in the past;</t> | ||||
| <t>Changed “recurrent” to “autoRenewal” in error codes;</t> | ||||
| <t>Changed “recurrent” to “auto-renewal” in reference to Orders;</t> | ||||
| <t>Added operational considerations for HTTP caches.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-08" title="draft-ietf-acme-star-08"> | ||||
| <t><list style="symbols"> | ||||
| <t>Improved text on interaction with CT Logs, responding to Mehmet Ersue’s rev | ||||
| iew.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-07" title="draft-ietf-acme-star-07"> | ||||
| <t><list style="symbols"> | ||||
| <t>Changed the HTTP headers names and clarified the IANA registration, followi | ||||
| ng feedback | ||||
| from the IANA expert reviewer</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-06" title="draft-ietf-acme-star-06"> | ||||
| <t><list style="symbols"> | ||||
| <t>Roman’s AD review</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-05" title="draft-ietf-acme-star-05"> | ||||
| <t><list style="symbols"> | ||||
| <t>EKR’s AD review</t> | ||||
| <t>A detailed example of the timing of certificate issuance and predating</t> | ||||
| <t>Added an explicit client-side parameter for predating</t> | ||||
| <t>Security considerations around unauthenticated GET</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-04" title="draft-ietf-acme-star-04"> | ||||
| <t><list style="symbols"> | ||||
| <t>WG last call comments by Sean Turner</t> | ||||
| <t>revokeCert interface handling</t> | ||||
| <t>Allow negotiating plain-GET for certs</t> | ||||
| <t>In STAR Orders, use star-certificate instead of certificate</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-03" title="draft-ietf-acme-star-03"> | ||||
| <t><list style="symbols"> | ||||
| <t>Clock skew considerations</t> | ||||
| <t>Recommendations for “short” in the Web use case</t> | ||||
| <t>CT log considerations</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-02" title="draft-ietf-acme-star-02"> | ||||
| <t><list style="symbols"> | ||||
| <t>Discovery of STAR capabilities via the directory object</t> | ||||
| <t>Use the more generic term Identifier Owner (IdO) instead of Domain Name Own | ||||
| er (DNO)</t> | ||||
| <t>More precision about what goes in the order</t> | ||||
| <t>Detail server side behavior on cancellation</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-01" title="draft-ietf-acme-star-01"> | ||||
| <t><list style="symbols"> | ||||
| <t>Generalized the introduction, separating out the specifics of CDNs.</t> | ||||
| <t>Clean out LURK-specific text.</t> | ||||
| <t>Using a POST to ensure cancellation is authenticated.</t> | ||||
| <t>First and last date of recurrent cert, as absolute dates. Validity of certs | ||||
| in seconds.</t> | ||||
| <t>Use RFC7807 “Problem Details” in error responses.</t> | ||||
| <t>Add IANA considerations.</t> | ||||
| <t>Changed the document’s title.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-ietf-acme-star-00" title="draft-ietf-acme-star-00"> | ||||
| <t><list style="symbols"> | ||||
| <t>Initial working group version.</t> | ||||
| <t>Removed the STAR interface, the protocol between NDC and DNO. What remains | ||||
| is only | ||||
| the extended ACME protocol.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-sheffer-acme-star-02" title="draft-sheffer-acme-star-02"> | ||||
| <t><list style="symbols"> | ||||
| <t>Using a more generic term for the delegation client, NDC.</t> | ||||
| <t>Added an additional use case: public cloud services.</t> | ||||
| <t>More detail on ACME authorization.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-sheffer-acme-star-01" title="draft-sheffer-acme-star-01"> | ||||
| <t><list style="symbols"> | ||||
| <t>A terminology section.</t> | ||||
| <t>Some cleanup.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-sheffer-acme-star-00" title="draft-sheffer-acme-star-00"> | ||||
| <t><list style="symbols"> | ||||
| <t>Renamed draft to prevent confusion with other work in this space.</t> | ||||
| <t>Added an initial STAR protocol: a REST API.</t> | ||||
| <t>Discussion of CDNI use cases.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="draft-sheffer-acme-star-lurk-00" title="draft-sheffer-acme-star | ||||
| -lurk-00"> | ||||
| <t><list style="symbols"> | ||||
| <t>Initial version.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| </rfc> | </rfc> | |||
| End of changes. 70 change blocks. | ||||
| 1971 lines changed or deleted | 1073 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||