<?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.0.28 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-acme-caa-00" category="std">

  <front>
    <title abbrev="ACME-CAA">CAA Record Extensions for Account URI and ACME Method Binding</title>

    <author initials="H." surname="Landau" fullname="Hugo Landau">
      <organization></organization>
      <address>
        <email>hlandau@devever.net</email>
      </address>
    </author>

    <date year="2016" month="October" day="26"/>

    <area>General</area>
    <workgroup>ACME Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The CAA DNS record allows a domain to communicate issuance policy to CAs, but
only allows a domain to define policy with CA-level granularity. However, the
CAA specification also provides facilities for extension to admit more
granular, CA-specific policy. This specification defines two such parameters,
one allowing specific accounts of a CA to be identified by URI and one allowing
specific methods of domain control validation as defined by the ACME protocol
to be required.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This specification defines two parameters for the “issue” and “issuewild”
properties of the Certification Authority Authorization (CAA) DNS resource
record <xref target="RFC6844"/>. The first, “account-uri”, allows authorization conferred by
a CAA policy to be restricted to specific accounts of a CA, which are
identified by URIs. The second, “acme-methods”, allows the set of validation
methods supported by an ACME <xref target="I-D.ietf-acme-acme"/> based CA to validate domain
control to be limited to a subset of the full set of methods which it supports.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>In this document, the key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” are to be
interpreted as described in BCP 14, RFC 2119 <xref target="RFC2119"/> and indicate
requirement levels for compliant CAA-URI implementations.</t>

</section>
<section anchor="extensions-to-the-caa-record-account-uri-parameter" title="Extensions to the CAA Record: account-uri Parameter">

<t>A CAA parameter “account-uri” is defined for the “issue” and “issuewild”
properties defined by <xref target="RFC6844"/>. The value of this parameter, if specified,
MUST be a URI <xref target="RFC3986"/> identifying a specific CA account.</t>

<t>“CA account” means an object maintained by a specific CA representing a
specific entity, or group of related entities, which may request the issuance
of certificates.</t>

<t>The presence of this parameter constrains the property to which it is attached.
A CA MUST only consider a property with an “account-uri” parameter to authorize
issuance where the URI specified is an URI that the CA recognises as identifying
the account making a certificate issuance request.</t>

<t>If a certificate issuance request is made to a CA such that no account URI is
available, because the request is made in the absence of any account or the
account has no URI assigned to it, a CA MUST NOT consider any property having
an “account-uri” parameter as authorizing issuance.</t>

<t>If an CA finds multiple CAA records pertaining to it (i.e., having property
“issue” or “issuewild” as applicable and a domain that the CA recognises as its
own) with different “account-uri” parameters, the CA MUST NOT consider the CAA
record set to authorize issuance unless at least one of the specified account
URIs identifies the account of the CA by which issuance is requested. A
property without an “account-uri” parameter matches any account. A property
with an invalid or unrecognised “account-uri” parameter is
unsatisfiable.</t>

<t>The presence of an “account-uri” parameter does not replace or supercede the
need to validate the domain name specified in an “issue” or “issuewild” record
in the manner described in the CAA specification. CAs MUST still perform such
validation. For example, a CAA property which specifies a domain name
belonging to CA A and an account URI identifying an account at CA B is
unsatisfiable.</t>

<section anchor="use-with-acme" title="Use with ACME">

<t>An ACME <xref target="I-D.ietf-acme-acme"/> registration object MAY be identified by setting
the “account-uri” parameter to the URI of the ACME registration object.</t>

<t>Implementations of this specification which also implement ACME MUST recognise
such URIs.</t>

</section>
<section anchor="use-without-acme" title="Use without ACME">

<t>The “account-uri” specification provides a general mechanism to identify
entities which may request certificate issuance via URIs. The use of specific
kinds of URI may be specified in future RFCs, and CAs not implementing ACME MAY
assign and recognise their own URIs arbitrarily.</t>

</section>
</section>
<section anchor="extensions-to-the-caa-record-acme-methods-parameter" title="Extensions to the CAA Record: acme-methods Parameter">

<t>A CAA parameter “acme-methods” is also defined for the “issue” and “issuewild”
properties. The value of this parameter, if specified, MUST be a
comma-separated string of ACME challenge method names. The use of this
parameter is specific to ACME and CAs implementing it.</t>

<t>The presence of this parameter constrains the property to which it is attached.
A CA MUST only consider a property with the “acme-methods” parameter to
authorize issuance where the name of the challenge method being used is one of
the names listed in the comma separated list.</t>

<t>The special method value “non-acme” is defined. Where a CA supports both ACME
and the “acme-methods” parameter, but also allows the issuance of certificates
by other means, it MUST ensure that all of its other issuance channels
recognise the “acme-methods” parameter (see section 5.7). For the purposes of
validation, such non-ACME transactions shall be considered to have a method
name of “non-acme”. Thus, domains implementing CAA which wish to nominate a CA
which supports issuance via both ACME and non-ACME means can choose whether to
allow one or both.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>This specification describes an extension to the CAA record specification
increasing the granularity at which CAA policy can be expressed. This allows
the set of entities capable of successfully requesting issuance of certificates
for a given domain to be restricted beyond that which would otherwise be
possible, while still allowing issuance for specific accounts of a CA. This
improves the security of issuance for domains which choose to employ it, when
combined with a CA which implements this specification.</t>

