New issue
Advanced search Search tips

Issue 853228 link

Starred by 6 users

Issue metadata

Status: Started
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

NetworkService: Hook up CertDatabase

Project Member Reported by mmenke@chromium.org, Jun 15 2018

Issue description

This is perhaps related to hooking up CertVerifier.  The only code I know of related to CertDatabase that is being removed with the teardown of IOThread / ProfileIOData is the "net::CertDatabase::GetInstance()->SetMessageLoopForKeychainEvents();" call on OS_MACOSX.  Filing this bug so that call does not get overlooked.

Marking this as OSX Canary blocking, though I have no idea if that's really the case.
 
Thanks for filing, Matt!

I don't think this will need to block canary. The functionality is that this watches for Keychain events for users entering or removing smart cards (which may include root certs, but will primarily include client certs)

If you look through the OnCertDBChanged listeners, we can see that the following behaviours happen:
- All QUIC connections are closed (//net/quic/chromium/quic_stream_factory.cc)
- The SSL session cache is flushed (//net/socket/client_socket_factory.cc)
- The socket pools are flushed as a network change event (//net/socket/client_socket_pool_manager_impl.cc)
- All SPDY sessions are closed (//net/spdy/spdy_session_pool.cc)
- The SSL client auth cache is cleared (//net/ssl/ssl_client_auth_cache.cc)
- The Cert Verification cache is cleared (//net/cert/caching_cert_verifier.cc)

I'm ignoring the ChromeOS-specific bits (such as the UI refresh or the ARC++ integration), since this was filed as macOS only.

For better sandboxing of the network service, this would be best be kept outside - the same way that client certs are also handled in the browser process. We'd just need a way to signal down to affect these behaviours.

This is understandably a *giant* hammer to wield - effectively resetting the network state, for all profiles - so I can understand if there is reticence to adding such an API. For various platform-dependent reasons, we don't have a good way to close 'just' those connections affected, nor reset the state of 'just' those hosts.

Comment 2 by mmenke@chromium.org, Jun 15 2018

Labels: -Proj-Servicification-Canary Proj-Servicification
Thanks, Ryan!  Removing the Canary label.
And just to document for posterity what the impact will be for Canary:

Users who use smart cards will, on macOS, need to restart Chrome if trying to change the authentication state of connections (i.e. authenticated anonymously, then insert card, and want to authenticate with credentials). This behaviour actually aligns with the Windows/Linux implementations at present, hence why I don't view it as a Canary-blocker. We'd like to align the Windows/Linux implementations with macOS, as part of polishing client cert handling, but that's polish.

Comment 4 by dxie@chromium.org, Jun 19 2018

Labels: Hotlist-KnownIssue
Labels: -Hotlist-KnownIssue
Status: Available (was: Untriaged)
Labels: -Pri-3 Proj-Servicification-Stable Hotlist-KnownIssue Pri-2
Owner: mattm@chromium.org
Status: Started (was: Available)
Project Member

Comment 9 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3e356d0f62841f5d5307de4f8fb0269ce54e69e2

commit 3e356d0f62841f5d5307de4f8fb0269ce54e69e2
Author: Matt Mueller <mattm@chromium.org>
Date: Wed Nov 07 21:06:14 2018

Add browser_test for CertDatabase changes flushing client auth cache.

Bug: 853228
Change-Id: Iaef40bc62c7b5f6c93f71e8249402c0218605471
Reviewed-on: https://chromium-review.googlesource.com/c/1321584
Commit-Queue: Matt Mueller <mattm@chromium.org>
Reviewed-by: Ryan Sleevi <rsleevi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606156}
[modify] https://crrev.com/3e356d0f62841f5d5307de4f8fb0269ce54e69e2/chrome/browser/ssl/ssl_browsertest.cc

Sign in to add a comment