Configure
TLS configuration generator
Pick your server and a compatibility level and get a ready-to-paste TLS configuration with HSTS, optional post-quantum key exchange and version notes.
Runs in your browser Everything you enter is processed locally with JavaScript and is never uploaded to ssl.sh.
The TLS config generator writes the HTTPS settings for your server. Choose the server, a profile (modern, intermediate or old) and the options you want; the configuration appears immediately with the minimum versions it needs. Copy it into your server configuration, test, and reload. The generator runs in your browser.
How to use it
- Server: Nginx, Apache, Caddy, HAProxy, Traefik, Lighttpd, IIS (PowerShell), Tomcat, Node.js, Go, Postfix or Dovecot. Dedicated pages cover Nginx, Apache, IIS and others.
- Profile: intermediate unless you have a reason to choose otherwise.
- Options: HSTS (two years, includeSubDomains, optional preload), HTTP → HTTPS redirect, OCSP stapling, X25519MLKEM768.
- Paths: your certificate chain and key file paths (defaults follow
/etc/ssl/example.com/fullchain.pem). - Copy the result, test the configuration and reload the server.
The three profiles
Intermediate is the right profile for almost every public site; modern drops TLS 1.2, and old adds TLS 1.0 and 1.1 for legacy clients.
| Profile | Protocols | TLS 1.2 ciphers | For |
|---|---|---|---|
| Modern | TLS 1.3 | none (TLS 1.3 suites are fixed) | recent clients only |
| Intermediate | TLS 1.2, 1.3 | ECDHE with AES-GCM or ChaCha20-Poly1305 | almost every site |
| Old | TLS 1.0–1.3 | adds CBC and RSA key exchange | very old clients |
The intermediate TLS 1.2 cipher list is ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305, with the client's preference honoured.
Version requirements
- TLS 1.3 needs OpenSSL 1.1.1 or newer (nginx, Apache, HAProxy, Lighttpd, Node.js) and Windows Server 2022 or newer for IIS.
- nginx 1.25.1 introduced the
http2 on;directive; older versions uselisten 443 ssl http2;. - X25519MLKEM768 needs OpenSSL 3.5 (released April 2025) for OpenSSL-based servers, Go 1.24 for Go and Traefik, Caddy 2.10.
- OpenSSL 3 only allows TLS 1.0/1.1 at
@SECLEVEL=0, which the old profile sets.
After deploying
Check the result with the SSL checker: it shows the protocols and the key exchange group actually negotiated. Look up any cipher suite in the cipher suite lookup, and verify the HSTS header with the HSTS checker.
FAQ
Which profile should I choose?
Intermediate for almost every public website and API: it supports clients back to about 2014 (TLS 1.2) and is secure. Modern if you control all clients or only need recent browsers. Old only if you must serve very old devices, and only on a separate host if possible.
Should I enable X25519MLKEM768?
If your server's TLS library supports it, yes: it protects today's traffic against future quantum attacks and current Chrome, Firefox and Safari releases already offer it. With OpenSSL older than 3.5 the setting causes an error, so check openssl version first.
Do I still need OCSP stapling?
It only helps for certificates whose CA still runs OCSP. Let's Encrypt removed OCSP URLs from new certificates in May 2025 and turned off its OCSP responders in August 2025, so for its certificates the option does nothing.
Why no DHE ciphers in the intermediate profile?
ECDHE gives the same forward secrecy and is supported by every TLS 1.2 client, so leaving DHE out avoids having to generate and maintain DH parameters.