Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Issue 1526783002: Build a chain in ClientCertStoreNSS to send intermediates to the server. (Closed)

Created:
5 years ago by davidben
Modified:
4 years, 4 months ago
Reviewers:
Ryan Sleevi
CC:
chromium-reviews, cbentzel+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Build a chain in ClientCertStoreNSS to send intermediates to the server. NSS used to build a chain internally in the SSL stack which got lost when switching to BoringSSL. Align with other platforms by building the chain externally in ClientCertStoreNSS. Although this is inherently somewhat flaky, some servers do not have intermediates configured locally and expect the client to supply them. For comparison, see: https://code.google.com/p/chromium/codesearch#chromium/src/net/third_party/nss/ssl/ssl3con.c&l=7412 BUG=548631

Patch Set 1 #

Total comments: 4

Patch Set 2 : WIP test does not work #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+103 lines, -18 lines) Patch
M chrome/browser/chromeos/net/client_cert_store_chromeos.cc View 1 1 chunk +1 line, -1 line 0 comments Download
M net/cert/scoped_nss_types.h View 1 chunk +9 lines, -1 line 0 comments Download
M net/ssl/client_cert_store_nss.h View 1 1 chunk +0 lines, -3 lines 0 comments Download
M net/ssl/client_cert_store_nss.cc View 1 4 chunks +32 lines, -9 lines 2 comments Download
M net/ssl/client_cert_store_nss_unittest.cc View 1 3 chunks +58 lines, -1 line 0 comments Download
M net/ssl/client_cert_store_unittest-inl.h View 1 1 chunk +3 lines, -3 lines 0 comments Download

Messages

Total messages: 14 (2 generated)
davidben
https://codereview.chromium.org/1526783002/diff/1/net/ssl/client_cert_store_nss.cc File net/ssl/client_cert_store_nss.cc (right): https://codereview.chromium.org/1526783002/diff/1/net/ssl/client_cert_store_nss.cc#newcode111 net/ssl/client_cert_store_nss.cc:111: if (!query_nssdb) { This is only false in tests. ...
5 years ago (2015-12-14 22:26:33 UTC) #3
Ryan Sleevi
Where my tests at? ;) https://codereview.chromium.org/1526783002/diff/1/net/ssl/client_cert_store_nss.cc File net/ssl/client_cert_store_nss.cc (right): https://codereview.chromium.org/1526783002/diff/1/net/ssl/client_cert_store_nss.cc#newcode111 net/ssl/client_cert_store_nss.cc:111: if (!query_nssdb) { On ...
5 years ago (2015-12-16 01:46:54 UTC) #4
davidben
On 2015/12/16 01:46:54, Ryan Sleevi wrote: > Where my tests at? ;) Not sure how ...
5 years ago (2015-12-16 04:15:42 UTC) #5
Ryan Sleevi
On 2015/12/16 04:15:42, davidben wrote: > On 2015/12/16 01:46:54, Ryan Sleevi wrote: > > Where ...
5 years ago (2015-12-16 19:08:20 UTC) #6
davidben
On 2015/12/16 19:08:20, Ryan Sleevi wrote: > On 2015/12/16 04:15:42, davidben wrote: > > On ...
5 years ago (2015-12-16 19:11:26 UTC) #7
Ryan Sleevi
https://codereview.chromium.org/1526783002/diff/20001/net/ssl/client_cert_store_nss.cc File net/ssl/client_cert_store_nss.cc (right): https://codereview.chromium.org/1526783002/diff/20001/net/ssl/client_cert_store_nss.cc#newcode111 net/ssl/client_cert_store_nss.cc:111: // out of the local store. https://crbug.com/548631 Blah, I ...
4 years, 10 months ago (2016-02-05 23:51:24 UTC) #8
Ryan Sleevi
Old CL poke?
4 years, 9 months ago (2016-03-11 17:54:32 UTC) #9
Ryan Sleevi
On 2016/03/11 17:54:32, Ryan Sleevi wrote: > Old CL poke? Poke?
4 years, 7 months ago (2016-05-16 20:55:50 UTC) #10
davidben
On 2016/05/16 20:55:50, Ryan Sleevi wrote: > On 2016/03/11 17:54:32, Ryan Sleevi wrote: > > ...
4 years, 6 months ago (2016-06-10 18:26:24 UTC) #11
davidben
On 2016/06/10 18:26:24, davidben wrote: > On 2016/05/16 20:55:50, Ryan Sleevi wrote: > > On ...
4 years, 6 months ago (2016-06-10 18:28:24 UTC) #12
Ryan Sleevi
On 2016/06/10 18:28:24, davidben wrote: > I would propose that, since we have to do ...
4 years, 6 months ago (2016-06-16 00:32:58 UTC) #13
davidben
4 years, 6 months ago (2016-06-16 16:58:31 UTC) #14
On 2016/06/16 00:32:58, Ryan Sleevi wrote:
> On 2016/06/10 18:28:24, davidben wrote:
> > I would propose that, since we have to do something vaguely resembling
> > path-building for matching the naming *anyway* (currently
> > NSS_CmpCertChainWCANames), we find a way to arrange for them to be the same
> > operation. Which would suggest that the ClientCertStore should retain the
> > certificates *with the chains* rather than doing something weird where it
> > happens after selecting a cert. That was previously proposed, but it ends up
> > being a huge hassle to route.
> 
> I'm not sure I follow. Then again, I also have trouble following this code
> (which I admittedly approved during review).
> 
> AIUI you're proposing we memoize the intermediates during the
> NSS_CmpCertChainWCANames-ish thing, and return those in |filtered_certs| as
the
> intermediate, and let them surface up to the UI and then down to the
SSLSocket?
> Yeah, that should work.

Yup. If I recall, one of your objections to this CL was that
CERT_CertChainFromCert did something crazy and we didn't want to do it on
certificates the user didn't select? I'm not sure what the difference is between
CERT_CertChainFromCert and NSS_CmpCertChainWCANames, but since we have to do the
latter anyway, I figure we may as well use the latter's algorithm which
apparently we're fine with. (NSS_CmpCertChainWCANames is already vendored, so we
can give it an extra return value.)

> And yeah, I don't necessarily want to, but I realize I don't have the time to
> fight w/ Enterprise on that this quarter. I'm fine with simply closing this
out
> as a "No time" - I am mostly just trying to get dead or abandoned CLs off my
> dashboard :)

:-)

Eh, it's a regression, even though it's a regression to a state we wished
everything else where at. I think it's probably worth doing. I'll try to polish
this up and implement the other version.

Powered by Google App Engine
This is Rietveld 408576698