-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Complete client hello (socket) #122
Comments
For TLS 1.2 Windows SChannel seems to need this. |
@dcooper16 : for TLS 1.2 we still have the EXPERIMENTAL flag. Q: technically is that still needed with your improvements? Q: have you tested it? I remember with my old implementation IIS 7.5 server hiccuped. |
My guess is that the EXPERIMENTAL flag is no longer needed. I've tested it on quite a few servers, including an IIS/8.0 server that didn't work for TLS 1.2 with sockets before, but does now. However, I haven't tested it against an IIS/7.5 server that has been configured to support TLS 1.2. There is one minor issue that I've discovered with Currently,
It just lists all of the named curves specified in Section 5.1.1 of RFC 4492 (plus a few new ones) in numerical order. The "problem" is that it turns out that the order has meaning:
The result is that if So, there's nothing wrong with the current ordering of the ciphers, but it may make sense to re-order them at some point (e.g., order from weakest to strongest, in the same order as OpenSSL, or in an order that causes the results to match those of SSL labs). |
Oh, I haven't thought about that order. Thx for catching this! Real browser like Chrome and Firefox nowadays only send a few curves (3 each with recent revisions (see https://drwetter.eu/talks/Dirk%20Wetter%20--%20Calm%20down,%20HTTPS%20is%20not%20a%20VPN.pdf, page 20). I just tried with ``openssl -trace:
So, in fact, the stronger ones comes first.
The openssl I compiled shows 570 bits. 163 vs. 57x bits in fact makes a hugh difference. Would you mind change the order accordingly in `socksend_tls_clienthello()``? BTW: fpki-graph.fpki-lab.gov seems remarkable because only never nginx/apache are able to have multiple curves configured (fpki-graph.fpki-lab.gov seems to be Tomcat though). At this moment I leave it up to the results of further testing whether in the upcoming stable testssl.sh will have TLS 1.2 enabled per default with sockets |
It's not surprising that real clients are only offering a few curves. That is consistent with the draft of TLS v1.3 and 4492bis, where most of the curves have been deprecated:
I can change to order of the curves to match OpenSSL, but I like the idea of ordering them from weakest to strongest, since I want to know if a server I'm testing is willing to choose a weak curve, as fpki-graph.fpki-lab.gov does. The client simulations (in https://github.com/dcooper16/testssl.sh/tree/extended_tls_sockets) show that a strong curve will be used with almost all real clients, but I think the server's configuration should be changed to disable the use of the 163-bit curve. On a related note, I just noticed that draft-ietf-tls-negotiated-ff-dhe extends NamedCurve in TLSv1.0 - TLSv1.2 to allow finite field Diffie-Hellman groups to be listed (as the draft of TLS v1.3 does for TLSv1.3:
Should I go ahead and add these to the Supported Groups (formerly Supported Elliptic Curves) extension, in the case that the client is offering any TLS_DHE_... ciphers, or wait until draft-ietf-tls-negotiated-ff-dhe becomes an RFC? |
IIRC I saw that referenced in vanilla openssl as curves have been removed.
That host is really interesting. I actually had a script since September last year which tested the curves but never found a good host. So I just published (eb58598) it because it maybe useful. As far as testssl.sh is concerned. yes, I definitely agree there should be an indicator whether there are weak curves and I see your point. I planned a curve test as an additional feature, see #123.. I am not convinced though that always the weak curve should be displayed. Actually if you want to implement my script in sockets, pls go ahead. That is anyway the better solution. As you are working faster that I am able to release 2.8 that (and #94) I would gladly include this. As far as the NamedCurve extension is concerned: I need to do a little homework. Every new feature which makes sense is welcome, unless it conflicts or breaks things. Off the top of my head: With this one I rather would be careful as I don't know how tolerant ALL servers are if you would include this. IMO: rather keep this for 2.9dev |
all extensions are missing
The text was updated successfully, but these errors were encountered: