draft-ietf-acme-caa-08.txt | draft-ietf-acme-caa-09.txt | |||
---|---|---|---|---|
ACME Working Group H. Landau | ACME Working Group H. Landau | |||
Internet-Draft May 31, 2019 | Internet-Draft June 16, 2019 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: December 2, 2019 | Expires: December 18, 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-08 | draft-ietf-acme-caa-09 | |||
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 December 2, 2019. | This Internet-Draft will expire on December 18, 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 18 ¶ | skipping to change at page 2, line 18 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
3. Extensions to the CAA Record: accounturi Parameter . . . . . 3 | 3. Extensions to the CAA Record: accounturi Parameter . . . . . 3 | |||
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 . . . . . . . . . . 5 | |||
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 . . . . . . . . . . . . . . . . . 7 | |||
5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 6 | 5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 7 | |||
5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 | 5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 | |||
5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 8 | 5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 9 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 5.9. Revelation of Account URIs . . . . . . . . . . . . . . . 9 | |||
7. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 9 | 7. Normative References . . . . . . . . . . . . . . . . . . . . 9 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 10 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
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 [I-D.ietf-lamps-rfc6844bis]. The first, | |||
authorization conferred by a CAA policy to be restricted to specific | "accounturi", allows authorization conferred by a CAA policy to be | |||
accounts of a CA, which are identified by URIs. The second, | restricted to specific accounts of a CA, which are identified by | |||
"validationmethods", allows the set of validation methods supported | URIs. The second, "validationmethods", allows the set of validation | |||
by a CA to validate domain control to be limited to a subset of the | methods supported by a CA to validate domain control to be limited to | |||
full set of methods which it supports. | a subset of the full set of methods which it supports. | |||
2. Terminology | 2. Terminology | |||
In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT | |||
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as | RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as | |||
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 [I-D.ietf-lamps-rfc6844bis]. The | |||
parameter, if specified, MUST be a URI [RFC3986] identifying a | value of this parameter, if specified, MUST be a URI [RFC3986] | |||
specific CA account. | identifying a specific CA account. | |||
"CA account" means an object, maintained by a specific CA and which | "CA account" means an object, maintained by a specific CA and which | |||
may request the issuance of certificates, which represents a specific | may request the issuance of certificates, which represents a specific | |||
entity or group of related entities. | 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 in the value portion of that parameter 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 | |||
unsatisfiable. | unsatisfiable. | |||
The presence of an "accounturi" parameter does not replace or | The presence of an "accounturi" parameter does not replace or | |||
supercede the need to validate the domain name specified in an | supercede the need to validate the domain name specified in an | |||
"issue" or "issuewild" record in the manner described in the CAA | "issue" or "issuewild" record in the manner described in the CAA | |||
specification. CAs MUST still perform such validation. For example, | specification. CAs MUST still perform such validation. For example, | |||
a CAA "issue" property which specifies a domain name belonging to CA | a CAA "issue" property which specifies a domain name belonging to CA | |||
A and an "accounturi" parameter identifying an account at CA B is | A and an "accounturi" parameter identifying an account at CA B is | |||
unsatisfiable. | unsatisfiable. | |||
3.1. Use with ACME | 3.1. Use with ACME | |||
An ACME [I-D.ietf-acme-acme] account object MAY be identified by | An ACME [RFC8555] account object MAY be identified by setting the | |||
setting the "accounturi" parameter to the URI of the ACME account | "accounturi" parameter to the URI of the ACME account object. | |||
object. | ||||
Implementations of this specification which also implement ACME MUST | Implementations of this specification which also implement ACME MUST | |||
recognise such URIs. | recognise such URIs. | |||
3.2. Use without ACME | 3.2. Use without ACME | |||
The "accounturi" specification provides a general mechanism to | The "accounturi" specification provides a general mechanism to | |||
identify entities which may request certificate issuance via URIs. | identify entities which may request certificate issuance via URIs. | |||
The use of specific kinds of URI may be specified in future RFCs, and | The use of specific kinds of URI may be specified in future RFCs, and | |||
CAs not implementing ACME MAY assign and recognise their own URIs | CAs not implementing ACME MAY assign and recognise their own URIs | |||
arbitrarily. | arbitrarily. | |||
4. Extensions to the CAA Record: validationmethods Parameter | 4. Extensions to the CAA Record: validationmethods Parameter | |||
A CAA parameter "validationmethods" is also defined for the "issue" | A CAA parameter "validationmethods" is also defined for the "issue" | |||
and "issuewild" properties. The value of this parameter, if | and "issuewild" properties. The value of this parameter, if | |||
specified, MUST be a comma-separated string of challenge method | specified, MUST be a comma-separated string of validation method | |||
names. Each challenge method name MUST be either an ACME challenge | labels. | |||
method name or a CA-assigned non-ACME challenge method name. | ||||
A validation method label identifies a validation method. A | ||||
validation method is a particular way in which a CA can validate | ||||
control over a domain. | ||||
The presence of this parameter constrains the property to which it is | The presence of this parameter constrains the property to which it is | |||
attached. A CA MUST only consider a property with the | attached. A CA MUST only consider a property with the | |||
"validationmethods" parameter to authorize issuance where the name of | "validationmethods" parameter to authorize issuance where the | |||
the challenge method being used is one of the names listed in the | validation method being used is identified by one of the validation | |||
comma-separated list. | method labels listed in the comma-separated list. | |||
Each validation method label MUST be either the label of a method | ||||
defined in the ACME Validation Methods IANA registry, or a CA- | ||||
specific non-ACME validation method label as defined below. | ||||
Where a CA supports both the "validationmethods" parameter and one or | Where a CA supports both the "validationmethods" parameter and one or | |||
more non-ACME challenge methods, it MUST assign identifiers to those | more non-ACME validation methods, it MUST assign labels to those | |||
methods. If appropriate non-ACME identifiers are not present in the | methods. If appropriate non-ACME labels are not present in the ACME | |||
ACME Validation Methods IANA registry, the CA MUST use identifiers | Validation Methods IANA registry, the CA MUST use labels beginning | |||
beginning with the string "ca-", which are defined to have CA- | with the string "ca-", which are defined to have CA-specific meaning. | |||
specific meaning. | ||||
The value of the "validationmethods" parameter MUST comply with the | ||||
following ABNF [RFC5234]: | ||||
value = [*(label ",") label] | ||||
label = 1*(ALPHA / DIGIT / "-") | ||||
5. Security Considerations | 5. Security Considerations | |||
This specification describes an extension to the CAA record | This specification describes an extension to the CAA record | |||
specification increasing the granularity at which CAA policy can be | specification increasing the granularity at which CAA policy can be | |||
expressed. This allows the set of entities capable of successfully | expressed. This allows the set of entities capable of successfully | |||
requesting issuance of certificates for a given domain to be | requesting issuance of certificates for a given domain to be | |||
restricted beyond that which would otherwise be possible, while still | restricted beyond that which would otherwise be possible, while still | |||
allowing issuance for specific accounts of a CA. This improves the | allowing issuance for specific accounts of a CA. This improves the | |||
security of issuance for domains which choose to employ it, when | security of issuance for domains which choose to employ it, when | |||
skipping to change at page 5, line 10 ¶ | skipping to change at page 5, line 27 ¶ | |||
As such, a domain which via CAA records authorizes only CAs adopting | As such, a domain which via CAA records authorizes only CAs adopting | |||
this specification, and which constrains its policy by means of this | this specification, and which constrains its policy by means of this | |||
specification, remains vulnerable to unauthorized issuance by CAs | specification, remains vulnerable to unauthorized issuance by CAs | |||
which do not honour CAA records, or which honour them only on an | which do not honour CAA records, or which honour them only on an | |||
advisory basis. Where a domain uses DNSSEC, it also remains | advisory basis. Where a domain uses DNSSEC, it also remains | |||
vulnerable to CAs which honour CAA records but which do not validate | vulnerable to CAs which honour CAA records but which do not validate | |||
CAA records by means of a trusted DNSSEC-validating resolver. | CAA records by means of a trusted DNSSEC-validating resolver. | |||
5.2. Restrictions Ineffective without CA Recognition | 5.2. Restrictions Ineffective without CA Recognition | |||
The CAA parameters specified in this specification rely on their | Because the parameters of "issue" or "issuewild" CAA properties | |||
being recognised by the CA named by an "issue" or "issuewild" CAA | constitute a CA-specific namespace, the CA identified by an "issue" | |||
property. As such, the parameters are not an effective means of | or "issuewild" property decides what parameters to recognise and | |||
control over issuance unless a CA's support for the parameters is | their semantics. Accordingly, the CAA parameters defined in this | |||
specification rely on their being recognised by the CA named by an | ||||
"issue" or "issuewild" CAA property, and are not an effective means | ||||
of control over issuance unless a CA's support for the parameters is | ||||
established beforehand. | established beforehand. | |||
CAs which implement this specification SHOULD make available | CAs which implement this specification SHOULD make available | |||
documentation indicating as such, including explicit statements as to | documentation indicating as such, including explicit statements as to | |||
which parameters are supported. Domains configuring CAA records for | which parameters are supported. Domains configuring CAA records for | |||
a CA MUST NOT assume that the restrictions implied by the | a CA MUST NOT assume that the restrictions implied by the | |||
"accounturi" and "validationmethods" parameters are effective in the | "accounturi" and "validationmethods" parameters are effective in the | |||
absence of explicit indication as such from that CA. | absence of explicit indication as such from that CA. | |||
CAs SHOULD also document whether they implement DNSSEC validation for | CAs SHOULD also document whether they implement DNSSEC validation for | |||
skipping to change at page 8, line 30 ¶ | skipping to change at page 9, line 11 ¶ | |||
for subdomains of a domain, where control over those subdomains is | for subdomains of a domain, where control over those subdomains is | |||
delegated to another party (such as via DNS delegation or by | delegated to another party (such as via DNS delegation or by | |||
providing limited access to manage subdomain DNS records). | providing limited access to manage subdomain DNS records). | |||
5.8. Misconfiguration Hazards | 5.8. Misconfiguration Hazards | |||
Because the "accounturi" and "validationmethods" parameters express | Because the "accounturi" and "validationmethods" parameters express | |||
restrictive security policies, misconfiguration of said parameters | restrictive security policies, misconfiguration of said parameters | |||
may result in legitimate issuance requests being refused. | may result in legitimate issuance requests being refused. | |||
5.9. Revelation of Account URIs | ||||
Because CAA records are publically accessible, use of the | ||||
"accounturi" parameter enables third parties to observe the | ||||
authorized account URIs for a domain. This may allow third parties | ||||
to identify a correlation between domains if those domains use the | ||||
same account URIs. | ||||
CAs are encouraged to select and process account URIs under the | ||||
assumption that untrusted third parties may learn of them. | ||||
6. IANA Considerations | 6. IANA Considerations | |||
None. As per the CAA specification, the parameter namespace for the | None. As per the CAA specification, the parameter namespace for the | |||
CAA "issue" and "issuewild" properties has CA-defined semantics and | CAA "issue" and "issuewild" properties has CA-defined semantics and | |||
the identifiers within that namespace may be freely and arbitrarily | the identifiers within that namespace may be freely and arbitrarily | |||
assigned by a CA. This document merely specifies recommended | assigned by a CA. This document merely specifies recommended | |||
semantics for parameters of the names "accounturi" and | semantics for parameters of the names "accounturi" and | |||
"validationmethods", which CAs may choose to adopt. | "validationmethods", which CAs may choose to adopt. | |||
7. Normative References | 7. Normative References | |||
[I-D.ietf-acme-acme] | [I-D.ietf-lamps-rfc6844bis] | |||
Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. | Hallam-Baker, P., Stradling, R., and J. Hoffman-Andrews, | |||
Kasten, "Automatic Certificate Management Environment | "DNS Certification Authority Authorization (CAA) Resource | |||
(ACME)", draft-ietf-acme-acme-18 (work in progress), | Record", draft-ietf-lamps-rfc6844bis-07 (work in | |||
December 2018. | progress), May 2019. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Authority Authorization (CAA) Resource Record", RFC 6844, | Specifications: ABNF", STD 68, RFC 5234, | |||
DOI 10.17487/RFC6844, January 2013, | DOI 10.17487/RFC5234, January 2008, | |||
<https://www.rfc-editor.org/info/rfc6844>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8555] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. | ||||
Kasten, "Automatic Certificate Management Environment | ||||
(ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019, | ||||
<https://www.rfc-editor.org/info/rfc8555>. | ||||
Appendix A. Examples | Appendix A. Examples | |||
The following shows an example DNS zone file fragment which nominates | The following shows an example DNS zone file fragment which nominates | |||
two account URIs as authorized to issue certificates for the domain | two account URIs as authorized to issue certificates for the domain | |||
"example.com". Issuance is restricted to the CA "example.net". | "example.com". Issuance is restricted to the CA "example.net". | |||
example.com. IN CAA 0 issue "example.net; \ | example.com. IN CAA 0 issue "example.net; \ | |||
accounturi=https://example.net/account/1234" | accounturi=https://example.net/account/1234" | |||
example.com. IN CAA 0 issue "example.net; \ | example.com. IN CAA 0 issue "example.net; \ | |||
accounturi=https://example.net/account/2345" | accounturi=https://example.net/account/2345" | |||
End of changes. 19 change blocks. | ||||
49 lines changed or deleted | 81 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/ |