SSL Labs: Stricter security requirements for 2014
blog.ivanristic.com
blog.ivanristic.com
EDIT: actually, SSL Labs stopped requiring server-side BEAST mitigation a month or so before Apple finally handled BEAST in OSX Mavericks. It happened only after I had been satisfied that BEAST exploitation was not very likely. You can find more information here: http://blog.ivanristic.com/2013/09/is-beast-still-a-threat.h...
I am not afraid about BEAST, but I felt it would be wrong to penalize those who have legitimate reasons to be worried. In the end, it's all about context.
That said, perhaps the penalty for using RC4 with TLS 1.1 and better (which are not vulnerable to BEAST) should have been harsher. I'll consider it for a future update.
That still wouldn't help old clients. For them, only one solution: upgrade!
With OpenSSL, the best we can do right now is prioritize suites so that SHA2 ones are on top. By doing that, you know that TLS 1.2 capable clients are going to use good suites. The rest will fall back to whatever is below.
At some point, the world will have to tell them "you're on your own" like it finally did with IE6. Perhaps give them helpful informative messages to upgrade - I bet if Facebook and Twitter redirected old browsers to such a page, their market share would shrink to negligible levels overnight.
I agree with the principal of pushing people towards upgrading, but it's harder if you can't show them a helpful message to explain things.
With regards to BEAST, the problem is that a server has no way of telling if a client implements the mitigation technique. The only 100% safe assumption you can make is that the client negotiating TLS 1.0 is vulnerable.
I use CipherFox (https://addons.mozilla.org/en-US/firefox/addon/cipherfox/) to disable RC4, then only enable it specifically when it is needed as far too many servers not only support it, but attempt to use it when a client still supports non-broken/backdoored algorithms.
Not only is RC4 weak, but it was designed by an RSA Security employee. RSA have proven they can not be trusted, and I think are now on the slow slide into decline and death. Contracts will sustain them for a few years, but they certainly aren't getting any more of those now.
For your needs (HSTS preloading), a shorter value is probably fine.
Doing so would -- unless you're extraordinarily fastidious -- more than likely open you to more risk than the existing issues. Keeping up with security patches is more important, and your package manager is almost definitely better at it than you are. So keep doing what you're doing -- you're good!
It also doesn't help that Amazon gives you a TON of junk ciphers (like the anon ones) but is missing some stronger ones.
The drawback of "includeSubdomains", of course, is that you will have to deploy all subdomains over SSL.
A couple of comments:
"Servers that do not support Forward Secrecy with our reference browsers are given a warning."
Why aren't such servers capped to a non-A rating?
Also, the current scoring scheme that puts Cipher Strength among the bars at the top but doesn't put Forward Secrery there. Is there a reason to believe that it's more worthwhile to highligh symmetric cipher key length than to highlight Forward Secrecy, including the DH group size?
Considering that the security of AES256 might be closer to AES128 per https://www.schneier.com/blog/archives/2009/07/new_attack_on... and running more rounds might give more opportunity for timing attacks in case a round isn't constant-time, it seems weird to me to highlight the lack of AES256 more than DH group size. Likewise, it seems weird to highlight the difference between AES128 and AES256 more than the difference between RC4 and AES.
Also relevant is that these new rules are added on top of the 2009 rating guide, which does not offer an adequate framework for them. Just as an illustration, there is currently no meaning behind the A-F grades. A is good, and F is bad, clearly, but we don't know what the grades in between mean.
Same response to your ciphers question. I can't stretch the current approach to go handle those small differences. The calculations made some sense at the time, but they no longer work for everything we want to take into account.
I currently working a new version of the rating guide--from scratch--and it's going to solve all those problems, and a few more.
I'm normally a Debian Stable and CentOS6 guy, but both fall flat here, last I checked.
https://www.ssllabs.com/ssltest/viewClient.html?name=OpenSSL...
CentOS 6.5 comes with nginx 1.0.15 which by the documentation supports TLS1.2
Edited to add: my information is out of date! See ivanr's reply.
Neomailbox A
Countermail.com B
Cryptoheaven.com F "world's safest email" lol
Riseup.net the service political activists rely on only uses TLS1.0/SSL3
IE 6 / XP - No FS - No SNI - Protocol or cipher suite mismatch
This is because I disabled SSLv3 which means people using IE6 on WinXP simply can't access the site. I see this as more of a win than a fail.Identical SSL configurations otherwise.
Is this expected? Or am I doing something wrong?
SNI is what allows you to use two different certificates (associated with two different domain names) with the same IP address. Your choices seem to be:
1. Rely on SNI, which doesn't work with IE on WinXP, or on 2.x Android;
2. Give your server two public IPs, with each pointing to a different domain; OR
3. Generate a single SAN certificate that references both domains (http://en.wikipedia.org/wiki/SubjectAltName) Not all certificate issuers can generate a SAN certificate.
I went through the delta between the reports with a fine-toothed comb and discovered that SNI wasn't the problem. It was a biggie: looks like HSTS wasn't enabled for visits to the static part of the site (like the homepage).
It seems like Nginx is doing something counter-intuitive. I've set HSTS at the server level using the 'add_header' directive.
I've set 'max-age=0, must-revalidate' at the location level using add_header for the static parts of my site. I expected Nginx to add both add_headers, but it only seems to do the "deepest" set of add_headers it finds.
Duplicating the 'add_header' directive at the location level (resulting in two add_header directives) results in HSTS being sent for the static parts also.
Now I get A+ on SSL Labs for both sites.
https://www.ssllabs.com/ssltest/analyze.html?d=theticketfair...
- You don't need the builtin session cache. According to the Nginx documentation, it's more efficient to rely only on shared memory alone.
- You should use a longer session duration. Five minutes is too short. Use at least one hour there.
- For performance reasons, you might want to enable OCSP stapling.
- SSL Labs does not currently penalize Diffie-Hellman parameters of 1024 bits (the Nginx default), but it's something you should generally look to improve. It's easy with the ssl_dhparam directive. (Some libraries, for example Java 6 and 7, does not support DH params over 1024 bits, though. So take that into consideration.)
Also, my nginx.conf includes
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";