[cabfpub] Ballot 187 - Make CAA Checking Mandatory

Doug Beattie doug.beattie at globalsign.com
Wed Feb 22 22:32:23 UTC 2017


Hi Gerv,

I have some input and recommendations…..

I’ve attached an updated version of the ballot for your consideration with these comments (and maybe others, this has been a work-in-progress for a while and maybe some other changes crept in, sorry in advance)

I think we need to talk about negative caching TTL.  I recommend we add:

-        In the event there were no CAA records found, the CA may cache the result for 24-hours or the value of the negative caching TTL.

You reference CT logs, but I think we need to be more clear that they need to be Active logs (anyone of the active logs on this page https://sites.google.com/site/certificatetransparency/known-logs).  Not doing so could allow someone to generate a pre-cert and post it to their development CT log then wait a month/year before issuing the real cert at which point the CAA check is long over the time limit.

I think we need to update the EVGL, section 11.7.1

-        For each Fully-Qualified Domain Name listed in a Certificate, other than a Domain Name with .onion in the right-most label of the Domain Name, the CA SHALL confirm that, as of the date the Certificate was issued, the Applicant (or the Applicant’s Parent Company, Subsidiary Company, or Affiliate, collectively referred to as “Applicant” for the purposes of this section)  either is the Domain Name Registrant or has control over the FQDN using a procedure specified in Section 3.2.2.4 of the Baseline Requirements and has checked CAA in accordance with Section 3.2.2.8 of the Baseline Requirements.  For a Certificate issued to a Domain Name with .onion in the right-most label of the Domain Name, the CA SHALL confirm that, as of the date the Certificate was issued, the Applicant’s control over the .onion Domain Name in accordance with Appendix F.

Several people have looked at RFC 6844 and have come away with different interpretations of what the processing means, so I HIGHLY recommend we include the CAA processing that MUST be performed so there is no ambiguity and so it’s clear for auditors.  This includes statements like:

-        When performing CAA checking, the CA MUST climb the DNS name tree from the specified label up to but not including the DNS root '.'.   Checking CAA means the CA MUST perform the checks specified in Appendix A prior to issuing, reissuing, renewing or rekeying a Certificate.

Appendix A – CAA checking
The following is pulled from RFC 6844 and expanded on slightly to clearly define the precise checks that MUST be performed for BR compliant CAA checking to assure consistent interpretation of CAA requirements:
Let

1.     CAA(X) be the record set returned in response to performing a CAA record query on the label X,

2.     P(X) be the DNS label immediately above X in the DNS hierarchy, and

3.     A(X) be the target of a CNAME or DNAME alias record specified at the label X.
Then:

1.     If CAA(X) is not empty, R(X) = CAA (X), otherwise

2.     If CAA(X) is not null (i.e, there is a CNAME or DNAME record for X), and R(A(X)) is not empty, then R(X) = R(A(X)), otherwise

3.     If X is not a Base Domain Name, then R(X) = R(P(X)) and perform check again starting at step 1, otherwise

4.     R(X) is empty.

·       If any one of the returned records in R(X) contains a Domain Name from the set of the CA’s Issuer Domain Names, then the CA may issue the certificate.

·       If none of the records returned in R(X) contain any Domain Name from the set of the CA’s Issuer Domain Names, then the CA MUST NOT issue the certificate

·       If a CNAME or DNAME record is found, then the CAA check will be performed on the returned value..
Example 1 – Typical example with a CAA record
Assume you want to find the CAA record for www.example.com and the CAA record is set on example.com, then the processing would be as follows:

1)     CAA(www.example.com) – nothing

2)     DNAME(www.example.com) – nothing

3)     CNAME(www.example.com) – nothing

4)     CAA(example.com) – value

Example 2 – Typical example with no CAA record
Assume you want to find the CAA record for www.example.com and there is no CAA record set, then the processing would be as follows:

1)     CAA(www.example.com) – nothing

2)     DNAME(www.example.com) – nothing

3)     CNAME(www.example.com) – nothing

4)     CAA(example.com) – nothing

5)     DNAME(example.com) – nothing

6)     CNAME(example.com) – nothing

7)     CAA(com) – nothing

8)     DNAME(com) – nothing

