I found some hardened SSL settings in github.com/ioerror/duraconf.
Here is the header from the config:
This is an example of a high security, somewhat compatible SSLv3 and TLSv1 enabled HTTPS proxy server. The server only allows modes that provide perfect forward secrecy; no other modes are offered. Anonymous cipher modes are disabled. This configuation does not include the HSTS header to ensure that users do not accidentally connect to an insecure HTTP service after their first visit.
It only supports strong ciphers in PFS mode:
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Only strong ciphers in PFS mode
ssl_ciphers ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA;
ssl_protocols SSLv3 TLSv1;
If we were to use these settings on our website, what does "somewhat compatible" mean? For example, would IE6 still be able to connect?
Internet Explorer on Windows XP (that’s 6, 7 and 8) can’t connect because they don’t support Forward Secrecy. You can test things like this on your own over at SSLLabs.
Other than that everything should work, but there might be old mobile clients that can’t connect as well. This would need further testing.
Personally I think this configuration isn’t suitable for real world websites.
AES256
is a sham and only increases the connection time.AES128
is more than good enough for normal websites, have a look at this document from Seagate. Unless you’re planning to deploy a banking website or maybe a whistle blower thingy go withAES128
and spare your server from the computing overhead.My personal configuration for nginx looks like the following (full nginx configuration can be found in one of my repositories).
I also use a custom
init.d
script to start nginx and directly fetch the OSCP response, this ensures that all clients can validate it. You can find it in one of my repositories.what do you mean by "hardened" in case of SSL?
which cipher_suites are used in the first hand depends on what cipher_suites are available on your server, then on server_suggestions, then on what the client is able to speak. with those cipher_suites you have ECDHE and DHE configured which is kinda ok when you want to use PFS, but since only TLSv1 ist enabled, i dont think you can use ECDHE anyway, so you'll stick to DHE, which might be used with most browsers. Some very legacy clients (IIRC IE <= 9) might not be able to use PFS, so you'll keep them out with this config.
if you wan to browser-test out the given cipher_suites:
openssl ciphers
the problem with taking cipher_suggestions from 3rd parties:
you might find more infos on nginx + ssl here: Guide to Nginx + SSL + SPDY
some things i dont like about the nginx-config you linked to:
~~~
~~~
My best guess is that "somewhat compatible" is used as a way of saying "not fully compatible".
That cipher list does not support IE6 as IE6 has no FPS ciphers available to it.
You might also find this article of use.