Skip to content

Define a CAA parameter governing CanSignHttpExchanges cert issuance.#377

Merged
jyasskin merged 8 commits intoWICG:masterfrom
jyasskin:define-caa
Feb 6, 2019
Merged

Define a CAA parameter governing CanSignHttpExchanges cert issuance.#377
jyasskin merged 8 commits intoWICG:masterfrom
jyasskin:define-caa

Conversation

@jyasskin
Copy link
Member

@jyasskin jyasskin commented Jan 18, 2019

This gives a stronger indication that the domain owner has opted into the new
security risks than just that a CA issued a certificate with the extension.

@AGWA, how's this look? https://tools.ietf.org/html/draft-ietf-acme-caa-06#section-3 has a MUST, which I've downgraded to a SHOULD here after reading draft-ietf-acme-caa's IANA considerations.

Preview; Diff

@nyaxt
Copy link
Collaborator

nyaxt commented Jan 21, 2019

still lgtm

@AGWA
Copy link

AGWA commented Jan 22, 2019

As current worded, it's OK for a CA which isn't listed in any issue/issuwild property to issue certificates with the CanSignHttpExchanges extension. Instead, I'd suggest:

CA SHOULD NOT issue certificates with the CanSignHttpExchanges extension defined in {{cross-origin-cert-req}} unless an applicable issue or issuewild property exists for the CA, and the "cansignhttpexchanges" parameter is present on the property and is equal to "yes"

@jyasskin
Copy link
Member Author

@AGWA Thanks! Done.

on the property and is equal to "yes".

The CA/Browser Forum Baseline Requirements ({{BRs}}) are expected to establish
requirements around the treatment of this parameter.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. In general, we should avoid SHOULD/SHOULD NOT requirements unless we provide guidance on when there are applicable exceptions. Alternatively, MUST/MUST NOT provides a clearer, unambiguous processing model, modulo what error handling should be (which presumably is MUST NOT issue)

  2. The reference to the BRs may end up being circular. The BRs state the rules for which a CA can include arbitrary extensions (7.1.2.4.), so if there are requirements expressed here, they should trigger the rules of 7.1.2.4 (a) (ii) and 7.1.2.4 (b), and thus require following this spec and whatever it describes.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've moved this to the definition of the CanSignHttpExchanges extension, where there's no question that we can MUST CAs. Now I don't need to point at the BRs.

@jyasskin
Copy link
Member Author

I'm hoping one of the certificate experts (@AGWA, @sleevi, @clintwilson) will approve this before I merge it.

applicable "issue" or "issuewild" CAA property ({{!RFC6844}}) exists for the CA,
and the "cansignhttpexchanges" parameter ({{caa-cansignhttpexchanges}}) is
present on the property and is equal to "yes".

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized that this wording could be interpreted as allowing a CA to include the extension if just one of the dNSNames in the certificate has cansignhttpexchanges=yes. 😬 Obviously, the intent is that this parameter must be present for every dNSName. I'll propose some better wording in a little bit unless someone else beats me to it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See, this is why I wait. :)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about:

A conforming CA MUST NOT issue certificates with this extension unless, for each dNSName in the subjectAltName extension of the certificate to be issued:

  1. An "issue" or "issuewild" CAA property ({{!RFC6844}}) exists that authorizes the CA to issue the certificate; and
  2. The "cansignhttpexchanges" parameter ({{caa-cansignhttpexchanges}}) is present on the property and is equal to "yes"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. RFC6844 manages to avoid saying that a certificate's domains are listed in the dNSName, but if saying it here is a problem, we have plenty of time to revise the wording.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cribbed the "each dNSName in the subjectAltName extension" wording from the BR's section on CAA so it should be solid.

This gives a stronger indication that the domain owner has opted into the new
security risks than just that a CA issued a certificate with the extension.

This only SHOULDs the CAs because CAA parameters are CA-defined per RFC6844.
The BRs will need to be updated to actually constrain CAs.

As suggested by Andrew Ayer.
…he CanSignHttpExchanges certificate extension.

This allows us to MUST CA behavior, and not wait on a BR update.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants