Internet Engineering Task Force | P. M. Hallam-Baker |
Internet-Draft | Comodo Group Inc. |
Intended status: Standards Track | R. N. Stradling |
Expires: April 06, 2013 | Comodo CA Ltd. |
October 5, 2012 |
DNS Certification Authority Authorization (CAA) Resource Record
draft-ietf-pkix-caa-14
The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify one or more Certification Authorities (CAs) authorized to issue certificates for that domain. CAA resource records allow a public Certification Authority to implement additional controls to reduce the risk of unintended certificate mis-issue. This document defines the syntax of the CAA record and rules for processing CAA records by certificate issuers.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http:/⁠/⁠datatracker.ietf.org/⁠drafts/⁠current/⁠.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 06, 2013.
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http:/⁠/⁠trustee.ietf.org/⁠license-⁠info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify the Certification Authorities authorized to issue certificates for that domain. Publication of CAA resource records allow a public Certification Authority (CA) to implement additional controls to reduce the risk of unintended certificate mis-issue.
Like the TLSA record defined in DNS-Based Authentication of Named Entities (DANE) [DANE], CAA records are used as a part of a mechanism for checking PKIX certificate data. The distinction between the two specifications is that CAA records specify a authorization control to be performed by a certificate issuer before issue of a certificate and TLSA records specify a verification control to be performed by a Relying Party after the certificate is issued.
Conformance with a published CAA record is a necessary but not sufficient condition for issueance of a certificate. Before issuing a 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 be typically issued under a public trust anchor certificate embedded in one or more relevant Relying Applications.
Criteria for inclusion of embedded trust anchor certificates in applications are outside the scope of this document. Typically such criteria require the CA to publish a Certificate Practices Statement (CPS) that specifies how the requirements of the Certificate Policy (CP) are achieved. It is also common for a CA to engage an independent third party auditor to prepare an annual audit statement of its performance against its CPS.
A set of CAA records describes only current grants of authority to issue certificates for the corresponding DNS domain. Since a certificate is typically valid for at least a year, it is possible that a certificate that is not conformant with the CAA records currently published was conformant with the CAA records published at the time that the certificate was issued. Relying Applications MUST NOT use CAA records as part of certificate validation.
CAA Records MAY be used by Certificate Evaluators as a possible indicator of a security policy violation. Such use SHOULD take account of the possibility that published CAA records changed between the time a certificate was issued and the time at which the certificate was observed by the Certificate Evaluator.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
The following terms are used in this document:
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:
The following property tags are defined:
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 tag-value pairs as defined in section 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 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 to issue of certificates. 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.
Before issuing a certificate, a compliant CA MUST check for publication of an relevant CAA Resource Record set. If such a record set exists, a CA MUST NOT issue a certificate unless the CA determines that either (1) the certificate request is consistent with the applicable CAA Resource Record set or (2) that an exception specified in the relevant Certificate Policy or Certification Practices Statement Applies.
A certificate request MAY specify more than one domain name and MAY specify wildcard domains. Issuers MUST verify authorization for all the domains and wildcard domains specified in the request.
The search for a CAA record climbs the DNS name tree from the specified label up to but not including the DNS root '.'.
Given a request for a specific domain X, or a request for a wildcard domain *.X, the relevant record set R(X) is determined as follows:
Let CAA(X) be the record set returned in response to performing a CAA record query on the label X, P(X) be the DNS label immediately above X in the DNS hierarchy and A(X) be the target of a CNAME or DNAME alias record specified at the label X.
For example, if a certificate is requested for X.Y.Z the issuer will search for the relevant CAA record set in the following order:
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 supressed.
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.
A CAA RR contains a single property entry consisting of a tag value 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 given property MAY be specified more than once.
The CAA data field contains one property entry. A property entry consists of the following data fields:
+0-1-2-3-4-5-6-7-|0-1-2-3-4-5-6-7-| | Flags | Tag Length = n | +----------------+----------------+...+---------------+ | Tag char 0 | Tag Char 1 |...| Tag Char n-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 remaining octets in the Value field (m = d - n - 2) where d is the length of the RDATA section.
The data fields are defined as follows:
The canonical presentation format of the CAA record is as follows:
CAA <flags> <tag> <value>
Where:
The issue property tag is used to request that certificate issuers perform CAA issue restriction processing for the domain and to grant authorization to specific certificate issuers.
The CAA issue property value has the following sub-syntax (specified in ABNF as per [RFC5234]).
Property = space [domain] space [";" space * (parameter space) domain = label *("." label) label = (ALPHA / DIGIT) * ( ["-"] (ALPHA / DIGIT )) space = *(SP / HTAB) parameter = / space tag "=" value tag = 1* (ALPHA / DIGIT) value = *VCHAR | DQUOTE *(%x20-21 / %x23-7E) DQUOTE
For consistency with other aspects of DNS administration, Domain name values are specified in Letter-Digit-Hyphen Label (LDH-Label) form.
A CAA record with an issue parameter tag that does not specify a domain name is a request that certificate issuers perform CAA issue restriction processing for the corresponding domain without granting authorization to any certificate issuer.
This form of issue restriction would be appropriate to specify that no certificates are to be issued for the domain in question.
For example, the following CAA record set requests that no certificates be issued for the domain 'nocerts.example.com' by any certificate issuer.
nocerts.example.com CAA 0 issue ";"
A CAA record with an issue parameter tag that specifies a domain name is a request that certificate issuers perform CAA issue restriction processing for the corresponding domain and grants authorization to the certificate issuer specified by the domain name.
For example, the following CAA record set requests that no 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 the empty issuer and a specified issuer is the same as specifying just the specified issuer alone.
An issuer MAY choose to specify issuer-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.
The semantics of issuer-parameters are determined by the issuer alone.
The issuewild property has the same syntax and semantics as the issue property except that issuewild properties only grant authorization to issue certificates that specify a wildcard domain and issuewild properties take precedence over issue properties when specified. Specifically:
The iodef property specifies a means of reporting certificate issue requests or cases of certificate issue for the corresponding domain, that violate the security policy of the issuer or the domain name holder.
The Incident Object Description Exchange Format (IODEF) [RFC5070] is used to present the incident report in machine readable form.
The iodef property takes a URL as its parameter. The URL scheme type determines the method used for reporting:
CAA Records assert a security policy that the holder of a domain name wishes to be observed by certificate 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 is to reduce the risk of certificate mis-issue rather than avoid reliance on a certificate that has ben mis-issued. DANE [DANE] describes a mechanism for avoiding reliance on mis-issued certificates.
CAA records offer CAs a cost-effective means of mitigating the risk of certificate mis-issue: The cost of implementing CAA checks is very small and the potential costs of a mis-issue event include the removal of an embedded trust anchor.
Use of CAA records does not prevent mis-issue by an authorized Certification Authority. , i.e., a CA that is authorized to issue certificates for the domain in question by CAA records..
Domain name holders SHOULD verify that the CAs they authorize to issue certificates for their domains employ appropriate controls to ensure that certificates are issued only to authorized parties within their organization.
Such controls are most appropriately determined by the domain name holder and the authorized CA(s) directly and are thus out of scope of this document.
Suppression of the CAA record or insertion of a bogus CAA record could enable an attacker to obtain a certificate from an issuer that was not authorized to issue for that domain name.
Where possible, Issuers SHOULD perform DNSSEC validation to detect missing or modified CAA record sets.
In cases where DNSSEC is not deployed in a corresponding domain, an issuer SHOULD attempt to mitigate this risk by employing appropriate DNS security controls. For example all portions of the DNS lookup process SHOULD be performed against the authoritative name server. Data cached by third parties MUST NOT be relied on but MAY be used to support additional anti-spoofing or anti-suppression controls.
Introduction of a malformed or malicious CAA RR could in theory enable a Denial of Service attack.
This specific threat is not considered to add significantly to the risk of running an insecure DNS service.
An attacker could, in principle, perform a Denial of Service attack against an issuer by requesting a certificate with a maliciously long DNS name. In practice, the DNS protocol imposes a maximum name length and CAA processing does not exacerbate the existing need to mitigate Denial of Service attacks to any meaningful degree.
A Certification Authority could make use of the critical flag to trick customers into publishing records which prevent competing Certification Authorities from issuing certificates even though the customer intends to authorize multiple providers.
In practice, such an attack would be of minimal effect since any competent competitor that found itself unable to issue certificates due to lack of support for a property marked critical SHOULD investigate the cause and report the reason to the customer who will thus discover that they had been deceived.
[Note to IANA, the CAA resource record has already been assigned. On issue of this draft as an RFC, the record should be updated to reflect this document as the authoritative specification and this paragraph (but not the following ones deleted]
IANA has assigned Resource Record Type 257 for the CAA Resource Record Type and added the line depicted below to the registry named Resource Record (RR) TYPEs and QTYPEs as defined in BCP 42 [RFC6195] and located at http://www.iana.org/assignments/dns-parameters.
RR Name Value and meaning Reference ----------- --------------------------------------------- --------- CAA 257 Certification Authority Restriction [RFC-THIS]
[Note to IANA, this is a new registry that needs to be created and this paragraph but not the following ones deleted.]
IANA has created the Certification Authority Authorization Properties registry with the following initial values:
Tag Meaning Reference ----------- ---------------------------------- --------- issue Authorization Entry by Domain [RFC-THIS] issuewild Authorization Entry by Domain [RFC-THIS] iodef Report incident by IODEF report [RFC-THIS] auth Reserved <xref target="HB2011"/> path Reserved <xref target="HB2011"/> policy Reserved <xref target="HB2011"/>
Although [HB2011]" has expired, deployed clients implement the CAA properties specified in the draft and re-use of these property tags for a different purtpose could cause unexpected behavior.
Addition of tag identifiers requires a public specification and expert review as set out in [RFC6195] Section 3.1.1..
The tag space is designed to be sufficiently large that exhausting the possible tag space need not be a concern. The scope of expert review SHOULD be limited to the question of whether the specification provided is sufficiently clear to permit implementation and to avoid unnecessary duplication of functionality.
IANA has created the Certification Authority Authorization Flags registry with the following initial values:
Flag Meaning Reference ----------- ---------------------------------- --------- 0 Issuer Critical Flag [RFC-THIS] 1-7 Reserved> [RFC-THIS]
Assignment of new flags follows the 'RFC Required' policy set out in [RFC5226] section 4.1.
The authors would like to thank the following people who contributed to the design and documentation of this work item: Chris Evans, Stephen Farrell, Jeff Hodges, Paul Hoffman, Stephen Kent, Adam Langley, Ben Laurie, Chris Palmer, Scott Schmit, Sean Turner and Ben Wilson.
[RFC3647] | Chokhani, S., Ford, W., Sabett, R., Merrill, C. and S. Wu, "Internet X.509 Public Key Infrastructure Certificate Policy and Certification Practices Framework", RFC 3647, November 2003. |
[HB2011] | Hallam-Baker, P, Stradling, R and B Laurie, "DNS Certification Authority Authorization (CAA) Resource Record ", Internet-Draft draft-hallambaker-donotissue-04, May 2011. |