idnits 2.17.1 draft-ietf-acme-caa-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (February 04, 2017) is 2631 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-18) exists of draft-ietf-acme-acme-05 ** Obsolete normative reference: RFC 6844 (Obsoleted by RFC 8659) Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 ACME Working Group H. Landau 3 Internet-Draft February 04, 2017 4 Intended status: Standards Track 5 Expires: August 8, 2017 7 CAA Record Extensions for Account URI and ACME Method Binding 8 draft-ietf-acme-caa-01 10 Abstract 12 The CAA DNS record allows a domain to communicate issuance policy to 13 CAs, but only allows a domain to define policy with CA-level 14 granularity. However, the CAA specification also provides facilities 15 for extension to admit more granular, CA-specific policy. This 16 specification defines two such parameters, one allowing specific 17 accounts of a CA to be identified by URI and one allowing specific 18 methods of domain control validation as defined by the ACME protocol 19 to be required. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on August 8, 2017. 38 Copyright Notice 40 Copyright (c) 2017 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 3. Extensions to the CAA Record: account-uri Parameter . . . . . 3 58 3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 59 3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 4 60 4. Extensions to the CAA Record: acme-methods Parameter . . . . 4 61 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 62 5.1. Limited to CAs Processing CAA Records . . . . . . . . . . 4 63 5.2. Restrictions Ineffective without CA Recognition . . . . . 5 64 5.3. Mandatory Consistency in CA Recognition . . . . . . . . . 5 65 5.4. URI Ambiguity . . . . . . . . . . . . . . . . . . . . . . 6 66 5.5. Authorization Freshness . . . . . . . . . . . . . . . . . 6 67 5.6. DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . 7 68 5.7. Use without DNSSEC . . . . . . . . . . . . . . . . . . . 7 69 5.8. Restrictions Supercedable by DNS Delegation . . . . . . . 7 70 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 71 7. Normative References . . . . . . . . . . . . . . . . . . . . 8 72 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 8 73 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 75 1. Introduction 77 This specification defines two parameters for the "issue" and 78 "issuewild" properties of the Certification Authority Authorization 79 (CAA) DNS resource record [RFC6844]. The first, "account-uri", 80 allows authorization conferred by a CAA policy to be restricted to 81 specific accounts of a CA, which are identified by URIs. The second, 82 "acme-methods", allows the set of validation methods supported by an 83 ACME [I-D.ietf-acme-acme] based CA to validate domain control to be 84 limited to a subset of the full set of methods which it supports. 86 2. Terminology 88 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 89 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 90 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 91 [RFC2119] and indicate requirement levels for compliant ACME-CAA 92 implementations. 94 3. Extensions to the CAA Record: account-uri Parameter 96 A CAA parameter "account-uri" is defined for the "issue" and 97 "issuewild" properties defined by [RFC6844]. The value of this 98 parameter, if specified, MUST be a URI [RFC3986] identifying a 99 specific CA account. 101 "CA account" means an object maintained by a specific CA representing 102 a specific entity, or group of related entities, which may request 103 the issuance of certificates. 105 The presence of this parameter constrains the property to which it is 106 attached. A CA MUST only consider a property with an "account-uri" 107 parameter to authorize issuance where the URI specified is an URI 108 that the CA recognises as identifying the account making a 109 certificate issuance request. 111 If a certificate issuance request is made to a CA such that no 112 account URI is available, because the request is made in the absence 113 of any account or the account has no URI assigned to it, a CA MUST 114 NOT consider any property having an "account-uri" parameter as 115 authorizing issuance. 117 If a CA finds multiple CAA records pertaining to it (i.e., having 118 property "issue" or "issuewild" as applicable and a domain that the 119 CA recognises as its own) with different "account-uri" parameters, 120 the CA MUST NOT consider the CAA record set to authorize issuance 121 unless at least one of the specified account URIs identifies the 122 account of the CA by which issuance is requested. A property without 123 an "account-uri" parameter matches any account. A property with an 124 invalid or unrecognised "account-uri" parameter is unsatisfiable. A 125 property with multiple "account-uri" parameters is unsatisfiable. 127 The presence of an "account-uri" parameter does not replace or 128 supercede the need to validate the domain name specified in an 129 "issue" or "issuewild" record in the manner described in the CAA 130 specification. CAs MUST still perform such validation. For example, 131 a CAA property which specifies a domain name belonging to CA A and an 132 account URI identifying an account at CA B is unsatisfiable. 134 3.1. Use with ACME 136 An ACME [I-D.ietf-acme-acme] account object MAY be identified by 137 setting the "account-uri" parameter to the URI of the ACME account 138 object. 140 Implementations of this specification which also implement ACME MUST 141 recognise such URIs. 143 3.2. Use without ACME 145 The "account-uri" specification provides a general mechanism to 146 identify entities which may request certificate issuance via URIs. 147 The use of specific kinds of URI may be specified in future RFCs, and 148 CAs not implementing ACME MAY assign and recognise their own URIs 149 arbitrarily. 151 4. Extensions to the CAA Record: acme-methods Parameter 153 A CAA parameter "acme-methods" is also defined for the "issue" and 154 "issuewild" properties. The value of this parameter, if specified, 155 MUST be a comma-separated string of ACME challenge method names. The 156 use of this parameter is specific to ACME and CAs implementing it. 158 The presence of this parameter constrains the property to which it is 159 attached. A CA MUST only consider a property with the "acme-methods" 160 parameter to authorize issuance where the name of the challenge 161 method being used is one of the names listed in the comma-separated 162 list. 164 The special method value "non-acme" is defined. Where a CA supports 165 both ACME and the "acme-methods" parameter, but also allows the 166 issuance of certificates by other means, it MUST ensure that all of 167 its other issuance channels recognise the "acme-methods" parameter 168 (see section 5.3). For the purposes of validation, such non-ACME 169 transactions shall be considered to have a method name of "non-acme". 170 Thus, domains implementing CAA which wish to nominate a CA which 171 supports issuance via both ACME and non-ACME means can choose whether 172 to allow one or both. 174 5. Security Considerations 176 This specification describes an extension to the CAA record 177 specification increasing the granularity at which CAA policy can be 178 expressed. This allows the set of entities capable of successfully 179 requesting issuance of certificates for a given domain to be 180 restricted beyond that which would otherwise be possible, while still 181 allowing issuance for specific accounts of a CA. This improves the 182 security of issuance for domains which choose to employ it, when 183 combined with a CA which implements this specification. 185 5.1. Limited to CAs Processing CAA Records 187 All of the security considerations of the CAA specification are 188 inherited by this document. This specification merely enables a 189 domain with an existing relationship with a CA to further constrain 190 that CA in its issuance practices, where that CA implements this 191 specification. In particular, it provides no additional security 192 above that provided by use of the unextended CAA specification alone 193 as concerns matters relating to any other CA. The capacity of any 194 other CA to issue certificates for the given domain is completely 195 unchanged. 197 As such, a domain which via CAA records authorizes only CAs adopting 198 this specification, and which constrains its policy by means of this 199 specification, remains vulnerable to unauthorized issuance by CAs 200 which do not honour CAA records, or which honour them only on an 201 advisory basis. 203 5.2. Restrictions Ineffective without CA Recognition 205 The CAA parameters specified in this specification rely on their 206 being recognised by the CA named by an "issue" or "issuewild" CAA 207 property. As such, the parameters are not an effective means of 208 control over issuance unless a CA's support for the parameters is 209 established beforehand. 211 CAs which implement this specification SHOULD make available 212 documentation indicating as such, including explicit statements as to 213 which parameters are supported. Domains configuring CAA records for 214 a CA MUST NOT assume that the restrictions implied by the "account- 215 uri" and "acme-methods" parameters are effective in the absence of 216 explicit indication as such from that CA. 218 CAs SHOULD also document whether they implement DNSSEC validation for 219 DNS lookups done for validation purposes, as this affects the 220 security of the "account-uri" and "acme-methods" parameters. 222 5.3. Mandatory Consistency in CA Recognition 224 A CA MUST ensure that its support for the "account-uri" and "acme- 225 methods" parameters is fully consistent for a given domain name which 226 a CA recognises as identifying itself in a CAA "issue" or "issuewild" 227 property. If a CA has multiple issuance systems (for example, an 228 ACME-based issuance system and a non-ACME based issuance system, or 229 two different issuance systems resulting from a corporate merger), it 230 MUST ensure that all issuance systems recognise the same parameters. 232 A CA which is unable to do this MAY still implement the parameters by 233 splitting the CA into two domain names for the purposes of CAA 234 processing. For example, a CA "example.com" with an ACME-based 235 issuance system and a non-ACME-based issuance system could recognise 236 only "acme.example.com" for the former and "example.com" for the 237 latter, and then implement support for the "account-uri" and "acme- 238 methods" parameters for "acme.example.com" only. 240 A CA which is unable to ensure consistent processing of the "account- 241 uri" or "acme-methods" parameters for a given CA domain name as 242 specifiable in CAA "issue" or "issuewild" properties MUST NOT 243 implement support for these parameters. Failure to do so will result 244 in an implementation of these parameters which does not provide 245 effective security. 247 5.4. URI Ambiguity 249 Suppose that CA A recognises "a.example.com" as identifying itself, 250 CA B is a subsidiary of CA A which recognises both "a.example.com" 251 and "b.example.com" as identifying itself. 253 Suppose that both CA A and CA B issue account URIs of the form 255 "account-id:1234" 257 If the CA domain name in a CAA record is specified as "a.example.com" 258 then this could be construed as identifying account number 1234 at CA 259 A or at CA B. These may be different accounts, creating ambiguity. 261 Thus, CAs MUST ensure that the URIs they recognise as pertaining to a 262 specific account of that CA are unique within the scope of all domain 263 names which they recognise as identifying that CA for the purpose of 264 CAA record validation. 266 It is RECOMMENDED that CAs satisfy this requirement by using URIs 267 which include an authority: 269 "https://a.example.com/account/1234" 271 5.5. Authorization Freshness 273 The CAA specification governs the act of issuance by a CA. In some 274 cases, a CA may establish authorization for an account to request 275 certificate issuance for a specific domain separately to the act of 276 issuance itself. Such authorization may occur substantially prior to 277 a certificate issuance request. The CAA policy expressed by a domain 278 may have changed in the meantime, creating the risk that a CA will 279 issue certificates in a manner inconsistent with the presently 280 published CAA policy. 282 CAs SHOULD consider adopting practices to reduce the risk of such 283 circumstances. Possible countermeasures include issuing 284 authorizations with very limited validity periods, such as an hour, 285 or revalidating the CAA policy for a domain at certificate issuance 286 time. 288 5.6. DNSSEC 290 Where a domain chooses to secure its nameservers using DNSSEC, the 291 authenticity of its DNS data can be assured, providing that a CA 292 makes all DNS resolutions via an appropriate, trusted DNSSEC- 293 validating resolver. A domain can use this property to protect 294 itself from the threat posed by a global adversary capable of 295 performing man-in-the-middle attacks, which is not ordinarily 296 mitigated by the "domain validation" model. 298 In order to facilitate this, a CA validation process must either rely 299 solely on information obtained via DNSSEC, or meaningfully bind the 300 other parts of the validation transaction using material obtained via 301 DNSSEC. 303 The CAA parameters described in this specification can be used to 304 ensure that only validation methods meeting these criteria are used. 305 In particular, a domain secured via DNSSEC SHOULD either: 307 1. Use the "account-uri" parameter to ensure that only accounts 308 which it controls are authorized to obtain certificates, or 310 2. Exclusively use validation methods which rely solely on 311 information obtained via DNSSEC, and use the "acme-methods" 312 parameter to ensure that only such methods are used. 314 5.7. Use without DNSSEC 316 Where a domain does not secure its nameservers using DNSSEC, or one 317 or more of the CAs it authorizes do not perform CAA validation 318 lookups using a trusted DNSSEC-validating resolver, use of the 319 "account-uri" or "acme-methods" parameters does not confer additional 320 security against an attacker capable of performing a man-in-the- 321 middle attack against all validation attempts made by a CA, as such 322 an attacker could simply fabricate the responses to DNS lookups for 323 CAA records. 325 In this case, the "account-uri" and "acme-methods" parameters still 326 provide an effective means of administrative control over issuance, 327 except where control over DNS is subdelegated (see below). 329 5.8. Restrictions Supercedable by DNS Delegation 331 Because CAA records are located during validation by walking up the 332 DNS hierarchy until one or more records are found, the use of the 333 "account-uri" and "acme-methods" parameters, or any CAA policy, is 334 not an effective way to restrict or control issuance for subdomains 335 of a domain, where control over those subdomains is delegated to 336 another party (such as via DNS delegation or by providing limited 337 access to manage subdomain DNS records). 339 6. IANA Considerations 341 None. As per the CAA specification, the parameter namespace for the 342 CAA "issue" and "issuewild" properties has CA-defined semantics. 343 This document merely specifies a RECOMMENDED semantic for parameters 344 of the names "account-uri" and "acme-methods". 346 7. Normative References 348 [I-D.ietf-acme-acme] 349 Barnes, R., Hoffman-Andrews, J., and J. Kasten, "Automatic 350 Certificate Management Environment (ACME)", draft-ietf- 351 acme-acme-05 (work in progress), February 2017. 353 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 354 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 355 RFC2119, March 1997, 356 . 358 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 359 Resource Identifier (URI): Generic Syntax", STD 66, RFC 360 3986, DOI 10.17487/RFC3986, January 2005, 361 . 363 [RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification 364 Authority Authorization (CAA) Resource Record", RFC 6844, 365 DOI 10.17487/RFC6844, January 2013, 366 . 368 Appendix A. Examples 370 The following shows an example DNS zone file fragment which nominates 371 two account URIs as authorized to issue certificates for the domain 372 "example.com". Issuance is restricted to the CA "example.net". 374 example.com. IN CAA 0 issue "example.net; \ 375 account-uri=https://example.net/account/1234" 376 example.com. IN CAA 0 issue "example.net; \ 377 account-uri=https://example.net/account/2345" 379 The following shows a zone file fragment which restricts the ACME 380 methods which can be used; only ACME methods "dns-01" and "xyz-01" 381 can be used. 383 example.com. IN CAA 0 issue "example.net; \ 384 acme-methods=dns-01,xyz-01" 386 The following shows an equivalent way of expressing the same 387 restriction: 389 example.com. IN CAA 0 issue "example.net; acme-methods=dns-01" 390 example.com. IN CAA 0 issue "example.net; acme-methods=xyz-01" 392 The following shows a zone file fragment in which one account can be 393 used to issue with the "dns-01" method and one account can be used to 394 issue with the "http-01" method. 396 example.com. IN CAA 0 issue "example.net; \ 397 account-uri=https://example.net/account/1234; \ 398 acme-methods=dns-01" 399 example.com. IN CAA 0 issue "example.net; \ 400 account-uri=https://example.net/account/2345; \ 401 acme-methods=http-01" 403 The following shows a zone file fragment in which only ACME method 404 "dns-01" can be used, but non-ACME methods of issuance are also 405 allowed. 407 example.com. IN CAA 0 issue "example.net; \ 408 acme-methods=dns-01,non-acme" 410 Author's Address 412 Hugo Landau 414 Email: hlandau@devever.net