draft-ietf-acme-caa-07.txt | draft-ietf-acme-caa-08.txt | |||
---|---|---|---|---|
ACME Working Group H. Landau | ACME Working Group H. Landau | |||
Internet-Draft May 20, 2019 | Internet-Draft May 31, 2019 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: November 21, 2019 | Expires: December 2, 2019 | |||
CAA Record Extensions for Account URI and ACME Method Binding | CAA Record Extensions for Account URI and ACME Method Binding | |||
draft-ietf-acme-caa-07 | draft-ietf-acme-caa-08 | |||
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 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 policy with CA-level | |||
granularity. However, the CAA specification also provides facilities | granularity. However, the CAA specification also provides facilities | |||
for extension to admit more granular, CA-specific policy. This | for extension to admit more granular, CA-specific policy. This | |||
specification defines two such parameters, one allowing specific | specification defines two such parameters, one allowing specific | |||
accounts of a CA to be identified by URI and one allowing specific | accounts of a CA to be identified by URI and one allowing specific | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
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 November 21, 2019. | This Internet-Draft will expire on December 2, 2019. | |||
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 | |||
skipping to change at page 2, line 24 ¶ | skipping to change at page 2, line 24 ¶ | |||
3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 | 3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 3 | 3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Extensions to the CAA Record: validationmethods Parameter . . 4 | 4. Extensions to the CAA Record: validationmethods Parameter . . 4 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | |||
5.1. Limited to CAs Processing CAA Records . . . . . . . . . . 4 | 5.1. Limited to CAs Processing CAA Records . . . . . . . . . . 4 | |||
5.2. Restrictions Ineffective without CA Recognition . . . . . 5 | 5.2. Restrictions Ineffective without CA Recognition . . . . . 5 | |||
5.3. Mandatory Consistency in CA Recognition . . . . . . . . . 5 | 5.3. Mandatory Consistency in CA Recognition . . . . . . . . . 5 | |||
5.4. URI Ambiguity . . . . . . . . . . . . . . . . . . . . . . 6 | 5.4. URI Ambiguity . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.5. Authorization Freshness . . . . . . . . . . . . . . . . . 6 | 5.5. Authorization Freshness . . . . . . . . . . . . . . . . . 6 | |||
5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 6 | 5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 6 | |||
5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 7 | 5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 | |||
5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 8 | 5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 8 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
7. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 7. Normative References . . . . . . . . . . . . . . . . . . . . 8 | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 8 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 9 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
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 [RFC6844]. The first, "accounturi", allows | (CAA) DNS resource record [RFC6844]. The first, "accounturi", allows | |||
authorization conferred by a CAA policy to be restricted to specific | authorization conferred by a CAA policy to be restricted to specific | |||
accounts of a CA, which are identified by URIs. The second, | accounts of a CA, which are identified by URIs. The second, | |||
"validationmethods", allows the set of validation methods supported | "validationmethods", allows the set of validation methods supported | |||
by a CA to validate domain control to be limited to a subset of the | by a CA to validate domain control to be limited to a subset of the | |||
skipping to change at page 3, line 12 ¶ | skipping to change at page 3, line 12 ¶ | |||
described in BCP 14 [RFC2119] [RFC8174] when, and only when, they | described in BCP 14 [RFC2119] [RFC8174] when, and only when, they | |||
appear in all capitals, as shown here. | appear in all capitals, as shown here. | |||
3. Extensions to the CAA Record: accounturi Parameter | 3. Extensions to the CAA Record: accounturi Parameter | |||
A CAA parameter "accounturi" is defined for the "issue" and | A CAA parameter "accounturi" is defined for the "issue" and | |||
"issuewild" properties defined by [RFC6844]. The value of this | "issuewild" properties defined by [RFC6844]. The value of this | |||
parameter, if specified, MUST be a URI [RFC3986] identifying a | parameter, if specified, MUST be a URI [RFC3986] identifying a | |||
specific CA account. | specific CA account. | |||
"CA account" means an object maintained by a specific CA representing | "CA account" means an object, maintained by a specific CA and which | |||
a specific entity, or group of related entities, which may request | may request the issuance of certificates, which represents a specific | |||
the issuance of certificates. | 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 recognises the URI | |||
specified as identifying the account making that request. | specified as identifying the 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 unrecognised "accounturi" parameter is | |||
unsatisfiable. A property with multiple "accounturi" parameters is | unsatisfiable. A property with multiple "accounturi" parameters is | |||
skipping to change at page 5, line 49 ¶ | skipping to change at page 5, line 49 ¶ | |||
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 recognise | |||
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 which is unable to ensure consistent processing of the | |||
"accounturi" or "validationmethods" parameters for a given CA domain | "accounturi" or "validationmethods" parameters for a given CA domain | |||
name as specifiable in CAA "issue" or "issuewild" properties MUST NOT | name as specifiable in CAA "issue" or "issuewild" properties MUST NOT | |||
implement support for these parameters. Failure to do so will result | implement support for these parameters. Failure to do so would | |||
in an implementation of these parameters which does not provide | result in an implementation of these parameters which does not | |||
effective security. | 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 recognises "a.example.com" as identifying itself, | |||
CA B is a subsidiary of CA A which recognises both "a.example.com" | CA B is a subsidiary of CA A which recognises 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 | |||
"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 "a.example.com" | |||
then this could be construed as identifying account number 1234 at CA | then this could be construed as identifying account number 1234 at CA | |||
A or at CA B. These may be different accounts, creating ambiguity. | 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 recognise 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 which they recognise as identifying that CA for the purpose of | |||
CAA record validation. | CAA record validation. | |||
CAs MUST satisfy this requirement by using URIs which include an | CAs SHOULD satisfy this requirement by using URIs which include an | |||
authority: | 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 governs the act of issuance by a CA. In some | |||
cases, a CA may establish authorization for an account to request | cases, a CA may establish authorization for an account to request | |||
certificate issuance for a specific domain separately to the act of | certificate issuance for a specific domain separately to the act of | |||
issuance itself. Such authorization may occur substantially prior to | issuance itself. Such authorization may occur substantially prior to | |||
a certificate issuance request. The CAA policy expressed by a domain | a certificate issuance request. The CAA policy expressed by a domain | |||
skipping to change at page 6, line 47 ¶ | skipping to change at page 6, line 47 ¶ | |||
issue certificates in a manner inconsistent with the presently | issue certificates in a manner inconsistent with the presently | |||
published CAA policy. | 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 | |||
Where a domain chooses to secure its nameservers using DNSSEC, the | The "domain validation" model of validation commonly used for | |||
authenticity of its DNS data can be assured, providing that a given | certificate issuance cannot ordinarily protect against adversaries | |||
CA makes all DNS resolutions via an appropriate, trusted DNSSEC- | who can conduct global man-in-the-middle attacks against a particular | |||
validating resolver. A domain can use this property to protect | domain. A global man-in-the-middle attack is an attack which can | |||
itself from the threat posed by a global adversary capable of | intercept traffic to or from a given domain, regardless of the origin | |||
performing man-in-the-middle attacks, which is not ordinarily | or destination of that traffic. Such an adversary can intercept all | |||
mitigated by the "domain validation" model. | validation traffic initiated by a CA and thus appear to have control | |||
of the given domain. | ||||
Where a domain is signed using DNSSEC, the authenticity of its DNS | ||||
data can be assured, providing that a given CA makes all DNS | ||||
resolutions via a trusted DNSSEC-validating resolver. A domain can | ||||
use this property to protect itself from the threat posed by an | ||||
adversary capable of performing a global man-in-the-middle attack | ||||
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 which | |||
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 which 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 | ||||
MUST perform CAA validation using a trusted, DNSSEC-validating | ||||
resolver. | ||||
"Trusted" in this context means that the CA both trusts the resolver | ||||
itself and ensures that the communications path between the resolver | ||||
and the system performing CAA validation are secure. It is | ||||
RECOMMENDED that a CA ensure this by using a DNSSEC-validating | ||||
resolver running on the same machine as the system performing CAA | ||||
validation. | ||||
Use of the "accounturi" or "validationmethods" parameters does not | Use of the "accounturi" or "validationmethods" parameters does not | |||
confer additional security against an attacker capable of performing | confer additional security against an attacker capable of performing | |||
a man-in-the-middle attack against all validation attempts made by a | a man-in-the-middle attack against all validation attempts made by a | |||
given CA which is authorized by CAA where: | given CA which 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 DNSSEC- | |||
validating resolver. | validating resolver. | |||
skipping to change at page 7, line 45 ¶ | skipping to change at page 8, line 17 ¶ | |||
do not validate CAA records, or which do not do so using a trusted | do not validate CAA records, or which do not do so using a trusted | |||
DNSSEC-validating resolver, regardless of whether those CAs are | DNSSEC-validating resolver, regardless of whether those CAs are | |||
authorized by CAA or not; see Section 5.1. | authorized by CAA or not; 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 Supercedable by DNS Delegation | |||
Because CAA records are located during validation by walking up the | CAA records are located during validation by walking up the DNS | |||
DNS hierarchy until one or more records are found, the use of the | hierarchy until one or more records are found. CAA records are | |||
"accounturi" and "validationmethods" parameters, or any CAA policy, | therefore not an effective way of restricting or controlling issuance | |||
is not an effective way to restrict or control issuance for | for subdomains of a domain, where control over those subdomains is | |||
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 they express a restrictive security policy, misconfiguration | Because the "accounturi" and "validationmethods" parameters express | |||
of the "accounturi" or "validationmethods" parameters may result in | restrictive security policies, misconfiguration of said parameters | |||
legitimate issuance requests being refused. | may result in legitimate issuance requests being refused. | |||
6. IANA Considerations | 6. IANA Considerations | |||
None. As per the CAA specification, the parameter namespace for the | None. As per the CAA specification, the parameter namespace for the | |||
CAA "issue" and "issuewild" properties has CA-defined semantics. | CAA "issue" and "issuewild" properties has CA-defined semantics and | |||
This document merely specifies a RECOMMENDED semantic for parameters | the identifiers within that namespace may be freely and arbitrarily | |||
of the names "accounturi" and "validationmethods". | assigned by a CA. This document merely specifies recommended | |||
semantics for parameters of the names "accounturi" and | ||||
"validationmethods", which CAs may choose to adopt. | ||||
7. Normative References | 7. Normative References | |||
[I-D.ietf-acme-acme] | [I-D.ietf-acme-acme] | |||
Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. | Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. | |||
Kasten, "Automatic Certificate Management Environment | Kasten, "Automatic Certificate Management Environment | |||
(ACME)", draft-ietf-acme-acme-18 (work in progress), | (ACME)", draft-ietf-acme-acme-18 (work in progress), | |||
December 2018. | December 2018. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
End of changes. 15 change blocks. | ||||
34 lines changed or deleted | 54 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/ |