9)     CNAME(com) - nothing

Example 3 – Example with CNAME
Assume you want to find the CAA record for foo.example.com and

-        foo.example.com has a CNAME to bar.example.net, and

-        the CAA record is set on "example.com"
Then the processing would be as follows:

1)     CAA(foo.example.com) - nothing

2)     DNAME(foo.example.com)

3)     CNAME(foo.example.com) - bar.example.net

a.      CAA(bar.example.net) - nothing

b.     DNAME(bar.example.net) – nothing

c.      CNAME(bar.example.net) - nothing

d.     CAA(example.net) – nothing

e.      DNAME(example.net) - nothing

f.      CNAME(example.net) - nothing

g.     CAA(net) - nothing

h.     DNAME(net) - nothing

i.       CNAME(net) - nothing

4)     CAA(example.com) - value


From: Public [mailto:public-bounces at cabforum.org] On Behalf Of Gervase Markham via Public
Sent: Wednesday, February 22, 2017 4:35 PM
To: CABFPub <public at cabforum.org>
Cc: Gervase Markham <gerv at mozilla.org>
Subject: [cabfpub] Ballot 187 - Make CAA Checking Mandatory

Hi everyone,

This ballot is now entering its seven-day discussion period. My sincere thanks to everyone who helped shape the text into what it is today.

Changes from draft 3:

* 1 hour changed to 8 hours as minimum caching time, to make manual issuance easier.

* Added text from Ryan, at Doug's suggestion, of exactly which properties need to be supported.

