idnits 2.17.1 draft-ietf-acme-caa-08.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 (May 31, 2019) is 1791 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 May 31, 2019 4 Intended status: Standards Track 5 Expires: December 2, 2019 7 CAA Record Extensions for Account URI and ACME Method Binding 8 draft-ietf-acme-caa-08 10 Abstract 12 The Certification Authority Authorization (CAA) DNS record allows a 13 domain to communicate issuance policy to Certification Authorities 14 (CAs), but only allows a domain to define policy with CA-level 15 granularity. However, the CAA specification also provides facilities 16 for extension to admit more granular, CA-specific policy. This 17 specification defines two such parameters, one allowing specific 18 accounts of a CA to be identified by URI and one allowing specific 19 methods of domain control validation as defined by the ACME protocol 20 to be required. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on December 2, 2019. 39 Copyright Notice 41 Copyright (c) 2019 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (https://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 57 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 58 3. Extensions to the CAA Record: accounturi Parameter . . . . . 3 59 3.1. Use with ACME . . . . . . . . . . . . . . . . . . . . . . 3 60 3.2. Use without ACME . . . . . . . . . . . . . . . . . . . . 3 61 4. Extensions to the CAA Record: validationmethods Parameter . . 4 62 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 63 5.1. Limited to CAs Processing CAA Records . . . . . . . . . . 4 64 5.2. Restrictions Ineffective without CA Recognition . . . . . 5 65 5.3. Mandatory Consistency in CA Recognition . . . . . . . . . 5 66 5.4. URI Ambiguity . . . . . . . . . . . . . . . . . . . . . . 6 67 5.5. Authorization Freshness . . . . . . . . . . . . . . . . . 6 68 5.6. Use with and without DNSSEC . . . . . . . . . . . . . . . 6 69 5.7. Restrictions Supercedable by DNS Delegation . . . . . . . 8 70 5.8. Misconfiguration Hazards . . . . . . . . . . . . . . . . 8 71 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 72 7. Normative References . . . . . . . . . . . . . . . . . . . . 8 73 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 9 74 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 76 1. Introduction 78 This specification defines two parameters for the "issue" and 79 "issuewild" properties of the Certification Authority Authorization 80 (CAA) DNS resource record [RFC6844]. The first, "accounturi", allows 81 authorization conferred by a CAA policy to be restricted to specific 82 accounts of a CA, which are identified by URIs. The second, 83 "validationmethods", allows the set of validation methods supported 84 by a CA to validate domain control to be limited to a subset of the 85 full set of methods which it supports. 87 2. Terminology 89 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 90 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT 91 RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as 92 described in BCP 14 [RFC2119] [RFC8174] when, and only when, they 93 appear in all capitals, as shown here. 95 3. Extensions to the CAA Record: accounturi Parameter 97 A CAA parameter "accounturi" is defined for the "issue" and 98 "issuewild" properties defined by [RFC6844]. The value of this 99 parameter, if specified, MUST be a URI [RFC3986] identifying a 100 specific CA account. 102 "CA account" means an object, maintained by a specific CA and which 103 may request the issuance of certificates, which represents a specific 104 entity or group of related entities. 106 The presence of this parameter constrains the property to which it is 107 attached. Where a CAA property has an "accounturi" parameter, a CA 108 MUST only consider that property to authorize issuance in the context 109 of a given certificate issuance request if the CA recognises the URI 110 specified as identifying the account making that request. 112 A property without an "accounturi" parameter matches any account. A 113 property with an invalid or unrecognised "accounturi" parameter is 114 unsatisfiable. A property with multiple "accounturi" parameters is 115 unsatisfiable. 117 The presence of an "accounturi" parameter does not replace or 118 supercede the need to validate the domain name specified in an 119 "issue" or "issuewild" record in the manner described in the CAA 120 specification. CAs MUST still perform such validation. For example, 121 a CAA "issue" property which specifies a domain name belonging to CA 122 A and an "accounturi" parameter identifying an account at CA B is 123 unsatisfiable. 125 3.1. Use with ACME 127 An ACME [I-D.ietf-acme-acme] account object MAY be identified by 128 setting the "accounturi" parameter to the URI of the ACME account 129 object. 131 Implementations of this specification which also implement ACME MUST 132 recognise such URIs. 134 3.2. Use without ACME 136 The "accounturi" specification provides a general mechanism to 137 identify entities which may request certificate issuance via URIs. 138 The use of specific kinds of URI may be specified in future RFCs, and 139 CAs not implementing ACME MAY assign and recognise their own URIs 140 arbitrarily. 142 4. Extensions to the CAA Record: validationmethods Parameter 144 A CAA parameter "validationmethods" is also defined for the "issue" 145 and "issuewild" properties. The value of this parameter, if 146 specified, MUST be a comma-separated string of challenge method 147 names. Each challenge method name MUST be either an ACME challenge 148 method name or a CA-assigned non-ACME challenge method name. 150 The presence of this parameter constrains the property to which it is 151 attached. A CA MUST only consider a property with the 152 "validationmethods" parameter to authorize issuance where the name of 153 the challenge method being used is one of the names listed in the 154 comma-separated list. 156 Where a CA supports both the "validationmethods" parameter and one or 157 more non-ACME challenge methods, it MUST assign identifiers to those 158 methods. If appropriate non-ACME identifiers are not present in the 159 ACME Validation Methods IANA registry, the CA MUST use identifiers 160 beginning with the string "ca-", which are defined to have CA- 161 specific meaning. 163 5. Security Considerations 165 This specification describes an extension to the CAA record 166 specification increasing the granularity at which CAA policy can be 167 expressed. This allows the set of entities capable of successfully 168 requesting issuance of certificates for a given domain to be 169 restricted beyond that which would otherwise be possible, while still 170 allowing issuance for specific accounts of a CA. This improves the 171 security of issuance for domains which choose to employ it, when 172 combined with a CA which implements this specification. 174 5.1. Limited to CAs Processing CAA Records 176 All of the security considerations of the CAA specification are 177 inherited by this document. This specification merely enables a 178 domain with an existing relationship with a CA to further constrain 179 that CA in its issuance practices, where that CA implements this 180 specification. In particular, it provides no additional security 181 above that provided by use of the unextended CAA specification alone 182 as concerns matters relating to any other CA. The capacity of any 183 other CA to issue certificates for the given domain is completely 184 unchanged. 186 As such, a domain which via CAA records authorizes only CAs adopting 187 this specification, and which constrains its policy by means of this 188 specification, remains vulnerable to unauthorized issuance by CAs 189 which do not honour CAA records, or which honour them only on an 190 advisory basis. Where a domain uses DNSSEC, it also remains 191 vulnerable to CAs which honour CAA records but which do not validate 192 CAA records by means of a trusted DNSSEC-validating resolver. 194 5.2. Restrictions Ineffective without CA Recognition 196 The CAA parameters specified in this specification rely on their 197 being recognised by the CA named by an "issue" or "issuewild" CAA 198 property. As such, the parameters are not an effective means of 199 control over issuance unless a CA's support for the parameters is 200 established beforehand. 202 CAs which implement this specification SHOULD make available 203 documentation indicating as such, including explicit statements as to 204 which parameters are supported. Domains configuring CAA records for 205 a CA MUST NOT assume that the restrictions implied by the 206 "accounturi" and "validationmethods" parameters are effective in the 207 absence of explicit indication as such from that CA. 209 CAs SHOULD also document whether they implement DNSSEC validation for 210 DNS lookups done for validation purposes, as this affects the 211 security of the "accounturi" and "validationmethods" parameters. 213 5.3. Mandatory Consistency in CA Recognition 215 A CA MUST ensure that its support for the "accounturi" and 216 "validationmethods" parameters is fully consistent for a given domain 217 name which a CA recognises as identifying itself in a CAA "issue" or 218 "issuewild" property. If a CA has multiple issuance systems (for 219 example, an ACME-based issuance system and a non-ACME based issuance 220 system, or two different issuance systems resulting from a corporate 221 merger), it MUST ensure that all issuance systems recognise the same 222 parameters. 224 A CA which is unable to do this MAY still implement the parameters by 225 splitting the CA into two domain names for the purposes of CAA 226 processing. For example, a CA "example.com" with an ACME-based 227 issuance system and a non-ACME-based issuance system could recognise 228 only "acme.example.com" for the former and "example.com" for the 229 latter, and then implement support for the "accounturi" and 230 "validationmethods" parameters for "acme.example.com" only. 232 A CA which is unable to ensure consistent processing of the 233 "accounturi" or "validationmethods" parameters for a given CA domain 234 name as specifiable in CAA "issue" or "issuewild" properties MUST NOT 235 implement support for these parameters. Failure to do so would 236 result in an implementation of these parameters which does not 237 provide effective security. 239 5.4. URI Ambiguity 241 Suppose that CA A recognises "a.example.com" as identifying itself, 242 CA B is a subsidiary of CA A which recognises both "a.example.com" 243 and "b.example.com" as identifying itself. 245 Suppose that both CA A and CA B issue account URIs of the form 247 "urn:example:account-id:1234" 249 If the CA domain name in a CAA record is specified as "a.example.com" 250 then this could be construed as identifying account number 1234 at CA 251 A or at CA B. These may be different accounts, creating ambiguity. 253 Thus, CAs MUST ensure that the URIs they recognise as pertaining to a 254 specific account of that CA are unique within the scope of all domain 255 names which they recognise as identifying that CA for the purpose of 256 CAA record validation. 258 CAs SHOULD satisfy this requirement by using URIs which include an 259 authority (see Section 3.2 of [RFC3986]): 261 "https://a.example.com/account/1234" 263 5.5. Authorization Freshness 265 The CAA specification governs the act of issuance by a CA. In some 266 cases, a CA may establish authorization for an account to request 267 certificate issuance for a specific domain separately to the act of 268 issuance itself. Such authorization may occur substantially prior to 269 a certificate issuance request. The CAA policy expressed by a domain 270 may have changed in the meantime, creating the risk that a CA will 271 issue certificates in a manner inconsistent with the presently 272 published CAA policy. 274 CAs SHOULD adopt practices to reduce the risk of such circumstances. 275 Possible countermeasures include issuing authorizations with very 276 limited validity periods, such as an hour, or revalidating the CAA 277 policy for a domain at certificate issuance time. 279 5.6. Use with and without DNSSEC 281 The "domain validation" model of validation commonly used for 282 certificate issuance cannot ordinarily protect against adversaries 283 who can conduct global man-in-the-middle attacks against a particular 284 domain. A global man-in-the-middle attack is an attack which can 285 intercept traffic to or from a given domain, regardless of the origin 286 or destination of that traffic. Such an adversary can intercept all 287 validation traffic initiated by a CA and thus appear to have control 288 of the given domain. 290 Where a domain is signed using DNSSEC, the authenticity of its DNS 291 data can be assured, providing that a given CA makes all DNS 292 resolutions via a trusted DNSSEC-validating resolver. A domain can 293 use this property to protect itself from the threat posed by an 294 adversary capable of performing a global man-in-the-middle attack 295 against that domain. 297 In order to facilitate this, a CA validation process must either rely 298 solely on information obtained via DNSSEC, or meaningfully bind the 299 other parts of the validation transaction using material obtained via 300 DNSSEC. 302 The CAA parameters described in this specification can be used to 303 ensure that only validation methods meeting these criteria are used. 304 In particular, a domain secured via DNSSEC SHOULD either: 306 1. Use the "accounturi" parameter to ensure that only accounts which 307 it controls are authorized to obtain certificates, or 309 2. Exclusively use validation methods which rely solely on 310 information obtained via DNSSEC, and use the "validationmethods" 311 parameter to ensure that only such methods are used. 313 A CA supporting the "accounturi" or "validationmethods" parameters 314 MUST perform CAA validation using a trusted, DNSSEC-validating 315 resolver. 317 "Trusted" in this context means that the CA both trusts the resolver 318 itself and ensures that the communications path between the resolver 319 and the system performing CAA validation are secure. It is 320 RECOMMENDED that a CA ensure this by using a DNSSEC-validating 321 resolver running on the same machine as the system performing CAA 322 validation. 324 Use of the "accounturi" or "validationmethods" parameters does not 325 confer additional security against an attacker capable of performing 326 a man-in-the-middle attack against all validation attempts made by a 327 given CA which is authorized by CAA where: 329 1. A domain does not secure its nameservers using DNSSEC, or 331 2. That CA does not perform CAA validation using a trusted DNSSEC- 332 validating resolver. 334 Moreover, use of the "accounturi" or "validationmethods" parameters 335 does not mitigate against man-in-the-middle attacks against CAs which 336 do not validate CAA records, or which do not do so using a trusted 337 DNSSEC-validating resolver, regardless of whether those CAs are 338 authorized by CAA or not; see Section 5.1. 340 In these cases, the "accounturi" and "validationmethods" parameters 341 still provide an effective means of administrative control over 342 issuance, except where control over DNS is subdelegated (see below). 344 5.7. Restrictions Supercedable by DNS Delegation 346 CAA records are located during validation by walking up the DNS 347 hierarchy until one or more records are found. CAA records are 348 therefore not an effective way of restricting or controlling issuance 349 for subdomains of a domain, where control over those subdomains is 350 delegated to another party (such as via DNS delegation or by 351 providing limited access to manage subdomain DNS records). 353 5.8. Misconfiguration Hazards 355 Because the "accounturi" and "validationmethods" parameters express 356 restrictive security policies, misconfiguration of said parameters 357 may result in legitimate issuance requests being refused. 359 6. IANA Considerations 361 None. As per the CAA specification, the parameter namespace for the 362 CAA "issue" and "issuewild" properties has CA-defined semantics and 363 the identifiers within that namespace may be freely and arbitrarily 364 assigned by a CA. This document merely specifies recommended 365 semantics for parameters of the names "accounturi" and 366 "validationmethods", which CAs may choose to adopt. 368 7. Normative References 370 [I-D.ietf-acme-acme] 371 Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. 372 Kasten, "Automatic Certificate Management Environment 373 (ACME)", draft-ietf-acme-acme-18 (work in progress), 374 December 2018. 376 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 377 Requirement Levels", BCP 14, RFC 2119, 378 DOI 10.17487/RFC2119, March 1997, 379 . 381 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 382 Resource Identifier (URI): Generic Syntax", STD 66, 383 RFC 3986, DOI 10.17487/RFC3986, January 2005, 384 . 386 [RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification 387 Authority Authorization (CAA) Resource Record", RFC 6844, 388 DOI 10.17487/RFC6844, January 2013, 389 . 391 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 392 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 393 May 2017, . 395 Appendix A. Examples 397 The following shows an example DNS zone file fragment which nominates 398 two account URIs as authorized to issue certificates for the domain 399 "example.com". Issuance is restricted to the CA "example.net". 401 example.com. IN CAA 0 issue "example.net; \ 402 accounturi=https://example.net/account/1234" 403 example.com. IN CAA 0 issue "example.net; \ 404 accounturi=https://example.net/account/2345" 406 The following shows a zone file fragment which restricts the ACME 407 methods which can be used; only ACME methods "dns-01" and "xyz-01" 408 can be used. 410 example.com. IN CAA 0 issue "example.net; \ 411 validationmethods=dns-01,xyz-01" 413 The following shows an equivalent way of expressing the same 414 restriction: 416 example.com. IN CAA 0 issue "example.net; validationmethods=dns-01" 417 example.com. IN CAA 0 issue "example.net; validationmethods=xyz-01" 419 The following shows a zone file fragment in which one account can be 420 used to issue with the "dns-01" method and one account can be used to 421 issue with the "http-01" method. 423 example.com. IN CAA 0 issue "example.net; \ 424 accounturi=https://example.net/account/1234; \ 425 validationmethods=dns-01" 426 example.com. IN CAA 0 issue "example.net; \ 427 accounturi=https://example.net/account/2345; \ 428 validationmethods=http-01" 430 The following shows a zone file fragment in which only ACME method 431 "dns-01" or a CA-specific method "ca-foo" can be used. 433 example.com. IN CAA 0 issue "example.net; \ 434 validationmethods=dns-01,ca-foo" 436 Author's Address 438 Hugo Landau 440 Email: hlandau@devever.net