<section anchor="uri-ambiguity" title="URI Ambiguity">

<t>Suppose that CA A recognises “a.example.com” as identifying itself, CA B is a
subsidiary of CA A which recognises both “a.example.com” and “b.example.com” as
identifying itself.</t>

<t>Suppose that both CA A and CA B issue account URIs of the form</t>

<t>“account-id:1234”</t>

<t>If the CA domain name in a CAA record is specified as “a.example.com” then this
could be construed as identifying account number 1234 at CA A or at CA B. These
may be different accounts, creating ambiguity.</t>

<t>Thus, CAs MUST ensure that the URIs they recognise as pertaining to a specific
account of that CA are unique within the scope of all domain names which they
recognise as identifying that CA for the purpose of CAA record validation.</t>

<t>It is RECOMMENDED that CAs satisfy this requirement by using URIs which include
an authority:</t>

<t>“https://a.example.com/account/1234”</t>

</section>
<section anchor="authorization-freshness" title="Authorization Freshness">

<t>The CAA specification governs the act of issuance by a CA. In some cases, a CA
may establish authorization for an account to request certificate issuance for
a specific domain separately to the act of issuance itself. Such authorization
may occur substantially prior to a certificate issuance request. The CAA policy
expressed by a domain may have changed in the meantime, creating the risk that
a CA will issue certificates in a manner inconsistent with the presently
published CAA policy.</t>

<t>CAs SHOULD consider adopting practices to reduce the risk of such
circumstances. Possible countermeasures include issuing authorizations with
very limited validity periods, such as an hour, or revalidating the CAA policy
for a domain at certificate issuance time.</t>

</section>
<section anchor="dnssec" title="DNSSEC">

<t>Where a domain chooses to secure its nameservers using DNSSEC, the authenticity
of its DNS data can be assured, providing that a CA makes all DNS resolutions
via an appropriate, trusted DNSSEC-validating resolver. A domain can use this
property to protect itself from the threat posed by a global adversary capable
of performing man-in-the-middle attacks, which is not ordinarily mitigated by
the “domain validation” model.</t>

<t>In order to facilitate this, a CA validation process must either rely solely on
information obtained via DNSSEC, or meaningfully bind the other parts of the
validation transaction using material obtained via DNSSEC.</t>

<t>The CAA parameters described in this specification can be used to ensure that
only validation methods meeting these criteria are used. In particular, a
domain secured via DNSSEC SHOULD either:</t>

<t><list style="numbers">
  <t>Use the “account-uri” parameter to ensure that only accounts which it
controls are authorized to obtain certificates, or</t>
  <t>Exclusively use validation methods which rely solely on information
obtained via DNSSEC, and use the “acme-methods” parameter to ensure that
only such methods are used.</t>
</list></t>

</section>
<section anchor="use-without-dnssec" title="Use without DNSSEC">

<t>Where a domain does not secure its nameservers using DNSSEC, or one or more of
the CAs it authorizes do not perform CAA validation lookups using a trusted
DNSSEC-validating resolver, use of the “account-uri” or “acme-methods”
parameters does not confer additional security against an attacker capable of
performing a man-in-the-middle attack against all validation attempts made by a
CA, as such an attacker could simply fabricate the responses to DNS lookups for
CAA records.</t>

<t>In this case, the “account-uri” and “acme-methods” parameters still provide an
effective means of administrative control over issuance, except where control
over DNS is subdelegated (see below).</t>

</section>
<section anchor="restrictions-supercedable-by-dns-delegation" title="Restrictions Supercedable by DNS Delegation">

<t>Because CAA records are located during validation by walking up the DNS
hierarchy until one or more records are found, the use of the “account-uri” and
“acme-methods” parameters, or any CAA policy, is not an effective way to
restrict or control issuance for subdomains of a domain, where control over
those subdomains is delegated to another party (such as via DNS delegation or
by providing limited access to manage subdomain DNS records).</t>

</section>
<section anchor="restrictions-ineffective-without-ca-recognition" title="Restrictions Ineffective without CA Recognition">

<t>The CAA parameters specified in this specification rely on their being
recognised by the CA named by an “issue” or “issuewild” CAA property. As such,
the parameters are not an effective means of control over issuance unless a
CA’s support for the parameters is established beforehand.</t>

<t>CAs which implement this specification SHOULD make available documentation
indicating as such, including explicit statements as to which parameters are
supported. Domains configuring CAA records for a CA MUST NOT assume that the
restrictions implied by the “account-uri” and “acme-methods” parameters are
effective in the absence of explicit indication as such from that CA.</t>

<t>CAs SHOULD also document whether they implement DNSSEC validation for DNS
lookups done for validation purposes, as this affects the security of the
“account-uri” and “acme-methods” parameters.</t>

