Firefox fails with a handshake error when trying to connect to a site requesting a client certificate signed by a different CA than itself
Categories
(Core :: Security: PSM, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox70 | --- | fixed |
People
(Reporter: mozilla, Assigned: kershaw)
References
Details
(Whiteboard: [psm-backlog])
Attachments
(1 file)
Comment 1•9 years ago
|
||
Comment 2•9 years ago
|
||
Comment 3•9 years ago
|
||
Updated•9 years ago
|
Updated•7 years ago
|
Assignee | ||
Comment 4•5 years ago
|
||
Hi Dana,
I have some questions below. Could you take a look and let me know what to do?
Here's maybe what we should do:
- Implement a more persistent "remember I chose this client certificate for
this site" feature (i.e. make it work across restarts)
Is this mandatory for bug 1512478?
If yes, I am not sure what is the best way to write/read data to disk. Maybe use DataStorage?
- Remove the "automatically choose a certificate" option
I can't see this checkbox on the client certificate dialog. Maybe this is already removed?
- Remove the filtering based on certificate_authorities
It seems that we haven't had a conclusion yet. Could you confirm that we really want to do this?
Comment 5•5 years ago
|
||
(In reply to Kershaw Chang [:kershaw] from comment #4)
- Implement a more persistent "remember I chose this client certificate for
this site" feature (i.e. make it work across restarts)Is this mandatory for bug 1512478?
It would be a great help if you could do at least some of this work. I'm available to review code and if you have any questions.
(Incidentally, this reminded me we also need a way to say "stop using this client certificate" - maybe we could extend the "Clear Cookies and Site Data..." functionality in the site identity drop-down menu?)
If yes, I am not sure what is the best way to write/read data to disk. Maybe use DataStorage?
DataStorage does seem like the right kind of thing to use here.
- Remove the "automatically choose a certificate" option
I can't see this checkbox on the client certificate dialog. Maybe this is already removed?
It's in the "Certificates" section of about:preferences (see also the preference "security.default_personal_cert").
- Remove the filtering based on certificate_authorities
It seems that we haven't had a conclusion yet. Could you confirm that we really want to do this?
Yes, let's do this.
Assignee | ||
Comment 6•5 years ago
|
||
Hi Dana,
Since the changes you proposed need some UI work, which could make this bug more complicated, and I don't have a lot of time working on socket process project, do you think I can just do the "Remove the filtering based on certificate_authorities" part in this bug?
I can file follow-up bugs for other things and work on those bugs after bug 1512478.
What do you think?
Comment 7•5 years ago
|
||
The more I think about it, the more I'm coming to the conclusion that the CA filtering can't possibly work and isn't something we want to do, so yes, just go ahead and remove it and we can address the other issues later.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 8•5 years ago
|
||
Comment 10•5 years ago
|
||
Backed out changeset 9bed62de3d16 (Bug 1267643) for browser_urlbar_speculative_connect_not_with_client_cert.js failures
Backout link: https://hg.mozilla.org/integration/autoland/rev/9c2e6c4a65ec4f458e71cfe24b85b82b433654a8
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=258750644&repo=autoland&lineNumber=4042
[task 2019-07-29T09:38:11.896Z] 09:38:11 INFO - TEST-START | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js
[task 2019-07-29T09:38:12.986Z] 09:38:12 INFO - TEST-INFO | started process screentopng
[task 2019-07-29T09:38:13.572Z] 09:38:13 INFO - TEST-INFO | screentopng: exit 0
[task 2019-07-29T09:38:13.572Z] 09:38:13 INFO - Buffered messages logged at 09:38:11
[task 2019-07-29T09:38:13.573Z] 09:38:13 INFO - Entering test bound setup
[task 2019-07-29T09:38:13.574Z] 09:38:13 INFO - Console message: [JavaScript Error: "uncaught exception: Object" {file: "resource://testing-common/PromiseTestUtils.jsm" line: 112}]
[task 2019-07-29T09:38:13.576Z] 09:38:13 INFO - Buffered messages logged at 09:38:12
[task 2019-07-29T09:38:13.578Z] 09:38:13 INFO - running tls server at https://localhost:40450/
[task 2019-07-29T09:38:13.578Z] 09:38:13 INFO - Leaving test bound setup
[task 2019-07-29T09:38:13.580Z] 09:38:13 INFO - Entering test bound popup_mousedown_no_client_cert_dialog_until_navigate_test
[task 2019-07-29T09:38:13.580Z] 09:38:13 INFO - Searching for 'ocal'
[task 2019-07-29T09:38:13.582Z] 09:38:13 INFO - The url of the second item is https://localhost:40450/
[task 2019-07-29T09:38:13.583Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | The second item has the url we visited. -
[task 2019-07-29T09:38:13.584Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | The second item is selected -
[task 2019-07-29T09:38:13.585Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | A valid string reason is expected -
[task 2019-07-29T09:38:13.588Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | Reason cannot be empty -
[task 2019-07-29T09:38:13.589Z] 09:38:13 INFO - Accepted TLS client connection
[task 2019-07-29T09:38:13.589Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | expecting chooseCertificate to be called -
[task 2019-07-29T09:38:13.590Z] 09:38:13 INFO - Buffered messages finished
[task 2019-07-29T09:38:13.590Z] 09:38:13 INFO - TEST-UNEXPECTED-FAIL | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | should have only one client certificate available - Got 2, expected 1
[task 2019-07-29T09:38:13.593Z] 09:38:13 INFO - Stack trace:
[task 2019-07-29T09:38:13.593Z] 09:38:13 INFO - chrome://mochikit/content/browser-test.js:test_is:1591
[task 2019-07-29T09:38:13.594Z] 09:38:13 INFO - chrome://mochitests/content/browser/browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js:chooseCertificate:43
[task 2019-07-29T09:38:13.594Z] 09:38:13 INFO - TLS handshake done
[task 2019-07-29T09:38:13.594Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | expecting an HTTP/1.1 GET request -
[task 2019-07-29T09:38:13.595Z] 09:38:13 INFO - TEST-PASS | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | chooseCertificate must have been called -
[task 2019-07-29T09:38:13.595Z] 09:38:13 INFO - Leaving test bound popup_mousedown_no_client_cert_dialog_until_navigate_test
[task 2019-07-29T09:38:13.599Z] 09:38:13 INFO - Console message: [JavaScript Error: "The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature." {file: "https://localhost:40450/" line: 0}]
[task 2019-07-29T09:38:13.599Z] 09:38:13 INFO - onStopListening
[task 2019-07-29T09:38:13.600Z] 09:38:13 INFO - GECKO(2939) | MEMORY STAT | vsize 20975726MB | residentFast 1689MB
[task 2019-07-29T09:38:13.600Z] 09:38:13 INFO - TEST-OK | browser/components/urlbar/tests/browser/browser_urlbar_speculative_connect_not_with_client_cert.js | took 1640ms
Assignee | ||
Comment 11•5 years ago
|
||
Sorry about this.
I've updated the patch for fixing this.
Comment 12•5 years ago
|
||
Comment 13•5 years ago
|
||
bugherder |
Description
•