SSL/TLS Config Generator

Generates a hardened TLS configuration snippet, protocol versions, cipher suite strings, and session settings, for Nginx, Apache, HAProxy, or Caddy, following Mozilla's Modern, Intermediate, or Old SSL configuration profiles. This is a config generator for a server's own TLS settings, not a certificate decoder. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-25

Overview

Introduction

Configuring a server's TLS protocol versions and cipher suites correctly by hand means either trusting an old blog post's cipher string or manually working through Mozilla's guidelines every time you set up a new server.

This tool generates that configuration directly: pick your server and a Modern/Intermediate/Old profile, and get the protocol, cipher, and session settings as a ready-to-paste snippet.

What Is SSL/TLS Config Generator?

A TLS hardening config generator covering four server targets (Nginx, Apache, HAProxy, Caddy) and Mozilla's three standard profiles (Modern, Intermediate, Old), each with its own protocol version list and cipher suite string.

It outputs the specific directives each server uses to configure TLS: ssl_protocols/ssl_ciphers for Nginx, SSLProtocol/SSLCipherSuite for Apache, ssl-min-ver/ssl-default-bind-ciphers for HAProxy, and a tls block for Caddy.

How SSL/TLS Config Generator Works

Each profile maps to a fixed set of supported protocol versions and cipher suite strings (TLS 1.3 ciphersuites plus, for Intermediate and Old, a TLS 1.2 cipher list), matching Mozilla's published guidance for that profile.

Selecting a server wraps those values in that server's actual configuration directive syntax, so switching servers with the same profile keeps the underlying protocol/cipher choices identical, only the surrounding syntax changes.

When To Use SSL/TLS Config Generator

Use it when hardening a new server's TLS configuration, or reviewing an existing one against Mozilla's current recommended profiles.

It's also useful when migrating a TLS setup from one web server to another and wanting to preserve the same security profile.

Features

Advantages

  • Encodes Mozilla's specific, widely trusted profile recommendations instead of requiring you to look them up and transcribe them by hand.
  • Covers four different servers with their real configuration directive names and syntax.
  • Makes the security/compatibility tradeoff explicit via the three named profiles, rather than a single one-size-fits-all cipher list.

Limitations

  • Cipher suite recommendations do change over time; always cross-check against the live Mozilla SSL Configuration Generator before deploying to a long-lived production system.
  • Doesn't cover other important TLS hardening steps (OCSP stapling, HSTS, certificate configuration itself), only protocol/cipher/session settings.

Examples

Intermediate profile for Nginx

Input

server: Nginx, profile: Intermediate

Output

# Mozilla intermediate profile
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;

TLS 1.2 and 1.3 are both enabled, with the TLS 1.2 cipher list set via ssl_ciphers and the TLS 1.3 suites set separately via ssl_conf_command, matching how Nginx actually separates the two.

Best Practices & Notes

Best Practices

  • Default to the Intermediate profile unless you have a specific, verified reason to need Old (legacy client support) or can confirm Modern (TLS 1.3-only) won't break any client you care about.
  • Re-run this generator periodically and diff against your live config, Mozilla's recommendations shift as weak ciphers and protocol versions are deprecated over time.
  • Combine a hardened TLS config with HSTS (see the HTTP Security Headers Generator) so clients are directed to use HTTPS at all going forward.

Developer Notes

Each Mozilla profile is stored as a fixed { protocols, ciphersuites, ciphers } record; server-specific output wraps these values in that server's real directive syntax (Nginx's ssl_conf_command for TLS 1.3 ciphersuites specifically, since ssl_ciphers only covers the TLS 1.2-and-below cipher list in Nginx's own architecture).

SSL/TLS Config Generator Use Cases

  • Hardening TLS settings on a new server deployment
  • Auditing an existing server's TLS configuration against Mozilla's current recommended profiles
  • Migrating a TLS hardening setup from one web server/proxy to another

Common Mistakes

  • Using the Old profile by default for convenience or compatibility, without confirming any client actually still requires TLS 1.0/1.1 or the weaker legacy ciphers it includes.
  • Copying a cipher suite string from an old tutorial instead of a current source, weak ciphers get deprecated and old recommendations go stale.

Tips

  • Cross-check the generated cipher strings against the live Mozilla SSL Configuration Generator (ssl-config.mozilla.org) before applying to a production system you can't quickly roll back.

References

Frequently Asked Questions