< draft-ietf-lamps-rfc6844bis-04.txt   draft-ietf-lamps-rfc6844bis-05.txt >
Network Working Group P. Hallam-Baker Network Working Group P. Hallam-Baker
Internet-Draft Comodo Group, Inc Internet-Draft
Obsoletes: 6844 (if approved) R. Stradling Obsoletes: 6844 (if approved) R. Stradling
Intended status: Standards Track Sectigo Intended status: Standards Track Sectigo
Expires: June 6, 2019 J. Hoffman-Andrews Expires: August 8, 2019 J. Hoffman-Andrews
Let's Encrypt Let's Encrypt
December 03, 2018 February 04, 2019
DNS Certification Authority Authorization (CAA) Resource Record DNS Certification Authority Authorization (CAA) Resource Record
draft-ietf-lamps-rfc6844bis-04 draft-ietf-lamps-rfc6844bis-05
Abstract Abstract
The Certification Authority Authorization (CAA) DNS Resource Record The Certification Authority Authorization (CAA) DNS Resource Record
allows a DNS domain name holder to specify one or more Certification allows a DNS domain name holder to specify one or more Certification
Authorities (CAs) authorized to issue certificates for that domain. Authorities (CAs) authorized to issue certificates for that domain
CAA Resource Records allow a public Certification Authority to name. CAA Resource Records allow a public Certification Authority to
implement additional controls to reduce the risk of unintended implement additional controls to reduce the risk of unintended
certificate mis-issue. This document defines the syntax of the CAA certificate mis-issue. This document defines the syntax of the CAA
record and rules for processing CAA records by certificate issuers. record and rules for processing CAA records by certificate issuers.
This document obsoletes RFC 6844. This document obsoletes RFC 6844.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 6, 2019. This Internet-Draft will expire on August 8, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 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
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2.2. Defined Terms . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Defined Terms . . . . . . . . . . . . . . . . . . . . . . 4
3. The CAA RR Type . . . . . . . . . . . . . . . . . . . . . . . 5 3. Relevant Resource Record Set . . . . . . . . . . . . . . . . 5
4. Certification Authority Processing . . . . . . . . . . . . . 7 4. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1. Use of DNS Security . . . . . . . . . . . . . . . . . . . 8 4.1. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 6
5. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.1.1. Canonical Presentation Format . . . . . . . . . . . . 7
5.1. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2. CAA issue Property . . . . . . . . . . . . . . . . . . . 8
5.1.1. Canonical Presentation Format . . . . . . . . . . . . 10 4.3. CAA issuewild Property . . . . . . . . . . . . . . . . . 9
5.2. CAA issue Property . . . . . . . . . . . . . . . . . . . 11 4.4. CAA iodef Property . . . . . . . . . . . . . . . . . . . 10
5.3. CAA issuewild Property . . . . . . . . . . . . . . . . . 12 4.5. Critical Flag . . . . . . . . . . . . . . . . . . . . . . 11
5.4. CAA iodef Property . . . . . . . . . . . . . . . . . . . 13 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 5.1. Use of DNS Security . . . . . . . . . . . . . . . . . . . 12
6.1. Non-Compliance by Certification Authority . . . . . . . . 13 5.2. Non-Compliance by Certification Authority . . . . . . . . 12
6.2. Mis-Issue by Authorized Certification Authority . . . . . 13 5.3. Mis-Issue by Authorized Certification Authority . . . . . 12
6.3. Suppression or Spoofing of CAA Records . . . . . . . . . 14 5.4. Suppression or Spoofing of CAA Records . . . . . . . . . 12
6.4. Denial of Service . . . . . . . . . . . . . . . . . . . . 14 5.5. Denial of Service . . . . . . . . . . . . . . . . . . . . 13
6.5. Abuse of the Critical Flag . . . . . . . . . . . . . . . 14 5.6. Abuse of the Critical Flag . . . . . . . . . . . . . . . 13
7. Deployment Considerations . . . . . . . . . . . . . . . . . . 15 6. Deployment Considerations . . . . . . . . . . . . . . . . . . 13
7.1. Blocked Queries or Responses . . . . . . . . . . . . . . 15 6.1. Blocked Queries or Responses . . . . . . . . . . . . . . 14
7.2. Rejected Queries and Malformed Responses . . . . . . . . 15 6.2. Rejected Queries and Malformed Responses . . . . . . . . 14
7.3. Delegation to Private Nameservers . . . . . . . . . . . . 15 6.3. Delegation to Private Nameservers . . . . . . . . . . . . 14
7.4. Bogus DNSSEC Responses . . . . . . . . . . . . . . . . . 15 6.4. Bogus DNSSEC Responses . . . . . . . . . . . . . . . . . 14
8. Differences versus RFC6844 . . . . . . . . . . . . . . . . . 16 7. Differences versus RFC6844 . . . . . . . . . . . . . . . . . 15
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
11.1. Normative References . . . . . . . . . . . . . . . . . . 17 10.1. Normative References . . . . . . . . . . . . . . . . . . 16
11.2. Informative References . . . . . . . . . . . . . . . . . 18 10.2. Informative References . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction 1. Introduction
The Certification Authority Authorization (CAA) DNS Resource Record The Certification Authority Authorization (CAA) DNS Resource Record
allows a DNS domain name holder to specify the Certification allows a DNS domain name holder to specify the Certification
Authorities (CAs) authorized to issue certificates for that domain. Authorities (CAs) authorized to issue certificates for that domain
Publication of CAA Resource Records allows a public Certification name. Publication of CAA Resource Records allows a public
Authority to implement additional controls to reduce the risk of Certification Authority to implement additional controls to reduce
unintended certificate mis-issue. the risk of unintended certificate mis-issue.
Like the TLSA record defined in DNS-Based Authentication of Named Like the TLSA record defined in DNS-Based Authentication of Named
Entities (DANE) [RFC6698], CAA records are used as a part of a Entities (DANE) [RFC6698], CAA records are used as a part of a
mechanism for checking PKIX certificate data. The distinction mechanism for checking PKIX [RFC6698] certificate data. The
between the two specifications is that CAA records specify an distinction between the two specifications is that CAA records
authorization control to be performed by a certificate issuer before specify an authorization control to be performed by a certificate
issue of a certificate and TLSA records specify a verification issuer before issue of a certificate and TLSA records specify a
control to be performed by a relying party after the certificate is verification control to be performed by a relying party after the
issued. certificate is issued.
Conformance with a published CAA record is a necessary but not Conformance with a published CAA record is a necessary but not
sufficient condition for issuance of a certificate. Before issuing a sufficient condition for issuance of a certificate.
certificate, a PKIX CA is required to validate the request according
to the policies set out in its Certificate Policy. In the case of a
public CA that validates certificate requests as a third party, the
certificate will typically be issued under a public trust anchor
certificate embedded in one or more relevant Relying Applications.
Criteria for inclusion of embedded trust anchor certificates in Criteria for inclusion of embedded trust anchor certificates in
applications are outside the scope of this document. Typically, such applications are outside the scope of this document. Typically, such
criteria require the CA to publish a Certification Practices criteria require the CA to publish a Certification Practices
Statement (CPS) that specifies how the requirements of the Statement (CPS) that specifies how the requirements of the
Certificate Policy (CP) are achieved. It is also common for a CA to Certificate Policy (CP) are achieved. It is also common for a CA to
engage an independent third-party auditor to prepare an annual audit engage an independent third-party auditor to prepare an annual audit
statement of its performance against its CPS. statement of its performance against its CPS.
A set of CAA records describes only current grants of authority to A set of CAA records describes only current grants of authority to
issue certificates for the corresponding DNS domain. Since a issue certificates for the corresponding DNS domain name. Since
certificate is typically valid for at least a year, it is possible certificates are valid for a period of time, it is possible that a
that a certificate that is not conformant with the CAA records certificate that is not conformant with the CAA records currently
currently published was conformant with the CAA records published at published was conformant with the CAA records published at the time
the time that the certificate was issued. Relying Applications MUST that the certificate was issued. Relying parties MUST NOT use CAA
NOT use CAA records as part of certificate validation. records as part of certificate validation.
CAA records MAY be used by Certificate Evaluators as a possible CAA records MAY be used by Certificate Evaluators as a possible
indicator of a security policy violation. Such use SHOULD take indicator of a security policy violation. Such use SHOULD take
account of the possibility that published CAA records changed between account of the possibility that published CAA records changed between
the time a certificate was issued and the time at which the the time a certificate was issued and the time at which the
certificate was observed by the Certificate Evaluator. certificate was observed by the Certificate Evaluator.
2. Definitions 2. Definitions
2.1. Requirements Language 2.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC8174].
2.2. Defined Terms 2.2. Defined Terms
The following terms are used in this document: The following terms are used in this document:
Authorization Entry: An authorization assertion that grants or denies
a specific set of permissions to a specific group of entities.
Certificate: An X.509 Certificate, as specified in [RFC5280]. Certificate: An X.509 Certificate, as specified in [RFC5280].
Certificate Evaluator: A party other than a relying party that Certificate Evaluator: A party other than a Relying Party that
evaluates the trustworthiness of certificates issued by Certification evaluates the trustworthiness of certificates issued by Certification
Authorities. Authorities.
Certification Authority (CA): An issuer that issues certificates in Certification Authority (CA): An Issuer that issues certificates in
accordance with a specified Certificate Policy. accordance with a specified Certificate Policy.
Certificate Policy (CP): Specifies the criteria that a Certification Certificate Policy (CP): Specifies the criteria that a Certification
Authority undertakes to meet in its issue of certificates. See Authority undertakes to meet in its issue of certificates. See
[RFC3647]. [RFC3647].
Certification Practices Statement (CPS): Specifies the means by which Certification Practices Statement (CPS): Specifies the means by which
the criteria of the Certificate Policy are met. In most cases, this the criteria of the Certificate Policy are met. In most cases, this
will be the document against which the operations of the will be the document against which the operations of the
Certification Authority are audited. See [RFC3647]. Certification Authority are audited. See [RFC3647].
Domain: A DNS Domain Name. Domain Name: The label assigned to a node in the Domain Name System.
Domain Name: A DNS Domain Name as specified in [RFC1034].
Domain Name System (DNS): The Internet naming system specified in Domain Name System (DNS): The Internet naming system specified in
[RFC1034] and [RFC1035]. [RFC1034] and [RFC1035].
DNS Security (DNSSEC): Extensions to the DNS that provide DNS Security (DNSSEC): Extensions to the DNS that provide
authentication services as specified in [RFC4033], [RFC4034], authentication services as specified in [RFC4033], [RFC4034],
[RFC4035], [RFC5155], and revisions. [RFC4035], [RFC5155], and revisions.
Fully-Qualified Domain Name: A Domain Name that includes the labels
of all superior nodes in the Domain Name System.
Issuer: An entity that issues certificates. See [RFC5280]. Issuer: An entity that issues certificates. See [RFC5280].
Property: The tag-value portion of a CAA Resource Record. Property: The tag-value portion of a CAA Resource Record.
Property Tag: The tag portion of a CAA Resource Record. Property Tag: The tag portion of a CAA Resource Record.
Property Value: The value portion of a CAA Resource Record. Property Value: The value portion of a CAA Resource Record.
Public Key Infrastructure X.509 (PKIX): Standards and specifications
issued by the IETF that apply the X.509 certificate standards
specified by the ITU to Internet applications as specified in
[RFC5280] and related documents.
Resource Record (RR): A particular entry in the DNS including the Resource Record (RR): A particular entry in the DNS including the
owner name, class, type, time to live, and data, as defined in owner name, class, type, time to live, and data, as defined in
[RFC1034] and [RFC2181]. [RFC1034] and [RFC2181].
Resource Record Set (RRSet): A set of Resource Records of a Resource Record Set (RRSet): A set of Resource Records of a
particular owner name, class, and type. The time to live on all RRs particular owner name, class, and type. The time to live on all RRs
with an RRSet is always the same, but the data may be different among with an RRSet is always the same, but the data may be different among
RRs in the RRSet. RRs in the RRSet.
Relevant Resource Record Set (Relevant RRSet): A set of CAA Resource
Records resulting from applying the algorithm in Section 4 to a
specific Domain Name or Wildcard Domain Name.
Relying Party: A party that makes use of an application whose Relying Party: A party that makes use of an application whose
operation depends on use of a certificate for making a security operation depends on use of a certificate for making a security
decision. See [RFC5280]. decision. See [RFC5280].
Relying Application: An application whose operation depends on use of Wildcard Domain Name: A Domain Name consisting of a single asterisk
a certificate for making a security decision. character followed by a single full stop character ("*.") followed by
a Fully-Qualified Domain Name.
3. The CAA RR Type
A CAA RR consists of a flags byte and a tag-value pair referred to as
a property. Multiple properties MAY be associated with the same
domain name by publishing multiple CAA RRs at that domain name. The
following flag is defined:
Issuer Critical: If set to '1', indicates that the corresponding
property tag MUST be understood if the semantics of the CAA record
are to be correctly interpreted by an issuer.
Issuers MUST NOT issue certificates for a domain if the relevant CAA
Resource Record set contains unknown property tags that have the
Critical bit set.
The following property tags are defined:
issue <Issuer Domain Name> [; <name>=<value> ]* : The issue property
entry authorizes the holder of the domain name <Issuer Domain Name>
or a party acting under the explicit authority of the holder of that
domain name to issue certificates for the domain in which the
property is published.
issuewild <Issuer Domain Name> [; <name>=<value> ]* : The issuewild
property entry authorizes the holder of the domain name <Issuer
Domain Name> or a party acting under the explicit authority of the
holder of that domain name to issue wildcard certificates for the
domain in which the property is published.
iodef <URL> : Specifies a URL to which an issuer MAY report
certificate issue requests that are inconsistent with the issuer's
Certification Practices or Certificate Policy, or that a Certificate
Evaluator may use to report observation of a possible policy
violation. The Incident Object Description Exchange Format (IODEF)
format is used [RFC7970].
The following example is a DNS zone file (see [RFC1035]) that informs
CAs that certificates are not to be issued except by the holder of
the domain name 'ca.example.net' or an authorized agent thereof.
This policy applies to all subordinate domains under example.com.
$ORIGIN example.com.
CAA 0 issue "ca.example.net"
If the domain name holder specifies one or more iodef properties, a
certificate issuer MAY report invalid certificate requests to that
address. In the following example, the domain name holder specifies
that reports may be made by means of email with the IODEF data as an
attachment, a Web service [RFC6546], or both:
$ORIGIN example.com.
CAA 0 issue "ca.example.net"
CAA 0 iodef "mailto:security@example.com"
CAA 0 iodef "http://iodef.example.com/"
A certificate issuer MAY specify additional parameters that allow
customers to specify additional parameters governing certificate
issuance. This might be the Certificate Policy under which the
certificate is to be issued, the authentication process to be used
might be specified, or an account number specified by the CA to
enable these parameters to be retrieved.
For example, the CA 'ca.example.net' has requested its customer
'example.com' to specify the CA's account number '230123' in each of
the customer's CAA records.
$ORIGIN example.com.
CAA 0 issue "ca.example.net; account=230123"
The syntax of additional parameters is a sequence of name-value pairs
as defined in Section 5.2. The semantics of such parameters is left
to site policy and is outside the scope of this document.
The critical flag is intended to permit future versions of CAA to
introduce new semantics that MUST be understood for correct
processing of the record, preventing conforming CAs that do not
recognize the new semantics from issuing certificates for the
indicated domains.
In the following example, the property 'tbs' is flagged as critical.
Neither the example.net CA nor any other issuer is authorized to
issue under either policy unless the processing rules for the 'tbs'
property tag are understood.
$ORIGIN example.com.
CAA 0 issue "ca.example.net; policy=ev"
CAA 128 tbs "Unknown"
Note that the above restrictions only apply at certificate issue.
Since the validity of an end entity certificate is typically a year
or more, it is quite possible that the CAA records published at a
domain will change between the time a certificate was issued and
validation by a relying party.
4. Certification Authority Processing 3. Relevant Resource Record Set
Before issuing a certificate, a compliant CA MUST check for Before issuing a certificate, a compliant CA MUST check for
publication of a relevant CAA Resource Record set. If such a record publication of a Relevant RRSet. If such an RRSet exists, a CA MUST
set exists, a CA MUST NOT issue a certificate unless the CA NOT issue a certificate unless the CA determines that either (1) the
determines that either (1) the certificate request is consistent with certificate request is consistent with the applicable CAA Resource
the applicable CAA Resource Record set or (2) an exception specified Record set or (2) an exception specified in the relevant Certificate
in the relevant Certificate Policy or Certification Practices Policy or Certification Practices Statement applies. If the Relevant
Statement applies. RRSet for a Domain Name or Wildcard Domain Name contains no Property
Tags that restrict issuance (for instance, if it contains only iodef
Property Tags, or only Property Tags unrecognized by the CA), CAA
does not restrict issuance.
A certificate request MAY specify more than one domain name and MAY A certificate request MAY specify more than one Domain Name and MAY
specify wildcard domains. Issuers MUST verify authorization for all specify Wildcard Domain Names. Issuers MUST verify authorization for
the domains and wildcard domains specified in the request. all the Domain Names and Wildcard Domain Names specified in the
request.
The search for a CAA Resource Record set climbs the DNS name tree The search for a CAA RRSet climbs the DNS name tree from the
from the specified label up to but not including the DNS root '.' specified label up to but not including the DNS root '.' until a CAA
until a CAA Resource Record set is found. RRSet is found.
Given a request for a specific domain name X, or a request for a Given a request for a specific Domain Name X, or a request for a
wildcard domain name *.X, the relevant record set RelevantCAASet(X) Wildcard Domain Name *.X, the Relevant Resource Record Set
is determined as follows: RelevantCAASet(X) is determined as follows:
Let CAA(X) be the record set returned by performing a CAA record Let CAA(X) be the RRSet returned by performing a CAA record query for
query for the domain name X, according to the lookup algorithm the Domain Name X, according to the lookup algorithm specified in RFC
specified in RFC 1034 section 4.3.2 (in particular chasing aliases). 1034 section 4.3.2 (in particular chasing aliases). Let Parent(X) be
Let Parent(X) be the domain name produced by removing the leftmost the Domain Name produced by removing the leftmost label of X.
label of X.
RelevantCAASet(domain): RelevantCAASet(domain):
for domain is not ".": for domain is not ".":
if CAA(domain) is not Empty: if CAA(domain) is not Empty:
return CAA(domain) return CAA(domain)
domain = Parent(domain) domain = Parent(domain)
return Empty return Empty
For example, processing CAA for the domain name "X.Y.Z" where there For example, processing CAA for the Domain Name "X.Y.Z" where there
are no CAA records at any level in the tree RelevantCAASet would have are no CAA records at any level in the tree RelevantCAASet would have
the following steps: the following steps:
CAA("X.Y.Z.") = Empty; domain = Parent("X.Y.Z.") = "Y.Z." CAA("X.Y.Z.") = Empty; domain = Parent("X.Y.Z.") = "Y.Z."
CAA("Y.Z.") = Empty; domain = Parent("Y.Z.") = "Z." CAA("Y.Z.") = Empty; domain = Parent("Y.Z.") = "Z."
CAA("Z.") = Empty; domain = Parent("Z.") = "." CAA("Z.") = Empty; domain = Parent("Z.") = "."
return Empty return Empty
Processing CAA for the domain name "A.B.C" where there is a CAA Processing CAA for the Domain Name "A.B.C" where there is a CAA
record "issue example.com" at "B.C" would terminate early upon record "issue example.com" at "B.C" would terminate early upon
finding the CAA record: finding the CAA record:
CAA("A.B.C.") = Empty; domain = Parent("A.B.C.") = "B.C." CAA("A.B.C.") = Empty; domain = Parent("A.B.C.") = "B.C."
CAA("B.C.") = "issue example.com" CAA("B.C.") = "issue example.com"
return "issue example.com" return "issue example.com"
4.1. Use of DNS Security 4. Mechanism
Use of DNSSEC to authenticate CAA RRs is strongly RECOMMENDED but not
required. An issuer MUST NOT issue certificates if doing so would
conflict with the relevant CAA Resource Record set, irrespective of
whether the corresponding DNS records are signed.
DNSSEC provides a proof of non-existence for both DNS domains and RR
set within domains. DNSSEC verification thus enables an issuer to
determine if the answer to a CAA record query is empty because the RR
set is empty or if it is non-empty but the response has been
suppressed.
Use of DNSSEC allows an issuer to acquire and archive a proof that
they were authorized to issue certificates for the domain.
Verification of such archives MAY be an audit requirement to verify
CAA record processing compliance. Publication of such archives MAY
be a transparency requirement to verify CAA record processing
compliance.
5. Mechanism
5.1. Syntax
A CAA RR contains a single property entry consisting of a tag-value 4.1. Syntax
pair. Each tag represents a property of the CAA record. The value
of a CAA property is that specified in the corresponding value field.
A domain name MAY have multiple CAA RRs associated with it and a A CAA Resource Record contains a single Property consisting of a tag-
given property MAY be specified more than once. value pair. A Domain Name MAY have multiple CAA RRs associated with
it and a given Property Tag MAY be specified more than once across
those RRs.
The CAA data field contains one property entry. A property entry The RDATA section for a CAA Resource Record contains one Property. A
consists of the following data fields: Property consists of the following:
+0-1-2-3-4-5-6-7-|0-1-2-3-4-5-6-7-| +0-1-2-3-4-5-6-7-|0-1-2-3-4-5-6-7-|
| Flags | Tag Length = n | | Flags | Tag Length = n |
+----------------|----------------+...+---------------+ +----------------|----------------+...+---------------+
| Tag char 0 | Tag char 1 |...| Tag char n-1 | | Tag char 0 | Tag char 1 |...| Tag char n-1 |
+----------------|----------------+...+---------------+ +----------------|----------------+...+---------------+
+----------------|----------------+.....+----------------+ +----------------|----------------+.....+----------------+
| Value byte 0 | Value byte 1 |.....| Value byte m-1 | | Value byte 0 | Value byte 1 |.....| Value byte m-1 |
+----------------|----------------+.....+----------------+ +----------------|----------------+.....+----------------+
Where n is the length specified in the Tag length field and m is the Where n is the length specified in the Tag length field and m is the
remaining octets in the Value field (m = d - n - 2) where d is the remaining octets in the Value field. They are related by (m = d - n
length of the RDATA section. - 2) where d is the length of the RDATA section.
The data fields are defined as follows: The fields are defined as follows:
Flags: One octet containing the following field: Flags: One octet containing the following field:
Bit 0, Issuer Critical Flag: If the value is set to '1', the critical Bit 0, Issuer Critical Flag: If the value is set to '1', the Property
flag is asserted and the property MUST be understood if the CAA is critical. A Certification Authority MUST NOT issue certificates
record is to be correctly processed by a certificate issuer. for any Domain Name where the Relevant RRSet for that Domain Name
contains a CAA critical Property for an unknown or unsupported
A Certification Authority MUST NOT issue certificates for any Domain Property Tag.
that contains a CAA critical property for an unknown or unsupported
property tag that for which the issuer critical flag is set.
Note that according to the conventions set out in [RFC1035], bit 0 is Note that according to the conventions set out in [RFC1035], bit 0 is
the Most Significant Bit and bit 7 is the Least Significant Bit. the Most Significant Bit and bit 7 is the Least Significant Bit.
Thus, the Flags value 1 means that bit 7 is set while a value of 128 Thus, the Flags value 1 means that bit 7 is set while a value of 128
means that bit 0 is set according to this convention. means that bit 0 is set according to this convention.
All other bit positions are reserved for future use. All other bit positions are reserved for future use.
To ensure compatibility with future extensions to CAA, DNS records To ensure compatibility with future extensions to CAA, DNS records
compliant with this version of the CAA specification MUST clear (set compliant with this version of the CAA specification MUST clear (set
to "0") all reserved flags bits. Applications that interpret CAA to "0") all reserved flags bits. Applications that interpret CAA
records MUST ignore the value of all reserved flag bits. records MUST ignore the value of all reserved flag bits.
Tag Length: A single octet containing an unsigned integer specifying Tag Length: A single octet containing an unsigned integer specifying
the tag length in octets. The tag length MUST be at least 1 and the tag length in octets. The tag length MUST be at least 1 and
SHOULD be no more than 15. SHOULD be no more than 15.
Tag: The property identifier, a sequence of US-ASCII characters. Tag: The Property identifier, a sequence of US-ASCII characters.
Tag values MAY contain US-ASCII characters 'a' through 'z', 'A' Tags MAY contain US-ASCII characters 'a' through 'z', 'A' through
through 'Z', and the numbers 0 through 9. Tag values SHOULD NOT 'Z', and the numbers 0 through 9. Tags SHOULD NOT contain any other
contain any other characters. Matching of tag values is case characters. Matching of tags is case insensitive.
insensitive.
Tag values submitted for registration by IANA MUST NOT contain any Tags submitted for registration by IANA MUST NOT contain any
characters other than the (lowercase) US-ASCII characters 'a' through characters other than the (lowercase) US-ASCII characters 'a' through
'z' and the numbers 0 through 9. 'z' and the numbers 0 through 9.
Value: A sequence of octets representing the property value. Value: A sequence of octets representing the Property Value.
Property values are encoded as binary values and MAY employ sub- Property Values are encoded as binary values and MAY employ sub-
formats. formats.
The length of the value field is specified implicitly as the The length of the value field is specified implicitly as the
remaining length of the enclosing Resource Record data field. remaining length of the enclosing RDATA section.
5.1.1. Canonical Presentation Format 4.1.1. Canonical Presentation Format
The canonical presentation format of the CAA record is: The canonical presentation format of the CAA record is:
CAA <flags> <tag> <value> CAA <flags> <tag> <value>
Where: Where:
Flags: Is an unsigned integer between 0 and 255. Flags: Is an unsigned integer between 0 and 255.
Tag: Is a non-zero sequence of US-ASCII letters and numbers in lower Tag: Is a non-zero sequence of US-ASCII letters and numbers in lower
case. case.
Value: The value field, expressed as a contiguous set of characters Value: The value field, expressed as a contiguous set of characters
without interior spaces, or as a quoted string. See the the without interior spaces, or as a quoted string. See the the
<character-string> format specified in [RFC1035], Section 5.1, but <character-string> format specified in [RFC1035], Section 5.1, but
skipping to change at page 11, line 5 skipping to change at page 8, line 17
Tag: Is a non-zero sequence of US-ASCII letters and numbers in lower Tag: Is a non-zero sequence of US-ASCII letters and numbers in lower
case. case.
Value: The value field, expressed as a contiguous set of characters Value: The value field, expressed as a contiguous set of characters
without interior spaces, or as a quoted string. See the the without interior spaces, or as a quoted string. See the the
<character-string> format specified in [RFC1035], Section 5.1, but <character-string> format specified in [RFC1035], Section 5.1, but
note that the value field contains no length byte and is not limited note that the value field contains no length byte and is not limited
to 255 characters. to 255 characters.
5.2. CAA issue Property 4.2. CAA issue Property
The issue property tag is used to request that certificate issuers If the issue Property Tag is present in the Relevant RRSet for a
perform CAA issue restriction processing for the domain and to grant Domain Name, it is a request that Issuers
authorization to specific certificate issuers.
The CAA issue property value has the following sub-syntax (specified 1. Perform CAA issue restriction processing for the Domain Name, and
2. Grant authorization to issue certificates containing that Domain
Name to the holder of the issuer-domain-name or a party acting
under the explicit authority of the holder of the issuer-domain-
name.
The CAA issue Property Value has the following sub-syntax (specified
in ABNF as per [RFC5234]). in ABNF as per [RFC5234]).
issuevalue = *WSP [domain *WSP] [";" *WSP [parameters *WSP]] issue-value = *WSP [issuer-domain-name *WSP] [";" *WSP [parameters *WSP]]
domain = label *("." label) issuer-domain-name = label *("." label)
label = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT)) label = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT))
parameters = (parameter *WSP ";" *WSP parameters) / parameter parameters = (parameter *WSP ";" *WSP parameters) / parameter
parameter = tag *WSP "=" *WSP value parameter = tag *WSP "=" *WSP value
tag = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT)) tag = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT))
value = *(%x21-3A / %x3C-7E) value = *(%x21-3A / %x3C-7E)
For consistency with other aspects of DNS administration, domain name For consistency with other aspects of DNS administration, Domain Name
values are specified in letter-digit-hyphen Label (LDH-Label) form. values are specified in letter-digit-hyphen Label (LDH-Label) form.
A CAA record with an issue parameter tag that does not specify a The following CAA record set requests that no certificates be issued
domain name is a request that certificate issuers perform CAA issue for the Domain Name 'certs.example.com' by any Issuer other than
restriction processing for the corresponding domain without granting ca1.example.net or ca2.example.org.
authorization to any certificate issuer.
This form of issue restriction would be appropriate to specify that certs.example.com CAA 0 issue "ca1.example.net"
no certificates are to be issued for the domain in question. certs.example.com CAA 0 issue "ca2.example.org"
Because the presence of an issue Property Tag in the Relevant RRSet
for a Domain Name restricts issuance, Domain Name owners can use an
issue Property Tag with no issuer-domain-name to request no issuance.
For example, the following CAA resource record set requests that no For example, the following RRSet requests that no certificates be
certificates be issued for the domain 'nocerts.example.com' by any issued for the Domain Name 'nocerts.example.com' by any Issuer.
certificate issuer.
nocerts.example.com CAA 0 issue ";" nocerts.example.com CAA 0 issue ";"
A CAA record with an issue parameter tag that specifies a domain name An issue Property Tag where the issue-value does not match the ABNF
is a request that certificate issuers perform CAA issue restriction grammar MUST be treated the same as one specifying an empty issuer-
processing for the corresponding domain and grants authorization to domain-name. For example, the following malformed CAA RRSet forbids
the certificate issuer specified by the domain name. issuance:
For example, the following CAA record set requests that no malformed.example.com CAA 0 issue "%%%%%"
certificates be issued for the domain 'certs.example.com' by any
certificate issuer other than the example.net certificate issuer.
certs.example.com CAA 0 issue "example.net"
CAA authorizations are additive; thus, the result of specifying both CAA authorizations are additive; thus, the result of specifying both
the empty issuer and a specified issuer is the same as specifying an empty issuer-domain-name and a non-empty issuer-domain-name is the
just the specified issuer alone. same as specifying just the non-empty issuer-domain-name.
An issue property tag where the issuevalue does not match the ABNF
grammar MUST be treated the same as one specifying the empty issuer.
For example, the following malformed CAA resource record set forbids
issuance:
malformed.example.com CAA 0 issue "%%%%%" An Issuer MAY choose to specify parameters that further constrain the
issue of certificates by that Issuer, for example, specifying that
certificates are to be subject to specific validation polices, billed
to certain accounts, or issued under specific trust anchors.
A non-empty CAA record set that contains no issue property tags is For example, if ca1.example.net has requested its customer
authorization to any certificate issuer to issue for the accountable.example.com to specify their account number "230123" in
corresponding domain, provided that it is a non-wildcard domain, and each of the customer's CAA records using the (CA-defined) "account"
no records in the CAA record set otherwise prohibit issuance. parameter, it would look like this:
An issuer MAY choose to specify issuer-parameters that further accountable.example.com CAA 0 issue "ca1.example.net; account=230123"
constrain the issue of certificates by that issuer, for example,
specifying that certificates are to be subject to specific validation
polices, billed to certain accounts, or issued under specific trust
anchors.
The semantics of issuer-parameters are determined by the issuer The semantics of parameters to the issue Property Tag are determined
alone. by the Issuer alone.
5.3. CAA issuewild Property 4.3. CAA issuewild Property
The issuewild property has the same syntax and semantics as the issue The issuewild Property Tag has the same syntax and semantics as the
property except that issuewild properties only grant authorization to issue Property Tag except that it only grants authorization to issue
issue certificates that specify a wildcard domain and issuewild certificates that specify a Wildcard Domain Name and issuewild
properties take precedence over issue properties when specified. properties take precedence over issue properties when specified.
Specifically: Specifically:
issuewild properties MUST be ignored when processing a request for a issuewild properties MUST be ignored when processing a request for a
domain that is not a wildcard domain. Domain Name (that is, not a Wildcard Domain Name).
If at least one issuewild property is specified in the relevant CAA If at least one issuewild Property is specified in the Relevant RRSet
record set, all issue properties MUST be ignored when processing a for a Wildcard Domain Name, all issue properties MUST be ignored when
request for a domain that is a wildcard domain. processing a request for that Wildcard Domain Name.
A non-empty CAA record set that contains no issue or issuewild For example, the following RRSet requests that _only_ ca1.example.net
property tags is authorization to any certificate issuer to issue for issue certificates for "wild.example.com" or "sub.wild.example.com",
the corresponding wildcard domain, provided that no records in the and that _only_ ca2.example.org issue certificates for
CAA record set otherwise prohibit issuance. "*.wild.example.com" or "*.sub.wild.example.com).
5.4. CAA iodef Property wild.example.com CAA 0 issue "ca1.example.net"
wild.example.com CAA 0 issuewild "ca2.example.org"
The iodef property specifies a means of reporting certificate issue The following RRSet requests that _only_ ca1.example.net issue
requests or cases of certificate issue for the corresponding domain certificates for "wild2.example.com", "*.wild2.example.com" or
that violate the security policy of the issuer or the domain name "*.sub.wild2.example.com".
holder.
wild2.example.com CAA 0 issue "ca1.example.net"
The following RRSet requests that _only_ ca2.example.org issue
certificates for "*.wild3.example.com" or "*.sub.wild3.example.com".
It does not permit any Issuer to issue for "wild3.example.com" or
"sub.wild3.example.com".
wild3.example.com CAA 0 issuewild "ca2.example.org"
wild3.example.com CAA 0 issue ";"
The following RRSet requests that _only_ ca2.example.org issue
certificates for "*.wild3.example.com" or "*.sub.wild3.example.com".
It permits any Issuer to issue for "wild3.example.com" or
"sub.wild3.example.com".
wild3.example.com CAA 0 issuewild "ca2.example.org"
4.4. CAA iodef Property
The iodef Property specifies a means of reporting certificate issue
requests or cases of certificate issue for domains for which the
Property appears in the Relevant RRSet, when those requests or
issuances violate the security policy of the Issuer or the Domain
Name holder.
The Incident Object Description Exchange Format (IODEF) [RFC7970] is The Incident Object Description Exchange Format (IODEF) [RFC7970] is
used to present the incident report in machine-readable form. used to present the incident report in machine-readable form.
The iodef property takes a URL as its parameter. The URL scheme type The iodef Property Tag takes a URL as its Property Value. The URL
determines the method used for reporting: scheme type determines the method used for reporting:
mailto: The IODEF incident report is reported as a MIME email mailto: The IODEF incident report is reported as a MIME email
attachment to an SMTP email that is submitted to the mail address attachment to an SMTP email that is submitted to the mail address
specified. The mail message sent SHOULD contain a brief text message specified. The mail message sent SHOULD contain a brief text message
to alert the recipient to the nature of the attachment. to alert the recipient to the nature of the attachment.
http or https: The IODEF report is submitted as a Web service request http or https: The IODEF report is submitted as a Web service request
to the HTTP address specified using the protocol specified in to the HTTP address specified using the protocol specified in
[RFC6546]. [RFC6546].
6. Security Considerations The following RRSet specifies that reports may be made by means of
email with the IODEF data as an attachment, a Web service [RFC6546],
or both:
CAA records assert a security policy that the holder of a domain name report.example.com CAA 0 issue "ca1.example.net"
wishes to be observed by certificate issuers. The effectiveness of report.example.com CAA 0 iodef "mailto:security@example.com"
CAA records as an access control mechanism is thus dependent on report.example.com CAA 0 iodef "http://iodef.example.com/"
observance of CAA constraints by issuers.
4.5. Critical Flag
The critical flag is intended to permit future versions of CAA to
introduce new semantics that MUST be understood for correct
processing of the record, preventing conforming CAs that do not
recognize the new semantics from issuing certificates for the
indicated Domain Names.
In the following example, the Property with a Property Tag of 'tbs'
is flagged as critical. Neither the ca1.example.net CA nor any other
Issuer is authorized to issue for "new.example.com" (or any other
domains for which this is the Relevant RRSet) unless the Issuer has
implemented the processing rules for the 'tbs' Property Tag.
new.example.com CAA 0 issue "ca1.example.net"
new.example.com CAA 128 tbs "Unknown"
5. Security Considerations
CAA records assert a security policy that the holder of a Domain Name
wishes to be observed by Issuers. The effectiveness of CAA records
as an access control mechanism is thus dependent on observance of CAA
constraints by Issuers.
The objective of the CAA record properties described in this document The objective of the CAA record properties described in this document
is to reduce the risk of certificate mis-issue rather than avoid is to reduce the risk of certificate mis-issue rather than avoid
reliance on a certificate that has been mis-issued. DANE [RFC6698] reliance on a certificate that has been mis-issued. DANE [RFC6698]
describes a mechanism for avoiding reliance on mis-issued describes a mechanism for avoiding reliance on mis-issued
certificates. certificates.
6.1. Non-Compliance by Certification Authority 5.1. Use of DNS Security
Use of DNSSEC to authenticate CAA RRs is strongly RECOMMENDED but not
required. An Issuer MUST NOT issue certificates if doing so would
conflict with the Relevant RRSet, irrespective of whether the
corresponding DNS records are signed.
DNSSEC provides a proof of non-existence for both DNS Domain Names
and RRSets within Domain Names. DNSSEC verification thus enables an
Issuer to determine if the answer to a CAA record query is empty
because the RRSet is empty or if it is non-empty but the response has
been suppressed.
Use of DNSSEC allows an Issuer to acquire and archive a proof that
they were authorized to issue certificates for the Domain Name.
Verification of such archives MAY be an audit requirement to verify
CAA record processing compliance. Publication of such archives MAY
be a transparency requirement to verify CAA record processing
compliance.
5.2. Non-Compliance by Certification Authority
CAA records offer CAs a cost-effective means of mitigating the risk CAA records offer CAs a cost-effective means of mitigating the risk
of certificate mis-issue: the cost of implementing CAA checks is very of certificate mis-issue: the cost of implementing CAA checks is very
small and the potential costs of a mis-issue event include the small and the potential costs of a mis-issue event include the
removal of an embedded trust anchor. removal of an embedded trust anchor.
6.2. Mis-Issue by Authorized Certification Authority 5.3. Mis-Issue by Authorized Certification Authority
Use of CAA records does not prevent mis-issue by an authorized Use of CAA records does not prevent mis-issue by an authorized
Certification Authority, i.e., a CA that is authorized to issue Certification Authority, i.e., a CA that is authorized to issue
certificates for the domain in question by CAA records. certificates for the Domain Name in question by CAA records.
Domain name holders SHOULD verify that the CAs they authorize to Domain Name holders SHOULD verify that the CAs they authorize to
issue certificates for their domains employ appropriate controls to issue certificates for their Domain Names employ appropriate controls
ensure that certificates are issued only to authorized parties within to ensure that certificates are issued only to authorized parties
their organization. within their organization.
Such controls are most appropriately determined by the domain name Such controls are most appropriately determined by the Domain Name
holder and the authorized CA(s) directly and are thus out of scope of holder and the authorized CA(s) directly and are thus out of scope of
this document. this document.
6.3. Suppression or Spoofing of CAA Records 5.4. Suppression or Spoofing of CAA Records
Suppression of the CAA record or insertion of a bogus CAA record Suppression of the CAA record or insertion of a bogus CAA record
could enable an attacker to obtain a certificate from an issuer that could enable an attacker to obtain a certificate from an Issuer that
was not authorized to issue for that domain name. was not authorized to issue for that Domain Name.
Where possible, issuers SHOULD perform DNSSEC validation to detect Where possible, Issuers SHOULD perform DNSSEC validation to detect
missing or modified CAA record sets. missing or modified CAA record sets.
In cases where DNSSEC is not deployed in a corresponding domain, an In cases where DNSSEC is not deployed for a corresponding Domain
issuer SHOULD attempt to mitigate this risk by employing appropriate Name, an Issuer SHOULD attempt to mitigate this risk by employing
DNS security controls. For example, all portions of the DNS lookup appropriate DNS security controls. For example, all portions of the
process SHOULD be performed against the authoritative name server. DNS lookup process SHOULD be performed against the authoritative name
Data cached by third parties MUST NOT be relied on but MAY be used to server. Data cached by third parties MUST NOT be relied on but MAY
support additional anti-spoofing or anti-suppression controls. be used to support additional anti-spoofing or anti-suppression
controls.
6.4. Denial of Service 5.5. Denial of Service
Introduction of a malformed or malicious CAA RR could in theory Introduction of a malformed or malicious CAA RR could in theory
enable a Denial-of-Service (DoS) attack. enable a Denial-of-Service (DoS) attack.
This specific threat is not considered to add significantly to the This specific threat is not considered to add significantly to the
risk of running an insecure DNS service. risk of running an insecure DNS service.
An attacker could, in principle, perform a DoS attack against an An attacker could, in principle, perform a DoS attack against an
issuer by requesting a certificate with a maliciously long DNS name. Issuer by requesting a certificate with a maliciously long DNS name.
In practice, the DNS protocol imposes a maximum name length and CAA In practice, the DNS protocol imposes a maximum name length and CAA
processing does not exacerbate the existing need to mitigate DoS processing does not exacerbate the existing need to mitigate DoS
attacks to any meaningful degree. attacks to any meaningful degree.
6.5. Abuse of the Critical Flag 5.6. Abuse of the Critical Flag
A Certification Authority could make use of the critical flag to A Certification Authority could make use of the critical flag to
trick customers into publishing records that prevent competing trick customers into publishing records that prevent competing
Certification Authorities from issuing certificates even though the Certification Authorities from issuing certificates even though the
customer intends to authorize multiple providers. customer intends to authorize multiple providers.
In practice, such an attack would be of minimal effect since any In practice, such an attack would be of minimal effect since any
competent competitor that found itself unable to issue certificates competent competitor that found itself unable to issue certificates
due to lack of support for a property marked critical SHOULD due to lack of support for a Property marked critical SHOULD
investigate the cause and report the reason to the customer. The investigate the cause and report the reason to the customer. The
customer will thus discover that they had been deceived. customer will thus discover that they had been deceived.
7. Deployment Considerations 6. Deployment Considerations
7.1. Blocked Queries or Responses A CA implementing CAA may find that they receive errors looking up
CAA records. The following are some common causes of such errors, so
that CAs may provide guidance to their subscribers on fixing the
underlying problems.
6.1. Blocked Queries or Responses
Some middleboxes, in particular anti-DDoS appliances, may be Some middleboxes, in particular anti-DDoS appliances, may be
configured to drop DNS packets of unknown types, or may start configured to drop DNS packets of unknown types, or may start
dropping such packets when they consider themselves under attack. dropping such packets when they consider themselves under attack.
This generally manifests as a timed-out DNS query, or a SERVFAIL at a This generally manifests as a timed-out DNS query, or a SERVFAIL at a
local recursive resolver. local recursive resolver.
For deployability of CAA and future DNS record types, middleboxes 6.2. Rejected Queries and Malformed Responses
SHOULD block DNS packets by volume and size rather than by query
type.
7.2. Rejected Queries and Malformed Responses
Some authoritative nameservers respond with REJECTED or NOTIMP when Some authoritative nameservers respond with REJECTED or NOTIMP when
queried for a resource record type they do not recognize. At least queried for a Resource Record type they do not recognize. At least
one authoritative resolver produces a malformed response (with the QR one authoritative resolver produces a malformed response (with the QR
bit set to 0) when queried for unknown resource record types. Per bit set to 0) when queried for unknown Resource Record types. Per
RFC 1034, the correct response for unknown resource record types is RFC 1034, the correct response for unknown Resource Record types is
NOERROR. NOERROR.
7.3. Delegation to Private Nameservers 6.3. Delegation to Private Nameservers
Some domain administrators make the contents of a subdomain Some Domain Name administrators make the contents of a subdomain
unresolvable on the public internet by delegating that subdomain to a unresolvable on the public Internet by delegating that subdomain to a
nameserver whose IP address is private. A CA processing CAA records nameserver whose IP address is private. A CA processing CAA records
for such subdomains will receive SERVFAIL from its recursive for such subdomains will receive SERVFAIL from its recursive
resolver. The CA MAY interpret that as preventing issuance. Domain resolver. The CA MAY interpret that as preventing issuance. Domain
administrators wishing to issue certificates for private domains Name administrators wishing to issue certificates for private Domain
SHOULD use split-horizon DNS with a publicly available nameserver, so Names SHOULD use split-horizon DNS with a publicly available
that CAs can receive a valid, empty CAA response for those domains. nameserver, so that CAs can receive a valid, empty CAA response for
those Domain Names.
7.4. Bogus DNSSEC Responses 6.4. Bogus DNSSEC Responses
Queries for CAA resource records are different from most DNS RR Queries for CAA Resource Records are different from most DNS RR
types, because a signed, empty response to a query for CAA RRs is types, because a signed, empty response to a query for CAA RRs is
meaningfully different from a bogus response. A signed, empty meaningfully different from a bogus response. A signed, empty
response indicates that there is definitely no CAA policy set at a response indicates that there is definitely no CAA policy set at a
given label. A bogus response may mean either a misconfigured zone, given label. A bogus response may mean either a misconfigured zone,
or an attacker tampering with records. DNSSEC implementations may or an attacker tampering with records. DNSSEC implementations may
have bugs with signatures on empty responses that go unnoticed, have bugs with signatures on empty responses that go unnoticed,
because for more common resource record types like A and AAAA, the because for more common Resource Record types like A and AAAA, the
difference to an end user between empty and bogus is irrelevant; they difference to an end user between empty and bogus is irrelevant; they
both mean a site is unavailable. both mean a site is unavailable.
In particular, at least two authoritative resolvers that implement In particular, at least two authoritative resolvers that implement
live signing had bugs when returning empty resource record sets for live signing had bugs when returning empty Resource Record sets for
DNSSEC-signed zones, in combination with mixed-case queries. Mixed- DNSSEC-signed zones, in combination with mixed-case queries. Mixed-
case queries, also known as DNS 0x20, are used by some recursive case queries, also known as DNS 0x20, are used by some recursive
resolvers to increase resilience against DNS poisoning attacks. resolvers to increase resilience against DNS poisoning attacks.
DNSSEC-signing authoritative resolvers are expected to copy the same DNSSEC-signing authoritative resolvers are expected to copy the same
capitalization from the query into their ANSWER section, but sign the capitalization from the query into their ANSWER section, but sign the
response as if they had use all lowercase. In particular, PowerDNS response as if they had use all lowercase. In particular, PowerDNS
versions prior to 4.0.4 had this bug. versions prior to 4.0.4 had this bug.
8. Differences versus RFC6844 7. Differences versus RFC6844
This document obsoletes RFC6844. The most important change is to the This document obsoletes RFC6844. The most important change is to the
Certification Authority Processing section. RFC6844 specified an Certification Authority Processing section. RFC6844 specified an
algorithm that performed DNS tree-climbing not only on the domain algorithm that performed DNS tree-climbing not only on the Domain
name being processed, but also on all CNAMEs and DNAMEs encountered Name being processed, but also on all CNAMEs and DNAMEs encountered
along the way. This made the processing algorithm very inefficient along the way. This made the processing algorithm very inefficient
when used on domains that utilize many CNAMEs, and would have made it when used on Domain Names that utilize many CNAMEs, and would have
difficult for hosting providers to set CAA policies on their own made it difficult for hosting providers to set CAA policies on their
domains without setting potentially unwanted CAA policies on their own Domain Names without setting potentially unwanted CAA policies on
customers' domains. This document specifies a simplified processing their customers' Domain Names. This document specifies a simplified
algorithm that only performs tree climbing on the domain being processing algorithm that only performs tree climbing on the Domain
processed, and leaves processing of CNAMEs and DNAMEs up to the CA's Name being processed, and leaves processing of CNAMEs and DNAMEs up
recursive resolver. to the CA's recursive resolver.
This document also includes a "Deployment Considerations" section This document also includes a "Deployment Considerations" section
detailing experience gained with practical deployment of CAA detailing experience gained with practical deployment of CAA
enforcement among CAs in the WebPKI. enforcement among CAs in the WebPKI.
This document clarifies the ABNF grammar for issue and issuewild tags This document clarifies the ABNF grammar for issue and issuewild tags
and resolves some inconsistencies with the document text. In and resolves some inconsistencies with the document text. In
particular, it specifies that parameters are separated with hyphens. particular, it specifies that parameters are separated with
It also allows hyphens in property names. semicolons. It also allows hyphens in Property Tags.
This document also clarifies processing of a CAA RRset that is not This document also clarifies processing of a CAA RRset that is not
empty, but contains no issue or issuewild tags. empty, but contains no issue or issuewild tags.
9. IANA Considerations This document removes the section titled "The CAA RR Type," merging
it with "Mechanism" because the definitions were mainly duplicates.
It moves the "Use of DNS Security" section into Security
Considerations. It renames "Certification Authority Processing" to
"Relevant Resource Record Set," and emphasizes the use of that term
to more clearly define which domains are affected by a given RRset.
8. IANA Considerations
IANA is requested to add [[[ RFC Editor: Please replace with this RFC IANA is requested to add [[[ RFC Editor: Please replace with this RFC
]]] as a reference for the Certification Authority Restriction Flags ]]] as a reference for the Certification Authority Restriction Flags
and Certification Authority Restriction Properties registries. and Certification Authority Restriction Properties registries.
10. Acknowledgements 9. Acknowledgements
The authors would like to thank the following people who contributed The authors would like to thank the following people who contributed
to the design and documentation of this work item: Tim Hollebeek, to the design and documentation of this work item: Corey Bonnell,
Corey Bonnell, Chris Evans, Stephen Farrell, Jeff Hodges, Paul Chris Evans, Stephen Farrell, Jeff Hodges, Paul Hoffman, Tim
Hoffman, Stephen Kent, Adam Langley, Ben Laurie, James Manager, Chris Hollebeek, Stephen Kent, Adam Langley, Ben Laurie, James Manger,
Palmer, Scott Schmit, Sean Turner, and Ben Wilson. Chris Palmer, Scott Schmit, Sean Turner, and Ben Wilson.
11. References 10. References
11.1. Normative References 10.1. Normative References
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<https://www.rfc-editor.org/info/rfc1034>. <https://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <https://www.rfc-editor.org/info/rfc1035>. November 1987, <https://www.rfc-editor.org/info/rfc1035>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997, Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997,
<https://www.rfc-editor.org/info/rfc2181>. <https://www.rfc-editor.org/info/rfc2181>.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements", Rose, "DNS Security Introduction and Requirements",
RFC 4033, DOI 10.17487/RFC4033, March 2005, RFC 4033, DOI 10.17487/RFC4033, March 2005,
<https://www.rfc-editor.org/info/rfc4033>. <https://www.rfc-editor.org/info/rfc4033>.
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
skipping to change at page 18, line 30 skipping to change at page 17, line 25
[RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication
of Named Entities (DANE) Transport Layer Security (TLS) of Named Entities (DANE) Transport Layer Security (TLS)
Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August
2012, <https://www.rfc-editor.org/info/rfc6698>. 2012, <https://www.rfc-editor.org/info/rfc6698>.
[RFC7970] Danyliw, R., "The Incident Object Description Exchange [RFC7970] Danyliw, R., "The Incident Object Description Exchange
Format Version 2", RFC 7970, DOI 10.17487/RFC7970, Format Version 2", RFC 7970, DOI 10.17487/RFC7970,
November 2016, <https://www.rfc-editor.org/info/rfc7970>. November 2016, <https://www.rfc-editor.org/info/rfc7970>.
11.2. Informative References [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
10.2. Informative References
[RFC3647] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S. [RFC3647] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S.
Wu, "Internet X.509 Public Key Infrastructure Certificate Wu, "Internet X.509 Public Key Infrastructure Certificate
Policy and Certification Practices Framework", RFC 3647, Policy and Certification Practices Framework", RFC 3647,
DOI 10.17487/RFC3647, November 2003, DOI 10.17487/RFC3647, November 2003,
<https://www.rfc-editor.org/info/rfc3647>. <https://www.rfc-editor.org/info/rfc3647>.
Authors' Addresses Authors' Addresses
Phillip Hallam-Baker Phillip Hallam-Baker
Comodo Group, Inc
Email: philliph@comodo.com Email: phill@hallambaker.com
Rob Stradling Rob Stradling
Sectigo Ltd. Sectigo Ltd.
Email: rob@sectigo.com Email: rob@sectigo.com
Jacob Hoffman-Andrews Jacob Hoffman-Andrews
Let's Encrypt Let's Encrypt
Email: jsha@letsencrypt.org Email: jsha@letsencrypt.org
 End of changes. 112 change blocks. 
386 lines changed or deleted 339 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/