TL;DR: set security.tls.version.fallback-limit and security.tls.version.min to 0.
Firefox 34 takes the strong stance of disabling SSLv3, completely, by default, with no publicized workarounds. Due to the lack of TLS_RSA in TLS 1.2 support, many sites have become non-operational. Here’s a non-profit’s site I use that has about ten million users:
| ssl-enum-ciphers: | SSLv3: | ciphers: | TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_RC4_128_MD5 - strong | TLS_RSA_WITH_RC4_128_SHA - strong | compressors: | NULL | TLSv1.1: | ciphers: | TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_RC4_128_MD5 - strong | TLS_RSA_WITH_RC4_128_SHA - strong | compressors: | TLSv1.2: | ciphers: | TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_RC4_128_MD5 - strong | TLS_RSA_WITH_RC4_128_SHA - strong | compressors: | |_ least strength: strong
This is fine from a theoretical information security perspective – SSLv3 is somewhat broken, is more than fifteen years old, and TLS v1.0, at a minimum, is supported everywhere and is better. But the way Mozilla went about this was lazy and stupid, as it hurts security over the long term.
Look at what Microsoft is doing with SHA-1 certificates (announcing deprecation now and full removal of support in 2017) or what Google is doing with SHA-1 and Chrome (nagging users about it starting in 2015). Neither of those two actions break secure sites for users on, with almost not notice, but they do get the point across, and will spur sysadmins to made changes.
Mozilla just decided to break SSLv3 sites (and by extension many TLS sites due to cyphersuite selection), by default, and give users no way of knowing in-browser what happened or what to do about it (yeah, “bug the sysadmin” is so realistic…).
Here’s what they should have done:
1) announced removal of support ~one year in advance.
2) bring up a warning in the browser at that point.
3) offer to create a temporary exception for the site in question for the 1 year period (SSL exceptions are already a feature! Add a time limit and tweak the UI!)
What they did instead was to just break things for everybody. One has to presume they figured this would spur action immediately on the part of administrators. Apparently what they don’t know is that those sysadmins may need to go through change processes, purchase new equipment, wait for a budget cycle, etc. Guess what? Corporate IT people don’t read the Mozilla blog (most security people don’t even read it) and even if they did, two months’ notice is wildly insufficient for most Corporate IT. Let’s play “who would have really been hurt by phasing out over a year?”!
Since people need to operate in the real world, here’s the advice (credit: dave_d) that’s both operationally necessary and repugnant from the stance of the Internet’s security:
1) Type about:config in the location bar.
2) In the search bar that comes up, enter: security.tls.version.min . Double-click on the entry that comes up and change the value to 0.
3) Do the same for security.tls.version.fallback-limit .
4) Test your broken site. It should work now.
5) NOW MANUALLY CHECK THE CYPHER SUITES ON ALL OF YOUR WEBSITES EVERY TIME YOU VISIT AND WHEN THE SITES UPGRADE TO TLS v1 AT A MINIMUM, DISABLE THIS SETTING.
6) Laugh at #5 as you know nobody will ever do that, and instead, they’ll accept SSLv3 for as long as they have their profile. Great, job, Mozilla. Thanks for trying so hard.
Bold posturing is no replacement for caring about users, implementing effective transition plans, and putting in the hard work necessary to carry them out. FWIW, when I was at a meeting last night and we had to access an SSLv3-fronted database, I switched over to Chrome to get the work done. For users afraid of about:config, that’s an easier option. Most users will never see this post either, and I really wish I didn’t need to write it.