My blog now gets an A+ on SSL Labs

Woohoo!

Since it's was way more of a pain than it should be, I figured I'd brag a little bit.

Since Ubuntu 14.04 still ships with an ancient version of NodeJS, I had to compile my own version using the latest source (v0.13.0) in order to get ECC and perfect forward secrecy which was introduced in v0.12.

Then I used the following settings to order the cipher suites, blacklist some week algorithms (like md5, rc4, export ciphers, and null ciphers), and remove SSLv3:

var https_options = {
    'key': privateKey,
    'cert': certificate,
    'ca': ca_bundle,
    'secureProtocol': 'SSLv23_method',
    'secureOptions': constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_SSLv2,
    'honorCipherOrder': true,
    'ciphers': [
        "ECDHE-RSA-AES256-SHA384",
        "DHE-RSA-AES256-SHA384",
        "ECDHE-RSA-AES256-SHA256",
        "DHE-RSA-AES256-SHA256",
        "ECDHE-RSA-AES128-SHA256",
        "DHE-RSA-AES128-SHA256",
        "HIGH",
        "!aNULL",
        "!eNULL",
        "!EXPORT",
        "!DES",
        "!RC4",
        "!MD5",
        "!PSK",
        "!SRP",
        "!CAMELLIA"
    ].join(':')
};

Finally, I used Helmet to enable HSTS and a few other features it includes.

And the result of all this 😀🔑: