Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including ssl-config with all npm packages installed. Try it out:

var sslConfig = require("ssl-config")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

ssl-config v1.0.0

Allows you to specify SSL/TLS cipher suites based on both security and browser compatibility.

SSL Config

A node.js implementation of the recommended cipher suites and TLS/SSL versions from Mozilla's Server Side TLS project.

The suite list uses the cipher suite prioritization logic from Mozilla. Since Firefox and Chrome don't support AES-GCM with 256 bit keys, a 128 bit AES key is considered superior.

Note this package only sets cipher suites and TLS/SSL versions, other parts of the recommendations are implemented elsewhere, eg, for Express servers HSTS we recommend using Helmet.

Usage

Just use either 'modern', 'intermediate' or 'old'.

modern

Requires IE 11, Firefox 27, Chrome 22, Safari 7, Android 4.4, Opera 14, Java 8 or newer.

intermediate

Requires IE 7, Firefox 1, Chrome 1, Safari 1, Windows XP IE8, Android 2.3, Opera 5, Java 7 or newer.

old

Windows XP IE6, Java 6 and newer. You really shouldn't use this setting, it is implemented for compatibility with Mozilla's tools.

Eg:

var sslConfig = require('ssl-config')('modern');

Then run https.createServer per node.js TLS and io.js TLS docs.

https.createServer({
    key: privateKey,
    cert: certificate,
    ca: certificateAuthority,
    ciphers: sslConfig.ciphers,
    honorCipherOrder: true,
    secureOptions: sslConfig.minimumTLSVersion
});

Or for express.js

var server = https.createServer({
    key: privateKey,
    cert: certificate,
    ca: certificateAuthority,
    ciphers: sslConfig.ciphers,
    honorCipherOrder: true,
    secureOptions: sslConfig.minimumTLSVersion
}, app);

Or for Hapi:

var server = new Hapi.Server();
server.connection({
  // other config options here
  tls: {
    key: privateKey,
    cert: certificate,
    ca: certificateAuthority,
    ciphers: sslConfig.ciphers,
    honorCipherOrder: true,
    secureOptions: sslConfig.minimumTLSVersion
  },
  routes: {
    security: true // turns on HSTS and other security headers
  }
});

License

Mozilla Public License 2.0

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free