< 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/