<Resend with hopefully better in-line comment formatting, and with “DB:” in each para of my response>
Ryan,
Note: I changed the name of the thread because this is a great discussion about
root roll-over and isn’t really related to the Entrust Root inclusion request.
In theory Cross certificates are simple, but I’ve found that in practice they
are difficult to manage and use.
First, it would be a good idea to agree on the definition of a Cross
Certificate. The BRs define it as: A certificate that is used to establish a
trust relationship between two Root CAs.
Does that align with your definition? I ask because you used the term Cross
signed intermediate, so it seems you may be using a difference definition than
the one in the BRs. Are you proposing this type of approach where the Issuer
of the SSL certificate could be one of 2 different CAs (have same keys and
Subject Name but are signed by different roots)?
SSL – Intermediate CA 1 – Legacy Root
SSL – Cross Intermediate CA 2 – New Root
I thought a cross certificate chain needed to look like this
SSL – Intermediate CA 1 (signed by new root) – Cross cert – Legacy Root
My discussion is focused on the BR definition, so there could be advantages to
creating multiple intermediate signed CAs which I haven’t considered yet. What
definition/approach were you assuming?
See responses in-line below
From: Doug Beattie <[email protected]>
Sent: Monday, August 5, 2019 7:29 AM
To: Doug Beattie <[email protected]>
Subject: Re: FW: Entrust Root Certification Authority - G4 Inclusion Request
On Mon, Aug 5, 2019 at 7:12 AM Doug Beattie <[email protected]
<mailto:[email protected]> > wrote:
From: Ryan Sleevi <[email protected] <mailto:[email protected]> >
Sent: Friday, August 2, 2019 1:49 PM
To: Doug Beattie <[email protected]
<mailto:[email protected]> >
Cc: [email protected] <mailto:[email protected]> ; Bruce <[email protected]
<mailto:[email protected]> >; mozilla-dev-security-policy
<[email protected]
<mailto:[email protected]> >
Subject: Re: Entrust Root Certification Authority - G4 Inclusion Request
On Fri, Aug 2, 2019 at 9:59 AM Doug Beattie <[email protected]
<mailto:[email protected]> > wrote:
Ryan,
GlobalSign has been thinking along these lines, but it's not clear how
browsers build their path when a cross certificate is presented to them in
the TLS handshake.
Excellent! Happy to help in any way to make that possible and easier :)
DB: I knew you would 😊
Can you explain how chrome (windows and Android) builds a path when a cross
certificate is delivered? What about the case when the OS (Microsoft
specifically) has cached the cross certificate, is it different?
It's unclear the objective of the question. That is, are you trying to figure
out what happens with both paths are valid, or how it handles edge cases, etc?
DB: We have some customers that mandate a complete SHA-256 chain, including the
root. We had been using our older SHA-1 Root (R1) and recently moved to our
newer SHA-265 root, (R3). We now can deliver certificates issued with SHA-256
at all levels, great! In order to support some legacy applications that didn’t
have R3 embedded, we created a cross certificate R1-R3. You can get it here
<https://support.globalsign.com/customer/en/portal/articles/2960968-globalsign-cross-certificates>
.
DB: The customer came back and said, hey, it still chains to R1, what’s up?
Oh, it’s because the client has the cross certificate cached, don’t worry about
that, some users will see the chain up to R1 and others to R3. Hmm, not good
they say.
DB: Anyway, no way around that now (unless you have some other tricks) I went
and looked at the links to the MS article and noticed that when the quality of
the certificates in the chain is the same, then it prefers certificates that
have a later NotBefore date (I presume this means issued more recently). Our
R1-R3 cross was issued in 2018 and the Root R3 was issued in 2009. When the
issuing CA is validated it has 2 paths it can follow,
1) Root R3, issued in 2009, or
2) the Cross certificate, issued in 2018.
Even though the path is longer, it uses the cross certificate which chains to
R1 (SHA-1) because of the not-before date.
DB: Does this mean we should have created the cross certificate with the same
date as the R3 root (2009)?
How else can we have clients prefer the shorter higher security SHA-256 chain?
Perhaps this is means that we need to change the definition of a Cross
certificate from being a Root to Root chain.
DB: Even if this specific web site didn’t configure the extra certificate (the
R1-R3 cross certificate) into their configuration, the end users may have
picked it up somewhere else and have it cached so their specific chain goes:
SSL, Intermediate CA, R1-R3 Cross certificate, Root R1
DB: They are stuck with inconsistent user experience and levels of “security”
for their website.
At present (and this is changing), Chrome uses the CryptoAPI implementation,
which is the same as IE, Edge, and other Windows applications.
You can read a little bit about Microsoft's logic here:
-
https://blogs.technet.microsoft.com/pki/2010/05/12/certificate-path-validation-in-bridge-ca-and-cross-certification-environments/
And a little about how the IIS server selects which intermediates to include in
the TLS handshake here:
-
https://support.microsoft.com/en-us/help/2831004/certificate-validation-fails-when-a-certificate-has-multiple-trusted-c
The "short answer" is that, assuming both are trusted, either path is valid,
and the preference for which path is going to be dictated by the path score,
how you can influence that path score, and how ties are broken between
similarly-scoring certificates.
DB: It’s not clear how a CA can influence the path so the “most secure” or
“newest” one. Since CAs want to rollover to newer, “better” roots, how do we
limit clients from continuing to use the older one during the transition? Is
creating a cross certificate with a not-before that is equal to or predates the
new Root permitted? Is it the only way we can be sure that the new path is
selected? Do most/all other web clients also follow this same logic? Sorry,
for all the questions.
* increases TLS handshake packet sizes (or extra packet?), and
* increases the certificate path from 3 to 4 certificates (SSL, issuing
CA, Cross certificate, Root), which increases the path validation time and
is typically seen as a competitive disadvantage
I'm surprised and encouraged to hear CAs think about client performance. That
certainly doesn't align with how their customers are actually deploying things,
based on what I've seen from the httparchive.org <http://httparchive.org> data
(suboptimal chains requiring AIA, junk stapled OCSP responses, CAs putting
entire chains in OCSP responses).
DB: It’s not really the answer I expected, but OK. Since we don’t control how
the web sites are configured it’s not clear how CAs can improve this (except
for your last example).
DB: Assuming some CAs want to provide certificates with optimal performance
characteristics (ECDSA, shorter chains, smaller certificate size, etc.) it
seems passing down an extra certificate in the handshake isn’t the best
approach. Maybe it’s so far in the noise it’s irrelevant.
As a practical matter, there are understandably tradeoffs. Yet you can allow
your customers the control to optimize for their use case and make the decision
best for them, which helps localize some of those tradeoffs. For example, when
you (the CA) is first rolling out such a new root, you're right that your
customers will likely want to include the cross-signed version back to the
existing root within root stores. Yet as root stores update (which, in the case
of browsers, can be quite fast), your customer could chose to begin omitting
that intermediate, and rely on intermediate preloading (Firefox) or AIA
(everyone else). In this model, the AIA for your 'issuing intermediate' would
point to a URL that contained your cross-signed intermediate, which would then
allow them to build the path to the legacy root. Clients with your new root
would build and prefer the shorter path, because they'd have a trust anchor
matching that (root, key) combination, while legacy clients could still build
the legacy path.
DB: Can you explain the logic in your last statement above about AIA? What is
the Issuing Intermediate in this example, is it the one that is signed by the
new root but has an AIA pointing to the cross certificate? Interesting – I
never thought about including a certIssuer link in a AIA of a CA that was
signed by a root.
DB: Your last statement (building the shorter path) doesn’t seem to be how
Chrome does it, or at least that is not how the Chrome certificate viewer
displays the chain, as discussed above (unless you’re assuming the not-before
dates are adjusted to be identical)
DB: Yea, this is the hard part. We’re assuming the web server operator
understands this and is capable of making the tradeoffs you outlined above.
Generally they want the CA to tell them how to install the certificate.
DB: When we change the roots under which we issue SSL certificates, we need to
say: If you’re not sure if you need the complete interoperability of the old
root, then install the cross certificate. Even if we say the old root has
support for a few legacy platforms that are no longer in meaningful use so you
should be OK without them (Android 1-2, FF 3.0 and earlier, Mozilla 1-2, Safari
1-3, etc.) they are likely to install the cross certificate just to be safe.
While we can provide them the pros and cons, they don’t want to think about
this and just want to install their certificate and move forward without
impacting any current or possible visitors.
DB: I’m curious how Google would handle this. At what point will you start
using the Google "GTS Root R1” created in 2016 with a cross certificate back to
your current Root? It uses 4K and SHA 384 vs. 2K and SHA-1 in your current
root, so there seem to be clear advantages for using it.
Do you view these as meaningful issues? Do you know of any CAs that have
taken this approach?
Definitely! I don't want to sound dismissive of these issues, but I do want to
suggest it's good if we as an industry start tackling these a bit head-on. I'm
particularly keen to understand more about how and when we can 'sunset' roots.
For example, if the desire is to introduce a new root in order to transition to
stronger cryptography, I'd like to understand more about how and when clients
get the 'strong' chain or the 'weaker' chain and how that selection may change
over time. I'm understanding to 4K roots - while I'd rather we were in a world
where 2K roots were viable because we were rotating roots more frequently
(hence the above), 4K roots may make sense given the pragmatic realities that
these end up being used much longer than anticipated. If that's the case,
though, it's reasonable to think we'd retire roots <4K, and it's reasonable to
think we don't need multiple 4K roots. That's why I wanted to flesh out these
considerations and have that discussion, because I'm not sure that just
allowing folks to select '2K vs 4K' for a particular CA really helps move the
needle far enough in user benefit (it does, somewhat, but not as much as 'all
4K', for example)
My understanding is that both Symantec / DigiCert and Sectigo have pursued
paths like this, and can speak more. ISRG / Let's Encrypt pursued something
similar-but-different, but which had the functional goal of reducing their
dependency on the IdenTrust root in favor of the ISRG root.
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ dev-security-policy mailing list [email protected] https://lists.mozilla.org/listinfo/dev-security-policy

