Closed Bug 1511989 Opened 6 years ago Closed 5 years ago

consider enabling TLS 1.3 post-handshake authentication if/when NSS implements it

Categories

(Core :: Security: PSM, defect, P5)

63 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla68
Tracking Status
firefox68 --- fixed

People

(Reporter: candrews, Assigned: ueno)

References

Details

(Whiteboard: [psm-blocked])

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0

Steps to reproduce:

Go to a URL that requires TLS 1.3 post-handshake authentication.

This can be tested by using Apache 2.4.37 (or later) ensuring that TLS 1.3 is enabled (which it is by default if OpenSSL 1.1 is used to build Apache), and using "SSLVerifyClient require" inside of a Location or Directory section. For example:
---
SSLCACertificateFile /etc/ssl/DoD_CAs.pem
SSLOCSPEnable on
<Directory /var/www/localhost/htdocs/cac>
        SSLOptions +StrictRequire
        SSLRequireSSL
        SSLVerifyClient require
        SSLVerifyDepth  10
        SSLOptions +FakeBasicAuth
</Directory>
---
See https://bz.apache.org/bugzilla/show_bug.cgi?id=62975 for this issue being reported in Apache (which is invalid; the problem is in Firefox).

Please feel free to test this behavior at https://www.integralblue.com/testhandshake/


Actual results:

An Apache error page is generated with this text:
---
You don't have permission to access /testhandshake/ on this server.
Reason: Cannot perform Post-Handshake Authentication.
---


Expected results:

Firefox should have performed client certificate authentication (such as asking for the PIN for my smartcard).
The same issue occurs in Chrome; this issue has been reported to Chromium at https://bugs.chromium.org/p/chromium/issues/detail?id=911653
Component: Untriaged → Security: PSM
Product: Firefox → Core
See Also: → 1471970
Depends on: 1471970
Priority: -- → P5
See Also: 1471970
Summary: TLS 1.3: cannot perform post-handshake authentication → consider enabling TLS 1.3 post-handshake authentication if/when NSS implements it
Whiteboard: [psm-blocked]
Depends on: 1532312

This adds a config option to enable client authentication through the TLS 1.3 post-handshake auth mechanism.

Pushed by dkeeler@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1bb8ad865648
enable TLS 1.3 post-handshake authentication r=keeler
Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
Assignee: nobody → dueno

This bug is closed and marked fixed, but still occurs on Firefox 78.4.0esr (64-bit).

Did this regress?

This bug only added the ability to turn it on, given that there are some pending issues. If you want it, set security.tls.enable_post_handshake_auth to true in about:config.

I think there are now larger problems, at least in Firefox for Android. In recent versions of Firefox for Android (version 80 or higher, at least), setting security.tls.enable_post_handshake_auth to true in about:config doesn't work. First, you have to use the Firefox nightly to even get the option to set the value, because in the regular Firefox Daylight, about:config doesn't work. But in the nightly, if you set security.tls.enable_post_handshake_auth to true, you no longer get the post-handshake error, but instead you get a Firefox error when going to a site that needs it. The new error says: "Secure Connection Failed. The page you are trying to view cannot be shown because the authenticity of the received data could not be verified. Please contact the website owners to inform them of the problem." You then have the option of clicking on "Advanced", and then you get "Someone could be trying to impersonate the site and you should not continue. Websites prove their identity via certificates. Firefox Nightly does not trust <website url> because its certificate issuer is unknown, the certificate is self-signed, or the server is not sending the correct intermediate certificates." (This is all bogus, as the same site currently works in Firefox for Android 68, after setting the option in about:config. Furthermore the client cert is self-signed of course, but not the main SSL cert on the server.) Finally, I am shown an option to "Accept the Risk and Continue". If I click that, I get returned to the original "Secure Connection Failed" error. The error is simply looping.

It should be noted that this still happens, after following the instructions, found at https://fingers.today/tech/import-p12-client-cert-firefox-android for importing the client cert into Firefox.

It seems that in recent versions of Firefox for Android, at least, this problem is actually worse than in version 68.

@najqvashyxvzeszhib

that sounds like a regression, please file a new bug

(In reply to najqvashyxvzeszhib from comment #7)

Firefox Nightly does not trust <website url> because its certificate issuer is unknown, the certificate is self-signed, or the server is not sending the correct intermediate certificates." (This is all bogus, as the same site currently works in Firefox for Android 68, after setting the option in about:config. Furthermore the client cert is self-signed of course, but not the main SSL cert on the server.) Finally, I am shown an option to "Accept the Risk and Continue". If I click that, I get returned to the original "Secure Connection Failed" error. The error is simply looping.

The test web site (https://www.integralblue.com/testhandshake/) is now updated with let's encrypt cert, should be resolved.

(In reply to Dana Keeler (she/her) (use needinfo) (:keeler for reviews) from comment #6)

This bug only added the ability to turn it on, given that there are some pending issues. If you want it, set security.tls.enable_post_handshake_auth to true in about:config.

What's the reason to not have this be the default?

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: