idnits 2.17.1 draft-ietf-lamps-rfc6844bis-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 : ---------------------------------------------------------------------------- == The 'Obsoletes: ' line in the draft header should list only the _numbers_ of the RFCs which will be obsoleted by this document (if approved); it should not include the word 'RFC' in the list. -- The draft header indicates that this document obsoletes RFC6844, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 10, 2018) is 2025 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) == Missing Reference: 'STD13' is mentioned on line 194, but not defined ** Downref: Normative reference to an Informational RFC: RFC 3647 ** Obsolete normative reference: RFC 5070 (Obsoleted by RFC 7970) ** Obsolete normative reference: RFC 5226 (Obsoleted by RFC 8126) ** Obsolete normative reference: RFC 6844 (Obsoleted by RFC 8659) Summary: 4 errors (**), 0 flaws (~~), 3 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group P. Hallam-Baker 3 Internet-Draft R. Stradling 4 Obsoletes: RFC 6844 (if approved) Comodo Group, Inc 5 Intended status: Standards Track J. Hoffman-Andrews 6 Expires: April 13, 2019 Let's Encrypt 7 October 10, 2018 9 DNS Certification Authority Authorization (CAA) Resource Record 10 draft-ietf-lamps-rfc6844bis-01 12 Abstract 14 The Certification Authority Authorization (CAA) DNS Resource Record 15 allows a DNS domain name holder to specify one or more Certification 16 Authorities (CAs) authorized to issue certificates for that domain. 17 CAA Resource Records allow a public Certification Authority to 18 implement additional controls to reduce the risk of unintended 19 certificate mis-issue. This document defines the syntax of the CAA 20 record and rules for processing CAA records by certificate issuers. 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 April 13, 2019. 39 Copyright Notice 41 Copyright (c) 2018 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. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 59 2.2. Defined Terms . . . . . . . . . . . . . . . . . . . . . . 4 60 3. The CAA RR Type . . . . . . . . . . . . . . . . . . . . . . . 5 61 4. Certification Authority Processing . . . . . . . . . . . . . 7 62 4.1. Use of DNS Security . . . . . . . . . . . . . . . . . . . 8 63 5. Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 9 64 5.1. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 9 65 5.1.1. Canonical Presentation Format . . . . . . . . . . . . 10 66 5.2. CAA issue Property . . . . . . . . . . . . . . . . . . . 10 67 5.3. CAA issuewild Property . . . . . . . . . . . . . . . . . 12 68 5.4. CAA iodef Property . . . . . . . . . . . . . . . . . . . 12 69 6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 70 6.1. Non-Compliance by Certification Authority . . . . . . . . 13 71 6.2. Mis-Issue by Authorized Certification Authority . . . . . 13 72 6.3. Suppression or Spoofing of CAA Records . . . . . . . . . 14 73 6.4. Denial of Service . . . . . . . . . . . . . . . . . . . . 14 74 6.5. Abuse of the Critical Flag . . . . . . . . . . . . . . . 14 75 7. Deployment Considerations . . . . . . . . . . . . . . . . . . 14 76 7.1. Blocked Queries or Responses . . . . . . . . . . . . . . 15 77 7.2. Rejected Queries and Malformed Responses . . . . . . . . 15 78 7.3. Delegation to Private Nameservers . . . . . . . . . . . . 15 79 7.4. Bogus DNSSEC Responses . . . . . . . . . . . . . . . . . 15 80 8. Differences versus RFC6844 . . . . . . . . . . . . . . . . . 16 81 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 82 9.1. Certification Authority Restriction Flags . . . . . . . . 16 83 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 84 11. Normative References . . . . . . . . . . . . . . . . . . . . 17 85 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 87 1. Introduction 89 The Certification Authority Authorization (CAA) DNS Resource Record 90 allows a DNS domain name holder to specify the Certification 91 Authorities (CAs) authorized to issue certificates for that domain. 92 Publication of CAA Resource Records allows a public Certification 93 Authority to implement additional controls to reduce the risk of 94 unintended certificate mis-issue. 96 Like the TLSA record defined in DNS-Based Authentication of Named 97 Entities (DANE) [RFC6698], CAA records are used as a part of a 98 mechanism for checking PKIX certificate data. The distinction 99 between the two specifications is that CAA records specify an 100 authorization control to be performed by a certificate issuer before 101 issue of a certificate and TLSA records specify a verification 102 control to be performed by a relying party after the certificate is 103 issued. 105 Conformance with a published CAA record is a necessary but not 106 sufficient condition for issuance of a certificate. Before issuing a 107 certificate, a PKIX CA is required to validate the request according 108 to the policies set out in its Certificate Policy. In the case of a 109 public CA that validates certificate requests as a third party, the 110 certificate will typically be issued under a public trust anchor 111 certificate embedded in one or more relevant Relying Applications. 113 Criteria for inclusion of embedded trust anchor certificates in 114 applications are outside the scope of this document. Typically, such 115 criteria require the CA to publish a Certificate Practices Statement 116 (CPS) that specifies how the requirements of the Certificate Policy 117 (CP) are achieved. It is also common for a CA to engage an 118 independent third-party auditor to prepare an annual audit statement 119 of its performance against its CPS. 121 A set of CAA records describes only current grants of authority to 122 issue certificates for the corresponding DNS domain. Since a 123 certificate is typically valid for at least a year, it is possible 124 that a certificate that is not conformant with the CAA records 125 currently published was conformant with the CAA records published at 126 the time that the certificate was issued. Relying Applications MUST 127 NOT use CAA records as part of certificate validation. 129 CAA records MAY be used by Certificate Evaluators as a possible 130 indicator of a security policy violation. Such use SHOULD take 131 account of the possibility that published CAA records changed between 132 the time a certificate was issued and the time at which the 133 certificate was observed by the Certificate Evaluator. 135 2. Definitions 137 2.1. Requirements Language 139 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 140 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 141 document are to be interpreted as described in [RFC2119]. 143 2.2. Defined Terms 145 The following terms are used in this document: 147 Authorization Entry: An authorization assertion that grants or denies 148 a specific set of permissions to a specific group of entities. 150 Certificate: An X.509 Certificate, as specified in [RFC5280]. 152 Certificate Evaluator: A party other than a relying party that 153 evaluates the trustworthiness of certificates issued by Certification 154 Authorities. 156 Certification Authority (CA): An issuer that issues certificates in 157 accordance with a specified Certificate Policy. 159 Certificate Policy (CP): Specifies the criteria that a Certification 160 Authority undertakes to meet in its issue of certificates. See 161 [RFC3647]. 163 Certification Practices Statement (CPS): Specifies the means by which 164 the criteria of the Certificate Policy are met. In most cases, this 165 will be the document against which the operations of the 166 Certification Authority are audited. See [RFC3647]. 168 Domain: A DNS Domain Name. 170 Domain Name: A DNS Domain Name as specified in [STD13]. 172 Domain Name System (DNS): The Internet naming system specified in 173 [STD13]. 175 DNS Security (DNSSEC): Extensions to the DNS that provide 176 authentication services as specified in RFC4033, RFC4034, RFC4035, 177 RFC5155, and revisions. 179 Issuer: An entity that issues certificates. See [RFC5280]. 181 Property: The tag-value portion of a CAA Resource Record. 183 Property Tag: The tag portion of a CAA Resource Record. 185 Property Value: The value portion of a CAA Resource Record. 187 Public Key Infrastructure X.509 (PKIX): Standards and specifications 188 issued by the IETF that apply the [X.509] certificate standards 189 specified by the ITU to Internet applications as specified in 190 [RFC5280] and related documents. 192 Resource Record (RR): A particular entry in the DNS including the 193 owner name, class, type, time to live, and data, as defined in 194 [STD13] and [RFC2181]. 196 Resource Record Set (RRSet): A set of Resource Records or a 197 particular owner name, class, and type. The time to live on all RRs 198 with an RRSet is always the same, but the data may be different among 199 RRs in the RRSet. 201 Relying Party: A party that makes use of an application whose 202 operation depends on use of a certificate for making a security 203 decision. See [RFC5280]. 205 Relying Application: An application whose operation depends on use of 206 a certificate for making a security decision. 208 3. The CAA RR Type 210 A CAA RR consists of a flags byte and a tag-value pair referred to as 211 a property. Multiple properties MAY be associated with the same 212 domain name by publishing multiple CAA RRs at that domain name. The 213 following flag is defined: 215 Issuer Critical: If set to '1', indicates that the corresponding 216 property tag MUST be understood if the semantics of the CAA record 217 are to be correctly interpreted by an issuer. 219 Issuers MUST NOT issue certificates for a domain if the relevant CAA 220 Resource Record set contains unknown property tags that have the 221 Critical bit set. 223 The following property tags are defined: 225 issue [; = ]* : The issue property 226 entry authorizes the holder of the domain name 227 or a party acting under the explicit authority of the holder of that 228 domain name to issue certificates for the domain in which the 229 property is published. 231 issuewild [; = ]* : The issuewild 232 property entry authorizes the holder of the domain name or a party acting under the explicit authority of the 234 holder of that domain name to issue wildcard certificates for the 235 domain in which the property is published. 237 iodef : Specifies a URL to which an issuer MAY report 238 certificate issue requests that are inconsistent with the issuer's 239 Certification Practices or Certificate Policy, or that a Certificate 240 Evaluator may use to report observation of a possible policy 241 violation. The Incident Object Description Exchange Format (IODEF) 242 format is used [RFC5070]. 244 The following example is a DNS zone file (see [RFC1035]) that informs 245 CAs that certificates are not to be issued except by the holder of 246 the domain name 'ca.example.net' or an authorized agent thereof. 247 This policy applies to all subordinate domains under example.com. 249 $ORIGIN example.com 250 . CAA 0 issue "ca.example.net" 252 If the domain name holder specifies one or more iodef properties, a 253 certificate issuer MAY report invalid certificate requests to that 254 address. In the following example, the domain name holder specifies 255 that reports may be made by means of email with the IODEF data as an 256 attachment, a Web service [RFC6546], or both: 258 $ORIGIN example.com 259 . CAA 0 issue "ca.example.net" 260 . CAA 0 iodef "mailto:security@example.com" 261 . CAA 0 iodef "http://iodef.example.com/" 263 A certificate issuer MAY specify additional parameters that allow 264 customers to specify additional parameters governing certificate 265 issuance. This might be the Certificate Policy under which the 266 certificate is to be issued, the authentication process to be used 267 might be specified, or an account number specified by the CA to 268 enable these parameters to be retrieved. 270 For example, the CA 'ca.example.net' has requested its customer 271 'example.com' to specify the CA's account number '230123' in each of 272 the customer's CAA records. 274 $ORIGIN example.com 275 . CAA 0 issue "ca.example.net; account=230123" 277 The syntax of additional parameters is a sequence of name-value pairs 278 as defined in Section 5.2. The semantics of such parameters is left 279 to site policy and is outside the scope of this document. 281 The critical flag is intended to permit future versions of CAA to 282 introduce new semantics that MUST be understood for correct 283 processing of the record, preventing conforming CAs that do not 284 recognize the new semantics from issuing certificates for the 285 indicated domains. 287 In the following example, the property 'tbs' is flagged as critical. 288 Neither the example.net CA nor any other issuer is authorized to 289 issue under either policy unless the processing rules for the 'tbs' 290 property tag are understood. 292 $ORIGIN example.com 293 . CAA 0 issue "ca.example.net; policy=ev" 294 . CAA 128 tbs "Unknown" 296 Note that the above restrictions only apply at certificate issue. 297 Since the validity of an end entity certificate is typically a year 298 or more, it is quite possible that the CAA records published at a 299 domain will change between the time a certificate was issued and 300 validation by a relying party. 302 4. Certification Authority Processing 304 Before issuing a certificate, a compliant CA MUST check for 305 publication of a relevant CAA Resource Record set. If such a record 306 set exists, a CA MUST NOT issue a certificate unless the CA 307 determines that either (1) the certificate request is consistent with 308 the applicable CAA Resource Record set or (2) an exception specified 309 in the relevant Certificate Policy or Certification Practices 310 Statement applies. 312 A certificate request MAY specify more than one domain name and MAY 313 specify wildcard domains. Issuers MUST verify authorization for all 314 the domains and wildcard domains specified in the request. 316 The search for a CAA record climbs the DNS name tree from the 317 specified label up to but not including the DNS root '.' until CAA 318 records are found. 320 Given a request for a specific domain name X, or a request for a 321 wildcard domain name *.X, the relevant record set RelevantCAASet(X) 322 is determined as follows: 324 Let CAA(X) be the record set returned by performing a CAA record 325 query for the domain name X, according to the lookup algorithm 326 specified in RFC 1034 section 4.3.2 (in particular chasing aliases). 327 Let Parent(X) be the domain name produced by removing the leftmost 328 label of X. 330 RelevantCAASet(domain): 331 for domain is not ".": 332 if CAA(domain) is not Empty: 333 return CAA(domain) 334 domain = Parent(domain) 335 return Empty 337 For example, processing CAA for the domain name "X.Y.Z" where there 338 are no CAA records at any level in the tree RelevantCAASet would have 339 the following steps: 341 CAA("X.Y.Z.") = Empty; domain = Parent("X.Y.Z.") = "Y.Z." 342 CAA("Y.Z.") = Empty; domain = Parent("Y.Z.") = "Z." 343 CAA("Z.") = Empty; domain = Parent("Z.") = "." 344 return Empty 346 Processing CAA for the domain name "A.B.C" where there is a CAA 347 record "issue example.com" at "B.C" would terminate early upon 348 finding the CAA record: 350 CAA("A.B.C.") = Empty; domain = Parent("A.B.C.") = "B.C." 351 CAA("B.C.") = "issue example.com" 352 return "issue example.com" 354 4.1. Use of DNS Security 356 Use of DNSSEC to authenticate CAA RRs is strongly RECOMMENDED but not 357 required. An issuer MUST NOT issue certificates if doing so would 358 conflict with the relevant CAA Resource Record set, irrespective of 359 whether the corresponding DNS records are signed. 361 DNSSEC provides a proof of non-existence for both DNS domains and RR 362 set within domains. DNSSEC verification thus enables an issuer to 363 determine if the answer to a CAA record query is empty because the RR 364 set is empty or if it is non-empty but the response has been 365 suppressed. 367 Use of DNSSEC allows an issuer to acquire and archive a proof that 368 they were authorized to issue certificates for the domain. 369 Verification of such archives MAY be an audit requirement to verify 370 CAA record processing compliance. Publication of such archives MAY 371 be a transparency requirement to verify CAA record processing 372 compliance. 374 5. Mechanism 376 5.1. Syntax 378 A CAA RR contains a single property entry consisting of a tag-value 379 pair. Each tag represents a property of the CAA record. The value 380 of a CAA property is that specified in the corresponding value field. 382 A domain name MAY have multiple CAA RRs associated with it and a 383 given property MAY be specified more than once. 385 The CAA data field contains one property entry. A property entry 386 consists of the following data fields: 388 +0-1-2-3-4-5-6-7-|0-1-2-3-4-5-6-7-| 389 | Flags | Tag Length = n | 390 +----------------|----------------+...+---------------+ 391 | Tag char 0 | Tag char 1 |...| Tag char n-1 | 392 +----------------|----------------+...+---------------+ 393 +----------------|----------------+.....+----------------+ 394 | Value byte 0 | Value byte 1 |.....| Value byte m-1 | 395 +----------------|----------------+.....+----------------+ 397 Where n is the length specified in the Tag length field and m is the 398 remaining octets in the Value field (m = d - n - 2) where d is the 399 length of the RDATA section. 401 The data fields are defined as follows: 403 Flags: One octet containing the following fields: 405 Bit 0, Issuer Critical Flag: If the value is set to '1', the critical 406 flag is asserted and the property MUST be understood if the CAA 407 record is to be correctly processed by a certificate issuer. 409 A Certification Authority MUST NOT issue certificates for any Domain 410 that contains a CAA critical property for an unknown or unsupported 411 property tag that for which the issuer critical flag is set. 413 Note that according to the conventions set out in [RFC1035], bit 0 is 414 the Most Significant Bit and bit 7 is the Least Significant Bit. 415 Thus, the Flags value 1 means that bit 7 is set while a value of 128 416 means that bit 0 is set according to this convention. 418 All other bit positions are reserved for future use. 420 To ensure compatibility with future extensions to CAA, DNS records 421 compliant with this version of the CAA specification MUST clear (set 422 to "0") all reserved flags bits. Applications that interpret CAA 423 records MUST ignore the value of all reserved flag bits. 425 Tag Length: A single octet containing an unsigned integer specifying 426 the tag length in octets. The tag length MUST be at least 1 and 427 SHOULD be no more than 15. 429 Tag: The property identifier, a sequence of US-ASCII characters. 431 Tag values MAY contain US-ASCII characters 'a' through 'z', 'A' 432 through 'Z', and the numbers 0 through 9. Tag values SHOULD NOT 433 contain any other characters. Matching of tag values is case 434 insensitive. 436 Tag values submitted for registration by IANA MUST NOT contain any 437 characters other than the (lowercase) US-ASCII characters 'a' through 438 'z' and the numbers 0 through 9. 440 Value: A sequence of octets representing the property value. 441 Property values are encoded as binary values and MAY employ sub- 442 formats. 444 The length of the value field is specified implicitly as the 445 remaining length of the enclosing Resource Record data field. 447 5.1.1. Canonical Presentation Format 449 The canonical presentation format of the CAA record is: 451 CAA 453 Where: 455 Flags: Is an unsigned integer between 0 and 255. 457 Tag: Is a non-zero sequence of US-ASCII letters and numbers in lower 458 case. 460 Value: Is the encoding of the value field as 461 specified in [RFC1035], Section 5.1. 463 5.2. CAA issue Property 465 The issue property tag is used to request that certificate issuers 466 perform CAA issue restriction processing for the domain and to grant 467 authorization to specific certificate issuers. 469 The CAA issue property value has the following sub-syntax (specified 470 in ABNF as per [RFC5234]). 472 issuevalue = *WSP [domain *WSP] [";" *WSP [parameters *WSP]] 474 domain = label *("." label) 475 label = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT)) 477 parameters = (parameter *WSP ";" *WSP parameters) / parameter 478 parameter = tag *WSP "=" *WSP value 479 tag = (ALPHA / DIGIT) *( *("-") (ALPHA / DIGIT)) 480 value = *(%x21-3A / %x3C-7E) 482 For consistency with other aspects of DNS administration, domain name 483 values are specified in letter-digit-hyphen Label (LDH-Label) form. 485 A CAA record with an issue parameter tag that does not specify a 486 domain name is a request that certificate issuers perform CAA issue 487 restriction processing for the corresponding domain without granting 488 authorization to any certificate issuer. 490 This form of issue restriction would be appropriate to specify that 491 no certificates are to be issued for the domain in question. 493 For example, the following CAA resource record set requests that no 494 certificates be issued for the domain 'nocerts.example.com' by any 495 certificate issuer. 497 nocerts.example.com CAA 0 issue ";" 499 A CAA record with an issue parameter tag that specifies a domain name 500 is a request that certificate issuers perform CAA issue restriction 501 processing for the corresponding domain and grants authorization to 502 the certificate issuer specified by the domain name. 504 For example, the following CAA record set requests that no 505 certificates be issued for the domain 'certs.example.com' by any 506 certificate issuer other than the example.net certificate issuer. 508 certs.example.com CAA 0 issue "example.net" 510 CAA authorizations are additive; thus, the result of specifying both 511 the empty issuer and a specified issuer is the same as specifying 512 just the specified issuer alone. 514 An issue property tag where the issuevalue does not match the ABNF 515 grammar MUST be treated the same as one specifying the empty issuer. 517 For example, the following malformed CAA resource record set forbids 518 issuance: 520 malformed.example.com CAA 0 issue "%%%%%" 522 A non-empty CAA record set that contains no issue property tags is 523 authorization to any certificate issuer to issue for the 524 corresponding domain, provided that it is a non-wildcard domain, and 525 no records in the CAA record set otherwise prohibit issuance. 527 An issuer MAY choose to specify issuer-parameters that further 528 constrain the issue of certificates by that issuer, for example, 529 specifying that certificates are to be subject to specific validation 530 polices, billed to certain accounts, or issued under specific trust 531 anchors. 533 The semantics of issuer-parameters are determined by the issuer 534 alone. 536 5.3. CAA issuewild Property 538 The issuewild property has the same syntax and semantics as the issue 539 property except that issuewild properties only grant authorization to 540 issue certificates that specify a wildcard domain and issuewild 541 properties take precedence over issue properties when specified. 542 Specifically: 544 issuewild properties MUST be ignored when processing a request for a 545 domain that is not a wildcard domain. 547 If at least one issuewild property is specified in the relevant CAA 548 record set, all issue properties MUST be ignored when processing a 549 request for a domain that is a wildcard domain. 551 A non-empty CAA record set that contains no issue or issuewild 552 property tags is authorization to any certificate issuer to issue for 553 the corresponding wildcard domain, provided that no records in the 554 CAA record set otherwise prohibit issuance. 556 5.4. CAA iodef Property 558 The iodef property specifies a means of reporting certificate issue 559 requests or cases of certificate issue for the corresponding domain 560 that violate the security policy of the issuer or the domain name 561 holder. 563 The Incident Object Description Exchange Format (IODEF) [RFC5070] is 564 used to present the incident report in machine-readable form. 566 The iodef property takes a URL as its parameter. The URL scheme type 567 determines the method used for reporting: 569 mailto: The IODEF incident report is reported as a MIME email 570 attachment to an SMTP email that is submitted to the mail address 571 specified. The mail message sent SHOULD contain a brief text message 572 to alert the recipient to the nature of the attachment. 574 http or https: The IODEF report is submitted as a Web service request 575 to the HTTP address specified using the protocol specified in 576 [RFC6546]. 578 6. Security Considerations 580 CAA records assert a security policy that the holder of a domain name 581 wishes to be observed by certificate issuers. The effectiveness of 582 CAA records as an access control mechanism is thus dependent on 583 observance of CAA constraints by issuers. 585 The objective of the CAA record properties described in this document 586 is to reduce the risk of certificate mis-issue rather than avoid 587 reliance on a certificate that has been mis-issued. DANE [RFC6698] 588 describes a mechanism for avoiding reliance on mis-issued 589 certificates. 591 6.1. Non-Compliance by Certification Authority 593 CAA records offer CAs a cost-effective means of mitigating the risk 594 of certificate mis-issue: the cost of implementing CAA checks is very 595 small and the potential costs of a mis-issue event include the 596 removal of an embedded trust anchor. 598 6.2. Mis-Issue by Authorized Certification Authority 600 Use of CAA records does not prevent mis-issue by an authorized 601 Certification Authority, i.e., a CA that is authorized to issue 602 certificates for the domain in question by CAA records. 604 Domain name holders SHOULD verify that the CAs they authorize to 605 issue certificates for their domains employ appropriate controls to 606 ensure that certificates are issued only to authorized parties within 607 their organization. 609 Such controls are most appropriately determined by the domain name 610 holder and the authorized CA(s) directly and are thus out of scope of 611 this document. 613 6.3. Suppression or Spoofing of CAA Records 615 Suppression of the CAA record or insertion of a bogus CAA record 616 could enable an attacker to obtain a certificate from an issuer that 617 was not authorized to issue for that domain name. 619 Where possible, issuers SHOULD perform DNSSEC validation to detect 620 missing or modified CAA record sets. 622 In cases where DNSSEC is not deployed in a corresponding domain, an 623 issuer SHOULD attempt to mitigate this risk by employing appropriate 624 DNS security controls. For example, all portions of the DNS lookup 625 process SHOULD be performed against the authoritative name server. 626 Data cached by third parties MUST NOT be relied on but MAY be used to 627 support additional anti-spoofing or anti-suppression controls. 629 6.4. Denial of Service 631 Introduction of a malformed or malicious CAA RR could in theory 632 enable a Denial-of-Service (DoS) attack. 634 This specific threat is not considered to add significantly to the 635 risk of running an insecure DNS service. 637 An attacker could, in principle, perform a DoS attack against an 638 issuer by requesting a certificate with a maliciously long DNS name. 639 In practice, the DNS protocol imposes a maximum name length and CAA 640 processing does not exacerbate the existing need to mitigate DoS 641 attacks to any meaningful degree. 643 6.5. Abuse of the Critical Flag 645 A Certification Authority could make use of the critical flag to 646 trick customers into publishing records that prevent competing 647 Certification Authorities from issuing certificates even though the 648 customer intends to authorize multiple providers. 650 In practice, such an attack would be of minimal effect since any 651 competent competitor that found itself unable to issue certificates 652 due to lack of support for a property marked critical SHOULD 653 investigate the cause and report the reason to the customer. The 654 customer will thus discover that they had been deceived. 656 7. Deployment Considerations 657 7.1. Blocked Queries or Responses 659 Some middleboxes, in particular anti-DDoS appliances, may be 660 configured to drop DNS packets of unknown types, or may start 661 dropping such packets when they consider themselves under attack. 662 This generally manifests as a timed-out DNS query, or a SERVFAIL at a 663 local recursive resolver. 665 For deployability of CAA and future DNS record types, middleboxes 666 SHOULD block DNS packets by volume and size rather than by query 667 type. 669 7.2. Rejected Queries and Malformed Responses 671 Some authoritative nameservers respond with REJECTED or NOTIMP when 672 queried for a resource record type they do not recognize. At least 673 one authoritative resolver produces a malformed response (with the QR 674 bit set to 0) when queried for unknown resource record types. Per 675 RFC 1034, the correct response for unknown resource record types is 676 NOERROR. 678 7.3. Delegation to Private Nameservers 680 Some domain administrators make the contents of a subdomain 681 unresolvable on the public internet by delegating that subdomain to a 682 nameserver whose IP address is private. A CA processing CAA records 683 for such subdomains will receive SERVFAIL from its recursive 684 resolver. The CA MAY interpret that as preventing issuance. Domain 685 administrators wishing to issue certificates for private domains 686 SHOULD use split-horizon DNS with a publicly available nameserver, so 687 that CAs can receive a valid, empty CAA response for those domains. 689 7.4. Bogus DNSSEC Responses 691 Queries for CAA resource records are different from most DNS RR 692 types, because a signed, empty response to a query for CAA RRs is 693 meaningfully different from a bogus response. A signed, empty 694 response indicates that there is definitely no CAA policy set at a 695 given label. A bogus response may mean either a misconfigured zone, 696 or an attacker tampering with records. DNSSEC implementations may 697 have bugs with signatures on empty responses that go unnoticed, 698 because for more common resource record types like A and AAAA, the 699 difference to an end user between empty and bogus is irrelevant; they 700 both mean a site is unavailable. 702 In particular, at least two authoritative resolvers that implement 703 live signing had bugs when returning empty resource record sets for 704 DNSSEC-signed zones, in combination with mixed-case queries. Mixed- 705 case queries, also known as DNS 0x20, are used by some recursive 706 resolvers to increase resilience against DNS poisoning attacks. 707 DNSSEC-signing authoritative resolvers are expected to copy the same 708 capitalization from the query into their ANSWER section, but sign the 709 response as if they had use all lowercase. In particular, PowerDNS 710 versions prior to 4.0.4 had this bug. 712 8. Differences versus RFC6844 714 This document obsoletes RFC6844. The most important change is to the 715 Certification Authority Processing section. RFC6844 specified an 716 algorithm that performed DNS tree-climbing not only on the domain 717 name being processed, but also on all CNAMEs and DNAMEs encountered 718 along the way. This made the processing algorithm very inefficient 719 when used on domains that utilize many CNAMEs, and would have made it 720 difficult for hosting providers to set CAA policies on their own 721 domains without setting potentially unwanted CAA policies on their 722 customers' domains. This document specifies a simplified processing 723 algorithm that only performs tree climbing on the domain being 724 processed, and leaves processing of CNAMEs and DNAMEs up to the CA's 725 recursive resolver. 727 This document also includes a "Deployment Considerations" section 728 detailing experience gained with practical deployment of CAA 729 enforcement amount CAs in the WebPKI. 731 This document clarifies the ABNF grammar for issue and issuewild tags 732 and resolves some inconsistencies with the document text. In 733 particular, it specifies that parameters are separated with hyphens. 734 It also allows hyphens in property names. 736 This document also clarifies processing of a CAA RRset that is not 737 empty, but contains no issue or issuewild tags. 739 9. IANA Considerations 741 This document has no IANA actions. 743 9.1. Certification Authority Restriction Flags 745 IANA has created the "Certification Authority Restriction Flags" 746 registry with the following initial values: 748 +------+----------------------+-----------+ 749 | Flag | Meaning | Reference | 750 +------+----------------------+-----------+ 751 | 0 | Issuer Critical Flag | [RFC6844] | 752 | | | | 753 | 1-7 | Reserved> | [RFC6844] | 754 +------+----------------------+-----------+ 756 Assignment of new flags follows the RFC Required policy set out in 757 [RFC5226], Section 4.1. 759 10. Acknowledgements 761 The authors would like to thank the following people who contributed 762 to the design and documentation of this work item: Chris Evans, 763 Stephen Farrell, Jeff Hodges, Paul Hoffman, Stephen Kent, Adam 764 Langley, Ben Laurie, James Manager, Chris Palmer, Scott Schmit, Sean 765 Turner, and Ben Wilson. 767 11. Normative References 769 [RFC1035] Mockapetris, P., "Domain names - implementation and 770 specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, 771 November 1987, . 773 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 774 Requirement Levels", BCP 14, RFC 2119, 775 DOI 10.17487/RFC2119, March 1997, 776 . 778 [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS 779 Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997, 780 . 782 [RFC3647] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S. 783 Wu, "Internet X.509 Public Key Infrastructure Certificate 784 Policy and Certification Practices Framework", RFC 3647, 785 DOI 10.17487/RFC3647, November 2003, 786 . 788 [RFC5070] Danyliw, R., Meijer, J., and Y. Demchenko, "The Incident 789 Object Description Exchange Format", RFC 5070, 790 DOI 10.17487/RFC5070, December 2007, 791 . 793 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 794 IANA Considerations Section in RFCs", RFC 5226, 795 DOI 10.17487/RFC5226, May 2008, 796 . 798 [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 799 Specifications: ABNF", STD 68, RFC 5234, 800 DOI 10.17487/RFC5234, January 2008, 801 . 803 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 804 Housley, R., and W. Polk, "Internet X.509 Public Key 805 Infrastructure Certificate and Certificate Revocation List 806 (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, 807 . 809 [RFC6546] Trammell, B., "Transport of Real-time Inter-network 810 Defense (RID) Messages over HTTP/TLS", RFC 6546, 811 DOI 10.17487/RFC6546, April 2012, 812 . 814 [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication 815 of Named Entities (DANE) Transport Layer Security (TLS) 816 Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August 817 2012, . 819 [RFC6844] Hallam-Baker, P. and R. Stradling, "DNS Certification 820 Authority Authorization (CAA) Resource Record", RFC 6844, 821 DOI 10.17487/RFC6844, January 2013, 822 . 824 Authors' Addresses 826 Phillip Hallam-Baker 827 Comodo Group, Inc 829 Email: philliph@comodo.com 831 Rob Stradling 832 Comodo Group, Inc 834 Email: rob.stradling@comodo.com 835 Jacob Hoffman-Andrews 836 Let's Encrypt 838 Email: jsha@letsencrypt.org