New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 618799 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature
Team-Security-UX



Sign in to add a comment

Figure out what CertStatus is supposed to be and make the code match that reality

Project Member Reported by rsleevi@chromium.org, Jun 9 2016

Issue description

Right now, CertStatus is used by the CertVerifier to return all the errors it could find with the certificate. However, it's *also* used to smuggle certificate state information up to the higher layers - things like the evaluation of CT policy, or, in the case of ERR_SSL_[WEAK_SERVER_EPHEMERAL_DH_KEY/PINNED_KEY_NOT_IN_CERT_CHAIN], the underlying TLS policy independent of the certificate (per-se)

We should figure out what the conceptual layering of CertStatus should be, so that it's clearer what the recommended path forward is.

Historically, the use of CertStatus was to allow the MapNetErrorToCertStatus/MapCertStatusToNetError roundtrips, which is what allows SSL interstitial pages to show the 'right' error (namely, a "friendly" SSL error page rather than the general network error page). However, what we actually pass up from //net to the higher layers is the full SSLInfo (from URLRequestHttpJob's NotifySSLCertificateError), so there's a question about whether errors such as DH key size or pinning violations more properly belong on the SSLInfo.

Now that we have the SecurityStateModel that more properly encapsulates the settings for interstitial UI, if we move these errors from CertStatus' to SSLInfo, we'd need to correspondingly update the VisibleSecurityState/SecurityInfo classes to be able to continue propagating that information to the various UI surfaces.

On its face, this *seems* like a correct layering (namely, moving these "SSL policy" checks onto SSLInfo's communication layer), but there may be a reasonable argument for keeping them on the CertStatus to ease propagation.

If moving them to the VSS/SI, there's a question about whether we want to surface individual bools, or whether it makes more sense to have the SSLInfo propagate up the SSL error code reported by the socket.
 
Came up over this weekend in relation to CT enforcement, which is cert related (want an interstitial), but at a layer separate from the PKI part (it's in the socket code).

Effectively, we have two methods of signalling errors (net_errors and cert_status), and that's ... weird.

David (Benjamin) - Are there other cases of TLS crypto-policy you can think of where we might want to trigger the interstitial logic rather than the net error page? I'm guessing the WeakDH bit is about to be removed (with the death of DHE), and the remaining two (HPKP & CT) "could" fit conceptually in a CT model (although it strikes me as weird to add them to the cache, as CertStatus is)
I don't believe weak DH triggered the interstitial logic anyway, at least not in recent memory. It wasn't bypassable.

Comment 3 by eroman@chromium.org, Jun 21 2016

Components: Internals>Network>Certificate
Labels: -Type-Bug Type-Feature
Components: -Security>UX Internals>PageSecurityState
Components: Internals>Permissions>CrowdConsent
Components: -Internals>Permissions>CrowdConsent
Status: Available (was: Untriaged)

Comment 9 by est...@chromium.org, Nov 10 2017

Labels: Hotlist-EnamelAndFriendsFixIt
Labels: -Hotlist-EnamelAndFriendsFixIt

Sign in to add a comment