draft-ietf-acme-caa-10.txt   rfc8657.txt 
ACME Working Group H. Landau Internet Engineering Task Force (IETF) H. Landau
Internet-Draft June 20, 2019 Request for Comments: 8657 November 2019
Intended status: Standards Track Category: Standards Track
Expires: December 22, 2019 ISSN: 2070-1721
CAA Record Extensions for Account URI and ACME Method Binding Certification Authority Authorization (CAA) Record Extensions for
draft-ietf-acme-caa-10 Account URI and Automatic Certificate Management Environment (ACME)
Method Binding
Abstract Abstract
The Certification Authority Authorization (CAA) DNS record allows a The Certification Authority Authorization (CAA) DNS record allows a
domain to communicate issuance policy to Certification Authorities domain to communicate an issuance policy to Certification Authorities
(CAs), but only allows a domain to define policy with CA-level (CAs) but only allows a domain to define a policy with CA-level
granularity. However, the CAA specification also provides facilities granularity. However, the CAA specification (RFC 8659) also provides
for extension to admit more granular, CA-specific policy. This facilities for an extension to admit a more granular, CA-specific
specification defines two such parameters, one allowing specific policy. This specification defines two such parameters: one allowing
accounts of a CA to be identified by URI and one allowing specific specific accounts of a CA to be identified by URIs and one allowing
methods of domain control validation as defined by the ACME protocol specific methods of domain control validation as defined by the
to be required. Automatic Certificate Management Environment (ACME) protocol to be
required.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on December 22, 2019. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc8657.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology
3. Extensions to the CAA Record: accounturi Parameter . . . . . 3 3. Extensions to the CAA Record: The "accounturi" Parameter
3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Use with ACME
3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 3 3.2. Use without ACME
4. Extensions to the CAA Record: validationmethods Parameter . . 4 4. Extensions to the CAA Record: The "validationmethods" Parameter
5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 5. Security Considerations
5.1. Limited to CAs Processing CAA Records . . . . . . . . . . 5 5.1. Limited to CAs Processing CAA Records
5.2. Restrictions Ineffective without CA Recognition . . . . . 5 5.2. Restrictions Ineffective without CA Recognition
5.3. Mandatory Consistency in CA Recognition . . . . . . . . . 5 5.3. Mandatory Consistency in CA Recognition
5.4. URI Ambiguity . . . . . . . . . . . . . . . . . . . . . . 6 5.4. URI Ambiguity
5.5. Authorization Freshness . . . . . . . . . . . . . . . . . 7 5.5. Authorization Freshness
5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 7 5.6. Use with and without DNSSEC
5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 5.7. Restrictions Supersedable by DNS Delegation
5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 9 5.8. Misconfiguration Hazards
5.9. Revelation of Account URIs . . . . . . . . . . . . . . . 9 5.9. Revelation of Account URIs
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 6. IANA Considerations
7. Normative References . . . . . . . . . . . . . . . . . . . . 9 7. Normative References
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 10 Appendix A. Examples
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 Author's Address
1. Introduction 1. Introduction
This specification defines two parameters for the "issue" and This specification defines two parameters for the "issue" and
"issuewild" properties of the Certification Authority Authorization "issuewild" Properties of the Certification Authority Authorization
(CAA) DNS resource record [I-D.ietf-lamps-rfc6844bis]. The first, (CAA) DNS resource record [RFC8659]. The first, "accounturi", allows
"accounturi", allows authorization conferred by a CAA policy to be authorization conferred by a CAA policy to be restricted to specific
restricted to specific accounts of a CA, which are identified by accounts of a Certification Authority (CA), which are identified by
URIs. The second, "validationmethods", allows the set of validation URIs. The second, "validationmethods", allows the set of validation
methods supported by a CA to validate domain control to be limited to methods supported by a CA to validate domain control to be limited to
a subset of the full set of methods which it supports. a subset of the full set of methods that it supports.
2. Terminology 2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as "OPTIONAL" in this document are to be interpreted as described in
described in BCP 14 [RFC2119] [RFC8174] when, and only when, they BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
appear in all capitals, as shown here. capitals, as shown here.
3. Extensions to the CAA Record: accounturi Parameter 3. Extensions to the CAA Record: The "accounturi" Parameter
A CAA parameter "accounturi" is defined for the "issue" and This document defines the "accounturi" CAA parameter for the "issue"
"issuewild" properties defined by [I-D.ietf-lamps-rfc6844bis]. The and "issuewild" Properties defined by [RFC8659]. The value of this
value of this parameter, if specified, MUST be a URI [RFC3986] parameter, if specified, MUST be a URI [RFC3986] identifying a
identifying a specific CA account. specific CA account.
"CA account" means an object, maintained by a specific CA and which "CA account" means an object that is maintained by a specific CA,
may request the issuance of certificates, which represents a specific that may request the issuance of certificates, and that represents a
entity or group of related entities. specific entity or group of related entities.
The presence of this parameter constrains the property to which it is The presence of this parameter constrains the Property to which it is
attached. Where a CAA property has an "accounturi" parameter, a CA attached. Where a CAA Property has an "accounturi" parameter, a CA
MUST only consider that property to authorize issuance in the context MUST only consider that Property to authorize issuance in the context
of a given certificate issuance request if the CA recognises the URI of a given certificate issuance request if the CA recognizes the URI
specified in the value portion of that parameter as identifying the specified in the value portion of that parameter as identifying the
account making that request. account making that request.
A property without an "accounturi" parameter matches any account. A A Property without an "accounturi" parameter matches any account. A
property with an invalid or unrecognised "accounturi" parameter is Property with an invalid or unrecognized "accounturi" parameter is
unsatisfiable. A property with multiple "accounturi" parameters is unsatisfiable. A Property with multiple "accounturi" parameters is
unsatisfiable. unsatisfiable.
The presence of an "accounturi" parameter does not replace or The presence of an "accounturi" parameter does not replace or
supercede the need to validate the domain name specified in an supersede the need to validate the domain name specified in an
"issue" or "issuewild" record in the manner described in the CAA "issue" or "issuewild" record in the manner described in the CAA
specification. CAs MUST still perform such validation. For example, specification [RFC8659]. CAs MUST still perform such validation.
a CAA "issue" property which specifies a domain name belonging to CA For example, a CAA "issue" Property that specifies a domain name
A and an "accounturi" parameter identifying an account at CA B is belonging to CA A and an "accounturi" parameter identifying an
unsatisfiable. account at CA B is unsatisfiable.
3.1. Use with ACME 3.1. Use with ACME
An ACME [RFC8555] account object MAY be identified by setting the An Automatic Certificate Management Environment (ACME) [RFC8555]
"accounturi" parameter to the URI of the ACME account object. account object MAY be identified by setting the "accounturi"
parameter to the URI of the ACME account object.
Implementations of this specification which also implement ACME MUST Implementations of this specification that also implement ACME MUST
recognise such URIs. recognize such URIs.
3.2. Use without ACME 3.2. Use without ACME
The "accounturi" specification provides a general mechanism to The "accounturi" specification provides a general mechanism to
identify entities which may request certificate issuance via URIs. identify entities that may request certificate issuance via URIs.
The use of specific kinds of URI may be specified in future RFCs, and The use of specific kinds of URIs may be specified in future RFCs,
CAs not implementing ACME MAY assign and recognise their own URIs and CAs not implementing ACME MAY assign and recognize their own URIs
arbitrarily. arbitrarily.
4. Extensions to the CAA Record: validationmethods Parameter 4. Extensions to the CAA Record: The "validationmethods" Parameter
A CAA parameter "validationmethods" is also defined for the "issue" This document also defines the "validationmethods" CAA parameter for
and "issuewild" properties. The value of this parameter, if the "issue" and "issuewild" Properties. The value of this parameter,
specified, MUST be a comma-separated string of zero or more if specified, MUST be a comma-separated string of zero or more
validation method labels. validation method labels.
A validation method label identifies a validation method. A A validation method label identifies a validation method. A
validation method is a particular way in which a CA can validate validation method is a particular way in which a CA can validate
control over a domain. control over a domain.
The presence of this parameter constrains the property to which it is The presence of this parameter constrains the Property to which it is
attached. A CA MUST only consider a property with the attached. A CA MUST only consider a Property with the
"validationmethods" parameter to authorize issuance where the "validationmethods" parameter to authorize issuance where the
validation method being used is identified by one of the validation validation method being used is identified by one of the validation
method labels listed in the comma-separated list. method labels listed in the comma-separated list.
Each validation method label MUST be either the label of a method Each validation method label MUST be either the label of a method
defined in the ACME Validation Methods IANA registry, or a CA- defined in the "ACME Validation Methods" IANA registry [RFC8555] or a
specific non-ACME validation method label as defined below. CA-specific non-ACME validation method label as defined below.
Where a CA supports both the "validationmethods" parameter and one or Where a CA supports both the "validationmethods" parameter and one or
more non-ACME validation methods, it MUST assign labels to those more non-ACME validation methods, it MUST assign labels to those
methods. If appropriate non-ACME labels are not present in the ACME methods. If appropriate non-ACME labels are not present in the "ACME
Validation Methods IANA registry, the CA MUST use labels beginning Validation Methods" IANA registry, the CA MUST use labels beginning
with the string "ca-", which are defined to have CA-specific meaning. with the string "ca-", which are defined to have CA-specific meaning.
The value of the "validationmethods" parameter MUST comply with the The value of the "validationmethods" parameter MUST comply with the
following ABNF [RFC5234]: following ABNF [RFC5234]:
value = [*(label ",") label] value = [*(label ",") label]
label = 1*(ALPHA / DIGIT / "-") label = 1*(ALPHA / DIGIT / "-")
5. Security Considerations 5. Security Considerations
This specification describes an extension to the CAA record This specification describes an extension to the CAA record
specification increasing the granularity at which CAA policy can be specification, increasing the granularity at which a CAA policy can
expressed. This allows the set of entities capable of successfully be expressed. This allows the set of entities capable of
requesting issuance of certificates for a given domain to be successfully requesting issuance of certificates for a given domain
restricted beyond that which would otherwise be possible, while still to be restricted beyond the set of entities would otherwise be
allowing issuance for specific accounts of a CA. This improves the possible, while still allowing issuance for specific accounts of a
security of issuance for domains which choose to employ it, when CA. This improves the security of issuance for domains that choose
combined with a CA which implements this specification. to employ it, when combined with a CA that implements this
specification.
5.1. Limited to CAs Processing CAA Records 5.1. Limited to CAs Processing CAA Records
All of the security considerations of the CAA specification are All of the security considerations listed in [RFC8659] are inherited
inherited by this document. This specification merely enables a by this document. This specification merely enables a domain with an
domain with an existing relationship with a CA to further constrain existing relationship with a CA to further constrain that CA in its
that CA in its issuance practices, where that CA implements this issuance practices, where that CA implements this specification. In
specification. In particular, it provides no additional security particular, it provides no additional security above that provided by
above that provided by use of the unextended CAA specification alone using the unextended CAA specification alone as concerns matters
as concerns matters relating to any other CA. The capacity of any relating to any other CA. The capacity of any other CA to issue
other CA to issue certificates for the given domain is completely certificates for the given domain is completely unchanged.
unchanged.
As such, a domain which via CAA records authorizes only CAs adopting As such, a domain that, via CAA records, authorizes only CAs adopting
this specification, and which constrains its policy by means of this this specification and that constrains its policy by means of this
specification, remains vulnerable to unauthorized issuance by CAs specification, remains vulnerable to unauthorized issuance by CAs
which do not honour CAA records, or which honour them only on an that do not honor CAA records or that honor them only on an advisory
advisory basis. Where a domain uses DNSSEC, it also remains basis. Where a domain uses DNSSEC, it also remains vulnerable to CAs
vulnerable to CAs which honour CAA records but which do not validate that honor CAA records but that do not validate CAA records by means
CAA records by means of a trusted DNSSEC-validating resolver. of a trusted DNSSEC-validating resolver.
5.2. Restrictions Ineffective without CA Recognition 5.2. Restrictions Ineffective without CA Recognition
Because the parameters of "issue" or "issuewild" CAA properties Because the parameters of "issue" or "issuewild" CAA Properties
constitute a CA-specific namespace, the CA identified by an "issue" constitute a CA-specific namespace, the CA identified by an "issue"
or "issuewild" property decides what parameters to recognise and or "issuewild" Property decides what parameters to recognize and
their semantics. Accordingly, the CAA parameters defined in this their semantics. Accordingly, the CAA parameters defined in this
specification rely on their being recognised by the CA named by an specification rely on their being recognized by the CA named by an
"issue" or "issuewild" CAA property, and are not an effective means "issue" or "issuewild" CAA Property and are not an effective means of
of control over issuance unless a CA's support for the parameters is control over issuance unless a CA's support for the parameters is
established beforehand. established beforehand.
CAs which implement this specification SHOULD make available CAs that implement this specification SHOULD make available
documentation indicating as such, including explicit statements as to documentation indicating as such, including explicit statements as to
which parameters are supported. Domains configuring CAA records for which parameters are supported. Domains configuring CAA records for
a CA MUST NOT assume that the restrictions implied by the a CA MUST NOT assume that the restrictions implied by the
"accounturi" and "validationmethods" parameters are effective in the "accounturi" and "validationmethods" parameters are effective in the
absence of explicit indication as such from that CA. absence of explicit indication as such from that CA.
CAs SHOULD also document whether they implement DNSSEC validation for CAs SHOULD also document whether they implement DNSSEC validation for
DNS lookups done for validation purposes, as this affects the DNS lookups done for validation purposes, as this affects the
security of the "accounturi" and "validationmethods" parameters. security of the "accounturi" and "validationmethods" parameters.
5.3. Mandatory Consistency in CA Recognition 5.3. Mandatory Consistency in CA Recognition
A CA MUST ensure that its support for the "accounturi" and A CA MUST ensure that its support for the "accounturi" and
"validationmethods" parameters is fully consistent for a given domain "validationmethods" parameters is fully consistent for a given domain
name which a CA recognises as identifying itself in a CAA "issue" or name that a CA recognizes as identifying itself in a CAA "issue" or
"issuewild" property. If a CA has multiple issuance systems (for "issuewild" Property. If a CA has multiple issuance systems (for
example, an ACME-based issuance system and a non-ACME based issuance example, an ACME-based issuance system and a non-ACME-based issuance
system, or two different issuance systems resulting from a corporate system, or two different issuance systems resulting from a corporate
merger), it MUST ensure that all issuance systems recognise the same merger), it MUST ensure that all issuance systems recognize the same
parameters. parameters.
A CA which is unable to do this MAY still implement the parameters by A CA that is unable to do this MAY still implement the parameters by
splitting the CA into two domain names for the purposes of CAA splitting the CA into two domain names for the purposes of CAA
processing. For example, a CA "example.com" with an ACME-based processing. For example, a CA "example.com" with an ACME-based
issuance system and a non-ACME-based issuance system could recognise issuance system and a non-ACME-based issuance system could recognize
only "acme.example.com" for the former and "example.com" for the only "acme.example.com" for the former and "example.com" for the
latter, and then implement support for the "accounturi" and latter, and then implement support for the "accounturi" and
"validationmethods" parameters for "acme.example.com" only. "validationmethods" parameters for "acme.example.com" only.
A CA which is unable to ensure consistent processing of the A CA that is unable to ensure consistent processing of the
"accounturi" or "validationmethods" parameters for a given CA domain "accounturi" parameter or the "validationmethods" parameter for a
name as specifiable in CAA "issue" or "issuewild" properties MUST NOT given CA domain name as specifiable in CAA "issue" or "issuewild"
implement support for these parameters. Failure to do so would Properties MUST NOT implement support for these parameters. Failure
result in an implementation of these parameters which does not to do so would result in an implementation of these parameters that
provide effective security. does not provide effective security.
5.4. URI Ambiguity 5.4. URI Ambiguity
Suppose that CA A recognises "a.example.com" as identifying itself, Suppose that CA A recognizes "a.example.com" as identifying itself
CA B is a subsidiary of CA A which recognises both "a.example.com" and CA B is a subsidiary of CA A that recognizes both "a.example.com"
and "b.example.com" as identifying itself. and "b.example.com" as identifying itself.
Suppose that both CA A and CA B issue account URIs of the form Suppose that both CA A and CA B issue account URIs of the form:
"urn:example:account-id:1234" "urn:example:account-id:1234"
If the CA domain name in a CAA record is specified as "a.example.com" If the CA domain name in a CAA record is specified as
then this could be construed as identifying account number 1234 at CA "a.example.com", then this could be construed as identifying account
A or at CA B. These may be different accounts, creating ambiguity. number 1234 at CA A or at CA B. These may be different accounts,
creating ambiguity.
Thus, CAs MUST ensure that the URIs they recognise as pertaining to a Thus, CAs MUST ensure that the URIs they recognize as pertaining to a
specific account of that CA are unique within the scope of all domain 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 names that they recognize as identifying that CA for the purpose of
CAA record validation. CAA record validation.
CAs SHOULD satisfy this requirement by using URIs which include an CAs SHOULD satisfy this requirement by using URIs that include an
authority (see Section 3.2 of [RFC3986]): authority (see Section 3.2 of [RFC3986]):
"https://a.example.com/account/1234" "https://a.example.com/account/1234"
5.5. Authorization Freshness 5.5. Authorization Freshness
The CAA specification governs the act of issuance by a CA. In some The CAA specification [RFC8659] governs the act of issuance by a CA.
cases, a CA may establish authorization for an account to request In some cases, a CA may establish authorization for an account to
certificate issuance for a specific domain separately to the act of request certificate issuance for a specific domain separately from
issuance itself. Such authorization may occur substantially prior to the act of issuance itself. Such authorization may occur
a certificate issuance request. The CAA policy expressed by a domain substantially prior to a certificate issuance request. The CAA
may have changed in the meantime, creating the risk that a CA will policy expressed by a domain may have changed in the meantime,
issue certificates in a manner inconsistent with the presently creating the risk that a CA will issue certificates in a manner
published CAA policy. inconsistent with the presently published CAA policy.
CAs SHOULD adopt practices to reduce the risk of such circumstances. CAs SHOULD adopt practices to reduce the risk of such circumstances.
Possible countermeasures include issuing authorizations with very Possible countermeasures include issuing authorizations with very
limited validity periods, such as an hour, or revalidating the CAA limited validity periods, such as an hour, or revalidating the CAA
policy for a domain at certificate issuance time. policy for a domain at certificate issuance time.
5.6. Use with and without DNSSEC 5.6. Use with and without DNSSEC
The "domain validation" model of validation commonly used for The "domain validation" model of validation commonly used for
certificate issuance cannot ordinarily protect against adversaries certificate issuance cannot ordinarily protect against adversaries
who can conduct global man-in-the-middle attacks against a particular who can conduct global man-in-the-middle attacks against a particular
domain. A global man-in-the-middle attack is an attack which can domain. A global man-in-the-middle attack is an attack that can
intercept traffic to or from a given domain, regardless of the origin intercept traffic to or from a given domain, regardless of the origin
or destination of that traffic. Such an adversary can intercept all or destination of that traffic. Such an adversary can intercept all
validation traffic initiated by a CA and thus appear to have control validation traffic initiated by a CA and thus appear to have control
of the given domain. of the given domain.
Where a domain is signed using DNSSEC, the authenticity of its DNS Where a domain is signed using DNSSEC, the authenticity of its DNS
data can be assured, providing that a given CA makes all DNS data can be assured, providing that a given CA makes all DNS
resolutions via a trusted DNSSEC-validating resolver. A domain can resolutions via a trusted DNSSEC-validating resolver. A domain can
use this property to protect itself from the threat posed by an use this Property to protect itself from the threat posed by an
adversary capable of performing a global man-in-the-middle attack adversary capable of performing a global man-in-the-middle attack
against that domain. against that domain.
In order to facilitate this, a CA validation process must either rely In order to facilitate this, a CA validation process must either rely
solely on information obtained via DNSSEC, or meaningfully bind the solely on information obtained via DNSSEC or meaningfully bind the
other parts of the validation transaction using material obtained via other parts of the validation transaction using material obtained via
DNSSEC. DNSSEC.
The CAA parameters described in this specification can be used to The CAA parameters described in this specification can be used to
ensure that only validation methods meeting these criteria are used. ensure that only validation methods meeting these criteria are used.
In particular, a domain secured via DNSSEC SHOULD either: In particular, a domain secured via DNSSEC SHOULD either:
1. Use the "accounturi" parameter to ensure that only accounts which 1. Use the "accounturi" parameter to ensure that only accounts that
it controls are authorized to obtain certificates, or it controls are authorized to obtain certificates, or
2. Exclusively use validation methods which rely solely on 2. Exclusively use validation methods that rely solely on
information obtained via DNSSEC, and use the "validationmethods" information obtained via DNSSEC and use the "validationmethods"
parameter to ensure that only such methods are used. parameter to ensure that only such methods are used.
A CA supporting the "accounturi" or "validationmethods" parameters A CA supporting the "accounturi" parameter or the "validationmethods"
MUST perform CAA validation using a trusted, DNSSEC-validating parameter MUST perform CAA validation using a trusted
resolver. DNSSEC-validating resolver.
"Trusted" in this context means that the CA both trusts the resolver "Trusted" in this context means that the CA both trusts the resolver
itself and ensures that the communications path between the resolver itself and ensures that the communications path between the resolver
and the system performing CAA validation are secure. It is and the system performing CAA validation is secure. It is
RECOMMENDED that a CA ensure this by using a DNSSEC-validating RECOMMENDED that a CA ensure this by using a DNSSEC-validating
resolver running on the same machine as the system performing CAA resolver running on the same machine as the system performing CAA
validation. validation.
Use of the "accounturi" or "validationmethods" parameters does not The use of the "accounturi" parameter or the "validationmethods"
confer additional security against an attacker capable of performing parameter does not confer additional security against an attacker
a man-in-the-middle attack against all validation attempts made by a capable of performing a man-in-the-middle attack against all
given CA which is authorized by CAA where: validation attempts made by a given CA that is authorized by CAA
where:
1. A domain does not secure its nameservers using DNSSEC, or 1. A domain does not secure its nameservers using DNSSEC, or
2. That CA does not perform CAA validation using a trusted DNSSEC- 2. That CA does not perform CAA validation using a trusted
validating resolver. DNSSEC-validating resolver.
Moreover, use of the "accounturi" or "validationmethods" parameters Moreover, the use of the "accounturi" parameter or the
does not mitigate against man-in-the-middle attacks against CAs which "validationmethods" parameter does not mitigate man-in-the-middle
do not validate CAA records, or which do not do so using a trusted attacks against CAs that do not validate CAA records or that do not
DNSSEC-validating resolver, regardless of whether those CAs are do so using a trusted DNSSEC-validating resolver, regardless of
authorized by CAA or not; see Section 5.1. whether or not those CAs are authorized by CAA; see Section 5.1.
In these cases, the "accounturi" and "validationmethods" parameters In these cases, the "accounturi" and "validationmethods" parameters
still provide an effective means of administrative control over still provide an effective means of administrative control over
issuance, except where control over DNS is subdelegated (see below). issuance, except where control over DNS is subdelegated (see below).
5.7. Restrictions Supercedable by DNS Delegation 5.7. Restrictions Supersedable by DNS Delegation
CAA records are located during validation by walking up the DNS CAA records are located during validation by walking up the DNS
hierarchy until one or more records are found. CAA records are hierarchy until one or more records are found. CAA records are
therefore not an effective way of restricting or controlling issuance therefore not an effective way of restricting or controlling issuance
for subdomains of a domain, where control over those subdomains is for subdomains of a domain, where control over those subdomains is
delegated to another party (such as via DNS delegation or by delegated to another party (such as via DNS delegation or by
providing limited access to manage subdomain DNS records). providing limited access to manage subdomain DNS records).
5.8. Misconfiguration Hazards 5.8. Misconfiguration Hazards
Because the "accounturi" and "validationmethods" parameters express Because the "accounturi" and "validationmethods" parameters express
restrictive security policies, misconfiguration of said parameters restrictive security policies, misconfiguration of said parameters
may result in legitimate issuance requests being refused. may result in legitimate issuance requests being refused.
5.9. Revelation of Account URIs 5.9. Revelation of Account URIs
Because CAA records are publically accessible, use of the Because CAA records are publicly accessible, the use of the
"accounturi" parameter enables third parties to observe the "accounturi" parameter enables third parties to observe the
authorized account URIs for a domain. This may allow third parties authorized account URIs for a domain. This may allow third parties
to identify a correlation between domains if those domains use the to identify a correlation between domains if those domains use the
same account URIs. same account URIs.
CAs are encouraged to select and process account URIs under the CAs are encouraged to select and process account URIs under the
assumption that untrusted third parties may learn of them. assumption that untrusted third parties may learn of them.
6. IANA Considerations 6. IANA Considerations
None. As per the CAA specification, the parameter namespace for the This document has no IANA actions. As per [RFC8659], the parameter
CAA "issue" and "issuewild" properties has CA-defined semantics and namespace for the CAA "issue" and "issuewild" Properties has CA-
the identifiers within that namespace may be freely and arbitrarily defined semantics, and the identifiers within that namespace may be
assigned by a CA. This document merely specifies recommended freely and arbitrarily assigned by a CA. This document merely
semantics for parameters of the names "accounturi" and specifies recommended semantics for parameters of the names
"validationmethods", which CAs may choose to adopt. "accounturi" and "validationmethods", which CAs may choose to adopt.
7. Normative References 7. Normative References
[I-D.ietf-lamps-rfc6844bis]
Hallam-Baker, P., Stradling, R., and J. Hoffman-Andrews,
"DNS Certification Authority Authorization (CAA) Resource
Record", draft-ietf-lamps-rfc6844bis-07 (work in
progress), May 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005, RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>. <https://www.rfc-editor.org/info/rfc3986>.
skipping to change at page 10, line 14 skipping to change at line 423
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8555] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. [RFC8555] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J.
Kasten, "Automatic Certificate Management Environment Kasten, "Automatic Certificate Management Environment
(ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019, (ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019,
<https://www.rfc-editor.org/info/rfc8555>. <https://www.rfc-editor.org/info/rfc8555>.
[RFC8659] Hallam-Baker, P., Stradling, R., and J. Hoffman-Andrews,
"DNS Certification Authority Authorization (CAA) Resource
Record", RFC 8659, DOI 10.17487/RFC8659, November 2019,
<https://www.rfc-editor.org/info/rfc8659>.
Appendix A. Examples Appendix A. Examples
The following shows an example DNS zone file fragment which nominates The following shows an example DNS zone file fragment that nominates
two account URIs as authorized to issue certificates for the domain two account URIs as authorized to issue certificates for the domain
"example.com". Issuance is restricted to the CA "example.net". "example.com". Issuance is restricted to the CA "example.net".
example.com. IN CAA 0 issue "example.net; \ example.com. IN CAA 0 issue "example.net; \
accounturi=https://example.net/account/1234" accounturi=https://example.net/account/1234"
example.com. IN CAA 0 issue "example.net; \ example.com. IN CAA 0 issue "example.net; \
accounturi=https://example.net/account/2345" accounturi=https://example.net/account/2345"
The following shows a zone file fragment which restricts the ACME The following shows a zone file fragment that restricts the ACME
methods which can be used; only ACME methods "dns-01" and "xyz-01" methods that can be used; only ACME methods "dns-01" and "xyz-01" can
can be used. be used.
example.com. IN CAA 0 issue "example.net; \ example.com. IN CAA 0 issue "example.net; \
validationmethods=dns-01,xyz-01" validationmethods=dns-01,xyz-01"
The following shows an equivalent way of expressing the same The following shows an equivalent way of expressing the same
restriction: restriction:
example.com. IN CAA 0 issue "example.net; validationmethods=dns-01" example.com. IN CAA 0 issue "example.net; validationmethods=dns-01"
example.com. IN CAA 0 issue "example.net; validationmethods=xyz-01" example.com. IN CAA 0 issue "example.net; validationmethods=xyz-01"
 End of changes. 65 change blocks. 
193 lines changed or deleted 194 lines changed or added

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