* Marked Jeremy and Ryan as endorsers (assuming they don't object to the above changes).

Gerv

Ballot 187 - Make CAA Checking Mandatory

The following motion has been proposed by Gervase Markham of Mozilla and endorsed by Jeremy Rowley of DigiCert and Ryan Sleevi of Google:

Statement of Intent
Certificate Authority Authorization (CAA) is a DNS Resource Record defined in RFC 6844 - https://datatracker.ietf.org/doc/rfc6844/ , published in January 2013. It allows a DNS domain name holder to specify one or more Certification Authorities (CAs) authorized to issue certificates for that domain and, by implication, that no other CAs are authorized.

The intent of this motion is to make it mandatory for CAs to check CAA records at issuance time for all certificates issued (except in a few special cases), and to prevent issuance if a CAA record is found which does not permit issuance by that CA. This therefore allows domain owners to set an issuance policy which will be respected by all publicly-trusted CAs, and allows them to mitigate the problem that the public CA trust system is only as strong as its weakest CA.

Note that CAA is already a defined term in the BRs and so does not need definitional text to be provided by this motion.

-- MOTION BEGINS --
Add the following text as a new section 3.2.2.8 (titled "CAA Records") of the Baseline Requirements:
This section is effective as of 8 September 2017.

As part of the issuance process, the CA must check for a CAA record for each dNSName in the subjectAltName extension of the certificate to be issued, according to the procedure in RFC 6844, following the processing instructions set down in RFC 6844 for any records found. If the CA issues, they must do so within the TTL of the CAA record, or 8 hours, whichever is greater.

This stipulation does not prevent the CA from checking CAA records at any other time.
When processing CAA records, CAs MUST process the issue, issuewild, and iodef property tags as specified in RFC 6844. Additional property tags MAY be supported, but MUST NOT conflict with or supersede the mandatory property tags set out in this document. CAs MUST respect the critical flag and reject any unrecognized properties with this flag set.

RFC 6844 requires that CAs "MUST NOT issue a certificate unless either (1) the certificate request is consistent with the applicable CAA Resource Record set or (2) an exception specified in the relevant Certificate Policy or Certification Practices Statement applies." For issuances conforming to these Baseline Requirements, CAs MUST NOT rely on any exceptions specified in their CP or CPS unless they are one of the following:

  *   CAA checking is optional for certificates for which a Certificate Transparency pre-certificate was created and logged in at least two public logs, and for which CAA was checked.
  *   CAA checking is optional for certificates issued by an Technically Constrained Subordinate CA Certificate as set out in Baseline Requirements section 7.1.5, where the lack of CAA checking is an explicit contractual provision in the contract with the Applicant.
  *   CAA checking is optional if the domain's DNS is operated by the CA or an Affiliate of the CA.
CAs are permitted to treat a record lookup failure as permission to issue if:

  *   the failure is outside the CA's infrastructure;
  *   the lookup has been retried at least once; and
  *   the domain's zone does not have a DNSSEC validation chain to the ICANN root.
CAs MUST document potential issuances that were prevented by a CAA record in sufficient detail to provide feedback to the CAB Forum on the circumstances, and SHOULD dispatch reports of such issuance requests to the contact(s) stipulated in the CAA iodef record(s), if present. CAs are not expected to support URL schemes in the iodef record other than mailto: or https:.
Update section 2.2 ("Publication of Information") of the Baseline Requirements, to remove the following text:

    Effective as of 15 April 2015, section 4.2 of a CA's Certificate Policy and/or Certification

    Practice Statement (section 4.1 for CAs still conforming to RFC 2527) SHALL state whether

    the CA reviews CAA Records, and if so, the CA’s policy or practice on processing CAA Records

    for Fully Qualified Domain Names. The CA SHALL log all actions taken, if any, consistent with

    its processing practice.
and replace it with:

    Effective as of 8 September 2017, section 4.2 of a CA's Certificate Policy and/or Certification

    Practice Statement (section 4.1 for CAs still conforming to RFC 2527) SHALL state the CA’s policy or

    practice on processing CAA Records for Fully Qualified Domain Names; that policy shall be consistent

    with these Requirements. It shall clearly specify the set of Issuer Domain Names that the CA

    recognises in CAA "issue" or "issuewild" records as permitting it to issue. The CA SHALL log all actions

    taken, if any, consistent with its processing practice.



Add the following text to the appropriate place in section 1.6.3 ("References"):
RFC6844, Request for Comments: 6844, DNS Certification Authority Authorization (CAA) Resource Record, Hallam-Baker, Stradling, January 2013.
-- MOTION ENDS --


The procedure for approval of this Final Maintenance Guideline ballot is as follows:



BALLOT 187

Status: Maintenance Guideline


Start time (22:00 UTC)


End time (22:00 UTC)


Discussion (7 to 14 calendar days)


2017-02-22


2017-03-01



Vote for approval (7 calendar days)

2017-03-01


2017-03-08


If vote approves ballot: Review Period (Chair to send Review Notice) (30 calendar days).

If Exclusion Notice(s) filed, ballot approval is rescinded and PAG to be created.

If no Exclusion Notices filed, ballot becomes effective at end of Review Period.

Upon filing of Review Notice by Chair

30 days after filing of Review Notice by Chair




From Section 2.3 of the Bylaws: If the Draft Guideline Ballot is proposing a Final Maintenance Guideline, such ballot will include a redline or comparison showing the set of changes from the Final Guideline section(s) intended to become a Final Maintenance Guideline, and need not include a copy of the full set of guidelines.  Such redline or comparison shall be made against the Final Guideline section(s) as they exist at the time a ballot is proposed, and need not take into consideration other ballots that may be proposed subsequently, except as provided in Section 2.3(j) of the Bylaws.



Votes must be cast by posting an on-list reply to this thread on the Public Mail List.  A vote in favor of the motion must indicate a clear “yes” in the response. A vote against must indicate a clear “no” in the response. A vote to abstain must indicate a clear “abstain” in the response. Unclear responses will not be counted. The latest vote received from any representative of a voting member before the close of the voting period will be counted. Voting members are listed here: https://cabforum.org/members/
In order for the motion to be adopted, two thirds (2/3) or more of the votes cast by members in the CA category and greater than 50% of the votes cast by members in the browser category must vote “yes”.  Quorum is shown on CA/Browser Forum wiki.  Under Section 2.2(g) of the Bylaws, at least the required quorum number of voting members must participate in the ballot for the ballot to be valid, either by voting in favor, voting against, or abstaining.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cabforum.org/pipermail/public/attachments/20170222/2b56180f/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GlobalSign comments on Ballot 187.docx
Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Size: 27064 bytes
Desc: GlobalSign comments on Ballot 187.docx
URL: <http://lists.cabforum.org/pipermail/public/attachments/20170222/2b56180f/attachment.docx>


More information about the Public mailing list