</section>
<section anchor="mandatory-consistency-in-ca-recognition" title="Mandatory Consistency in CA Recognition">

<t>A CA MUST ensure that its support for the “account-uri” and “acme-methods”
parameters is fully consistent for a given domain name which a CA recognises as
identifying itself in a CAA “issue” or “issuewild” property. If a CA has
multiple issuance systems (for example, an ACME-based issuance system and a
non-ACME based issuance system, or two different issuance systems resulting
from a corporate merger), it MUST ensure that all issuance systems recognise
the same parameters.</t>

<t>A CA which is unable to do this MAY still implement the parameters by splitting
the CA into two domain names for the purposes of CAA processing. For example, a
CA “example.com” with an ACME-based issuance system and a non-ACME-based
issuance system could recognise only “acme.example.com” for the former and
“example.com” for the latter, and then implement support for the “account-uri”
and “acme-methods” parameters for “acme.example.com” only.</t>

<t>A CA which is unable to ensure consistent processing of the “account-uri” or
“acme-methods” parameters for a given CA domain name as specifiable in CAA
“issue” or “issuewild” properties MUST NOT implement support for these
parameters. Failure to do so will result in an implementation of these
parameters which does not provide effective security.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>None. As per the CAA specification, the parameter namespace for the CAA “issue”
and “issuewild” properties has CA-defined semantics. This document merely
specifies a RECOMMENDED semantic for parameters of the names “account-uri” and
“acme-methods”.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC2119' target='http://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 Community, 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='RFC3986' target='http://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor='RFC6844' target='http://www.rfc-editor.org/info/rfc6844'>
<front>
<title>DNS Certification Authority Authorization (CAA) Resource Record</title>
<author initials='P.' surname='Hallam-Baker' fullname='P. Hallam-Baker'><organization /></author>
<author initials='R.' surname='Stradling' fullname='R. Stradling'><organization /></author>
<date year='2013' month='January' />
<abstract><t>The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify one or more Certification Authorities (CAs) authorized to issue certificates for that domain. CAA Resource Records allow a public Certification Authority to implement additional controls to reduce the risk of unintended certificate mis-issue.  This document defines the syntax of the CAA record and rules for processing CAA records by certificate issuers. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6844'/>
<seriesInfo name='DOI' value='10.17487/RFC6844'/>
</reference>



<reference anchor='I-D.ietf-acme-acme'>
<front>
<title>Automatic Certificate Management Environment (ACME)</title>

<author initials='R' surname='Barnes' fullname='Richard Barnes'>
    <organization />
</author>

<author initials='J' surname='Hoffman-Andrews' fullname='Jacob Hoffman-Andrews'>
    <organization />
</author>

<author initials='J' surname='Kasten' fullname='James Kasten'>
    <organization />
</author>

<date month='July' day='8' year='2016' />

<abstract><t>Certificates in the Web's X.509 PKI (PKIX) are used for a number of purposes, the most significant of which is the authentication of domain names.  Thus, certificate authorities in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate.  Today, this verification is done through a collection of ad hoc mechanisms.  This document describes a protocol that a certificate authority (CA) and an applicant can use to automate the process of verification and certificate issuance.  The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-acme-acme-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-acme-acme-03.txt' />
</reference>




    </references>



<section anchor="examples" title="Examples">

<t>The following shows an example DNS zone file fragment which nominates two
account URIs as authorized to issue certificates for the domain “example.com”.
Issuance is restricted to the CA “example.net”.</t>

<figure><artwork><![CDATA[
example.com. IN CAA 0 issue "example.net; \
  account-uri=https://example.net/registration/1234"
example.com. IN CAA 0 issue "example.net; \
  account-uri=https://example.net/registration/2345"
]]></artwork></figure>

<t>The following shows a zone file fragment which restricts the ACME methods which
can be used; only ACME methods “dns-01” and “xyz-01” can be used.</t>

<figure><artwork><![CDATA[
example.com. IN CAA 0 issue "example.net; \
  acme-methods=dns-01,xyz-01"
]]></artwork></figure>

<t>The following shows an equivalent way of expressing the same restriction:</t>

<figure><artwork><![CDATA[
example.com. IN CAA 0 issue "example.net; acme-methods=dns-01"
example.com. IN CAA 0 issue "example.net; acme-methods=xyz-01"
]]></artwork></figure>

<t>The following shows a zone file fragment in which one account can be used to
issue with the “dns-01” method and one account can be used to issue with the
“http-01” method.</t>

<figure><artwork><![CDATA[
example.com. IN CAA 0 issue "example.net; \
  account-uri=https://example.net/registration/1234; \
  acme-methods=dns-01"
example.com. IN CAA 0 issue "example.net; \
  account-uri=https://example.net/registration/2345; \
  acme-methods=http-01"
]]></artwork></figure>

<t>The following shows a zone file fragment in which only ACME method “dns-01”
can be used, but non-ACME methods of issuance are also allowed.</t>

<figure><artwork><![CDATA[
example.com. IN CAA 0 issue "example.net; \
  acme-methods=dns-01,non-acme"
]]></artwork></figure>

</section>


  </back>
</rfc>

