idnits 2.17.1 draft-ietf-acme-caa-06.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 (January 15, 2019) is 1900 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) ** Obsolete normative reference: RFC 6844 (Obsoleted by RFC 8659) Summary: 1 error (**), 0 flaws (~~), 2 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 January 15, 2019 4 Intended status: Standards Track 5 Expires: July 19, 2019 7 CAA Record Extensions for Account URI and ACME Method Binding 8 draft-ietf-acme-caa-06 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 https://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 July 19, 2019. 38 Copyright Notice 40 Copyright (c) 2019 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 (https://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: accounturi Parameter . . . . . 3 58 3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 59 3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 4 60 4. Extensions to the CAA Record: validationmethods 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. Use with and without DNSSEC . . . . . . . . . . . . . . . 7 68 5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 69 5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 8 70 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 71 7. Normative References . . . . . . . . . . . . . . . . . . . . 8 72 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 9 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, "accounturi", allows 80 authorization conferred by a CAA policy to be restricted to specific 81 accounts of a CA, which are identified by URIs. The second, 82 "validationmethods", allows the set of validation methods supported 83 by a CA to validate domain control to be limited to a subset of the 84 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: accounturi Parameter 96 A CAA parameter "accounturi" 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. Where a CAA property has an "accounturi" parameter, a CA 107 MUST only consider that property to authorize issuance in the context 108 of a given certificate issuance request if the CA recognises the URI 109 specified as identifying the account making that request. 111 If a CA finds multiple CAA records pertaining to it (i.e., having 112 property "issue" or "issuewild" as applicable and a domain that the 113 CA recognises as its own) with different "accounturi" parameters, the 114 CA MUST consider the CAA record set to authorize issuance if and only 115 if at least one of the specified account URIs identifies the account 116 of the CA by which issuance is requested. 118 A property without an "accounturi" parameter matches any account. A 119 property with an invalid or unrecognised "accounturi" parameter is 120 unsatisfiable. A property with multiple "accounturi" parameters is 121 unsatisfiable. 123 The presence of an "accounturi" parameter does not replace or 124 supercede the need to validate the domain name specified in an 125 "issue" or "issuewild" record in the manner described in the CAA 126 specification. CAs MUST still perform such validation. For example, 127 a CAA "issue" property which specifies a domain name belonging to CA 128 A and an "accounturi" parameter identifying an account at CA B is 129 unsatisfiable. 131 3.1. Use with ACME 133 An ACME [I-D.ietf-acme-acme] account object MAY be identified by 134 setting the "accounturi" parameter to the URI of the ACME account 135 object. 137 Implementations of this specification which also implement ACME MUST 138 recognise such URIs. 140 3.2. Use without ACME 142 The "accounturi" specification provides a general mechanism to 143 identify entities which may request certificate issuance via URIs. 144 The use of specific kinds of URI may be specified in future RFCs, and 145 CAs not implementing ACME MAY assign and recognise their own URIs 146 arbitrarily. 148 4. Extensions to the CAA Record: validationmethods Parameter 150 A CAA parameter "validationmethods" is also defined for the "issue" 151 and "issuewild" properties. The value of this parameter, if 152 specified, MUST be a comma-separated string of challenge method 153 names. Each challenge method name MUST be either an ACME challenge 154 method name or a CA-assigned non-ACME challenge method name. 156 The presence of this parameter constrains the property to which it is 157 attached. A CA MUST only consider a property with the 158 "validationmethods" parameter to authorize issuance where the name of 159 the challenge method being used is one of the names listed in the 160 comma-separated list. 162 Where a CA supports both the "validationmethods" parameter and one or 163 more non-ACME challenge methods, it MUST assign identifiers to those 164 methods. If appropriate non-ACME identifiers are not present in the 165 ACME Validation Methods IANA registry, the CA MUST use identifiers 166 beginning with the string "ca-", which are defined to have CA- 167 specific meaning. 169 5. Security Considerations 171 This specification describes an extension to the CAA record 172 specification increasing the granularity at which CAA policy can be 173 expressed. This allows the set of entities capable of successfully 174 requesting issuance of certificates for a given domain to be 175 restricted beyond that which would otherwise be possible, while still 176 allowing issuance for specific accounts of a CA. This improves the 177 security of issuance for domains which choose to employ it, when 178 combined with a CA which implements this specification. 180 5.1. Limited to CAs Processing CAA Records 182 All of the security considerations of the CAA specification are 183 inherited by this document. This specification merely enables a 184 domain with an existing relationship with a CA to further constrain 185 that CA in its issuance practices, where that CA implements this 186 specification. In particular, it provides no additional security 187 above that provided by use of the unextended CAA specification alone 188 as concerns matters relating to any other CA. The capacity of any 189 other CA to issue certificates for the given domain is completely 190 unchanged. 192 As such, a domain which via CAA records authorizes only CAs adopting 193 this specification, and which constrains its policy by means of this 194 specification, remains vulnerable to unauthorized issuance by CAs 195 which do not honour CAA records, or which honour them only on an 196 advisory basis. Where a domain uses DNSSEC, it also remains 197 vulnerable to CAs which honour CAA records but which do not validate 198 CAA records by means of a trusted DNSSEC-validating resolver. 200 5.2. Restrictions Ineffective without CA Recognition 202 The CAA parameters specified in this specification rely on their 203 being recognised by the CA named by an "issue" or "issuewild" CAA 204 property. As such, the parameters are not an effective means of 205 control over issuance unless a CA's support for the parameters is 206 established beforehand. 208 CAs which implement this specification SHOULD make available 209 documentation indicating as such, including explicit statements as to 210 which parameters are supported. Domains configuring CAA records for 211 a CA MUST NOT assume that the restrictions implied by the 212 "accounturi" and "validationmethods" parameters are effective in the 213 absence of explicit indication as such from that CA. 215 CAs SHOULD also document whether they implement DNSSEC validation for 216 DNS lookups done for validation purposes, as this affects the 217 security of the "accounturi" and "validationmethods" parameters. 219 5.3. Mandatory Consistency in CA Recognition 221 A CA MUST ensure that its support for the "accounturi" and 222 "validationmethods" parameters is fully consistent for a given domain 223 name which a CA recognises as identifying itself in a CAA "issue" or 224 "issuewild" property. If a CA has multiple issuance systems (for 225 example, an ACME-based issuance system and a non-ACME based issuance 226 system, or two different issuance systems resulting from a corporate 227 merger), it MUST ensure that all issuance systems recognise the same 228 parameters. 230 A CA which is unable to do this MAY still implement the parameters by 231 splitting the CA into two domain names for the purposes of CAA 232 processing. For example, a CA "example.com" with an ACME-based 233 issuance system and a non-ACME-based issuance system could recognise 234 only "acme.example.com" for the former and "example.com" for the 235 latter, and then implement support for the "accounturi" and 236 "validationmethods" parameters for "acme.example.com" only. 238 A CA which is unable to ensure consistent processing of the 239 "accounturi" or "validationmethods" parameters for a given CA domain 240 name as specifiable in CAA "issue" or "issuewild" properties MUST NOT 241 implement support for these parameters. Failure to do so will result 242 in an implementation of these parameters which does not provide 243 effective security. 245 5.4. URI Ambiguity 247 Suppose that CA A recognises "a.example.com" as identifying itself, 248 CA B is a subsidiary of CA A which recognises both "a.example.com" 249 and "b.example.com" as identifying itself. 251 Suppose that both CA A and CA B issue account URIs of the form 253 "account-id:1234" 255 If the CA domain name in a CAA record is specified as "a.example.com" 256 then this could be construed as identifying account number 1234 at CA 257 A or at CA B. These may be different accounts, creating ambiguity. 259 Thus, CAs MUST ensure that the URIs they recognise as pertaining to a 260 specific account of that CA are unique within the scope of all domain 261 names which they recognise as identifying that CA for the purpose of 262 CAA record validation. 264 CAs MUST satisfy this requirement by using URIs which include an 265 authority: 267 "https://a.example.com/account/1234" 269 5.5. Authorization Freshness 271 The CAA specification governs the act of issuance by a CA. In some 272 cases, a CA may establish authorization for an account to request 273 certificate issuance for a specific domain separately to the act of 274 issuance itself. Such authorization may occur substantially prior to 275 a certificate issuance request. The CAA policy expressed by a domain 276 may have changed in the meantime, creating the risk that a CA will 277 issue certificates in a manner inconsistent with the presently 278 published CAA policy. 280 CAs SHOULD adopt practices to reduce the risk of such circumstances. 281 Possible countermeasures include issuing authorizations with very 282 limited validity periods, such as an hour, or revalidating the CAA 283 policy for a domain at certificate issuance time. 285 5.6. Use with and without DNSSEC 287 Where a domain chooses to secure its nameservers using DNSSEC, the 288 authenticity of its DNS data can be assured, providing that a given 289 CA makes all DNS resolutions via an appropriate, trusted DNSSEC- 290 validating resolver. A domain can use this property to protect 291 itself from the threat posed by a global adversary capable of 292 performing man-in-the-middle attacks, which is not ordinarily 293 mitigated by the "domain validation" model. 295 In order to facilitate this, a CA validation process must either rely 296 solely on information obtained via DNSSEC, or meaningfully bind the 297 other parts of the validation transaction using material obtained via 298 DNSSEC. 300 The CAA parameters described in this specification can be used to 301 ensure that only validation methods meeting these criteria are used. 302 In particular, a domain secured via DNSSEC SHOULD either: 304 1. Use the "accounturi" parameter to ensure that only accounts which 305 it controls are authorized to obtain certificates, or 307 2. Exclusively use validation methods which rely solely on 308 information obtained via DNSSEC, and use the "validationmethods" 309 parameter to ensure that only such methods are used. 311 Use of the "accounturi" or "validationmethods" parameters does not 312 confer additional security against an attacker capable of performing 313 a man-in-the-middle attack against all validation attempts made by a 314 given CA which is authorized by CAA where: 316 1. A domain does not secure its nameservers using DNSSEC, or 318 2. That CA does not perform CAA validation using a trusted DNSSEC- 319 validating resolver. 321 Moreover, use of the "accounturi" or "validationmethods" parameters 322 does not mitigate against man-in-the-middle attacks against CAs which 323 do not validate CAA records, or which do not do so using a trusted 324 DNSSEC-validating resolver, regardless of whether those CAs are 325 authorized by CAA or not; see Section 5.1. 327 In these cases, the "accounturi" and "validationmethods" parameters 328 still provide an effective means of administrative control over 329 issuance, except where control over DNS is subdelegated (see below). 331 5.7. Restrictions Supercedable by DNS Delegation 333 Because CAA records are located during validation by walking up the 334 DNS hierarchy until one or more records are found, the use of the 335 "accounturi" and "validationmethods" parameters, or any CAA policy, 336 is not an effective way to restrict or control issuance for 337 subdomains of a domain, where control over those subdomains is 338 delegated to another party (such as via DNS delegation or by 339 providing limited access to manage subdomain DNS records). 341 5.8. Misconfiguration Hazards 343 Because they express a restrictive security policy, misconfiguration 344 of the "accounturi" or "validationmethods" parameters may result in 345 legitimate issuance requests being refused. 347 6. IANA Considerations 349 None. As per the CAA specification, the parameter namespace for the 350 CAA "issue" and "issuewild" properties has CA-defined semantics. 351 This document merely specifies a RECOMMENDED semantic for parameters 352 of the names "accounturi" and "validationmethods". 354 7. Normative References 356 [I-D.ietf-acme-acme] 357 Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. 358 Kasten, "Automatic Certificate Management Environment 359 (ACME)", draft-ietf-acme-acme-18 (work in progress), 360 December 2018. 362 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 363 Requirement Levels", BCP 14, RFC 2119, 364 DOI 10.17487/RFC2119, March 1997, 365 . 367 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 368 Resource Identifier (URI): Generic Syntax", STD 66, 369 RFC 3986, DOI 10.17487/RFC3986, January 2005, 370 . 372 [RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification 373 Authority Authorization (CAA) Resource Record", RFC 6844, 374 DOI 10.17487/RFC6844, January 2013, 375 . 377 Appendix A. Examples 379 The following shows an example DNS zone file fragment which nominates 380 two account URIs as authorized to issue certificates for the domain 381 "example.com". Issuance is restricted to the CA "example.net". 383 example.com. IN CAA 0 issue "example.net; \ 384 accounturi=https://example.net/account/1234" 385 example.com. IN CAA 0 issue "example.net; \ 386 accounturi=https://example.net/account/2345" 388 The following shows a zone file fragment which restricts the ACME 389 methods which can be used; only ACME methods "dns-01" and "xyz-01" 390 can be used. 392 example.com. IN CAA 0 issue "example.net; \ 393 validationmethods=dns-01,xyz-01" 395 The following shows an equivalent way of expressing the same 396 restriction: 398 example.com. IN CAA 0 issue "example.net; validationmethods=dns-01" 399 example.com. IN CAA 0 issue "example.net; validationmethods=xyz-01" 401 The following shows a zone file fragment in which one account can be 402 used to issue with the "dns-01" method and one account can be used to 403 issue with the "http-01" method. 405 example.com. IN CAA 0 issue "example.net; \ 406 accounturi=https://example.net/account/1234; \ 407 validationmethods=dns-01" 408 example.com. IN CAA 0 issue "example.net; \ 409 accounturi=https://example.net/account/2345; \ 410 validationmethods=http-01" 412 The following shows a zone file fragment in which only ACME method 413 "dns-01" can be used, but non-ACME methods of issuance are also 414 allowed. 416 example.com. IN CAA 0 issue "example.net; \ 417 validationmethods=dns-01,non-acme" 419 Author's Address 421 Hugo Landau 423 Email: hlandau@devever.net