TLS / SSL Server Config Generator
TLS settings written for your exact server and OpenSSL versions, from proven profiles.
Try before you buy.
- Free preview: the profile summary, the checks for your versions and the test commands in full, with the first lines of the configuration (up to 20).
- Locked until you unlock it: download and copy.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Your server
From openssl version (or the version your server was built with).
Your TLS configuration
- Protocols
- TLS 1.2 cipher suites
- Key exchange
- Certificate
- Oldest clients
Profiles from the Server Side TLS guidelines (Mozilla, now TLSRef; guidelines (opens in a new tab)), their data under the Mozilla Public License 2.0.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the TLS / SSL Server Config Generator
Picking TLS protocols, cipher suites and key-exchange groups by hand is how servers end up with TLS 1.0 still on, or with a setting their software version does not understand. This page writes the TLS part of your server’s configuration from the Server Side TLS profiles — the recommendations Mozilla published and the TLSRef project now maintains — for the exact software and OpenSSL version you run.
Choose nginx, Apache, HAProxy, Caddy, Traefik, lighttpd, Postfix, Dovecot or a Go program, enter the versions and pick a profile: Modern (TLS 1.3 only), Intermediate (TLS 1.2 and 1.3, the usual choice) or Old (TLS 1.0 and up, for clients you cannot upgrade). The page uses only what your versions support: TLS 1.3 needs OpenSSL 1.1.1, the post-quantum hybrid group X25519MLKEM768 needs OpenSSL 3.5, nginx switches HTTP/2 on with http2 on from 1.25.1, HAProxy and Postfix changed their syntax over the years, Dovecot renamed its settings in 2.4. It adds HSTS and the http-to-https redirect where they belong, and says what to test.
Without a pass you see a free preview: the profile summary, the checks for your versions and the test commands in full, with the first lines of the configuration. The whole configuration, and copying or downloading it, unlock with a Pro pass.
How to use it
- Choose your server software and enter its version (the page shows the command that prints it, such as
nginx -v). - For servers that use OpenSSL, enter the OpenSSL version from
openssl versionon the same machine. - Pick a profile: Intermediate unless every client is recent (Modern) or you must serve very old ones (Old).
- Choose HSTS, the redirect from http and OCSP stapling, and enter your host name.
- Read the checks, then with a pass, or once this result is unlocked, copy or download the configuration; the free preview shows its first lines. Merge it into your configuration, run the check command shown, and test the live server.
Examples
ssl_protocols TLSv1.2 TLSv1.3; ssl_ecdh_curve X25519:prime256v1:secp384r1; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:…; ssl_prefer_server_ciphers off; … listen 443 ssl; http2 on;
OpenSSL 3.0 has no ML-KEM, so X25519MLKEM768 is left out; with OpenSSL 3.5 it comes first.
listen 443 ssl http2; ssl_session_tickets off;
Before 1.25.1 nginx turns HTTP/2 on in the listen line, and before 1.23.2 it does not rotate session ticket keys by itself.
smtpd_tls_protocols = >=TLSv1.2 tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:… tls_eecdh_auto_curves = X25519 prime256v1 secp384r1
Common uses
- Setting up TLS on a new web, mail or proxy server without reading every directive’s documentation.
- Turning off TLS 1.0 and 1.1 and weak ciphers flagged by a scan or an audit.
- Moving to TLS 1.3 and post-quantum key exchange after an OpenSSL upgrade.
- Keeping one TLS policy across nginx, HAProxy and mail servers.
The three profiles
- Modern — TLS 1.3 only, with its three cipher suites (AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305) and an ECDSA certificate. Oldest clients: Firefox 63, Android 10, Chrome 70, Edge 75, Java 11, OpenSSL 1.1.1, Safari 12.1.
- Intermediate — TLS 1.2 and 1.3; for TLS 1.2 only forward-secret ECDHE suites with AES-GCM or ChaCha20-Poly1305. ECDSA (P-256) certificate recommended, RSA 2048 allowed. Oldest clients: Firefox 31.3, Android 4.4.2, Chrome 49, IE 11 on Windows 10, Java 8u161, Safari 9.
- Old — TLS 1.0 to 1.3 with CBC, RSA key exchange and 3DES suites, for clients back to IE 8 on Windows XP and Java 6. Guideline 6.0 removed it; this page offers it from guideline 5.8, for OpenSSL-based servers only, and warns.
All three prefer X25519MLKEM768 (a hybrid of X25519 and the post-quantum ML-KEM-768), then X25519, P-256 and P-384, and let the client choose the cipher (except Old). None needs DH parameters any more: guideline 5.8 removed the DHE suites. HSTS uses a max-age of two years (63072000 seconds). Source: Server Side TLS and its guideline data (Mozilla Public License 2.0).
OCSP stapling and Let’s Encrypt
The guidelines recommend stapling, but it only works if your certificate names an OCSP responder. Let’s Encrypt turned its OCSP service off and publishes revocation only through CRLs, so its certificates have no OCSP address and stapling does nothing for them. Stapling is therefore off by default here; switch it on for certificates from a CA that still runs OCSP (look for “OCSP” under Authority Information Access in the SSL Certificate Decoder).
Standards behind the profiles
- RFC 8446 defines TLS 1.3; RFC 8996 deprecates TLS 1.0 and 1.1.
- NIST SP 800-52 Rev. 2 requires US government servers to support TLS 1.2 with FIPS-based cipher suites, and TLS 1.3. In a FIPS 140 environment, leave out the ChaCha20-Poly1305 suites, which are not FIPS-approved.
- OpenSSL 3 needs
@SECLEVEL=0for TLS 1.0 and 1.1, because its default security level refuses the SHA-1 signatures they use (OpenSSL security levels).
Limitations
- The configuration covers TLS: merge it into your own server blocks, virtual hosts or frontends, and replace the certificate paths and host name.
- The page cannot see your server. After the change, test it with
openssl s_client(the command is shown) and check the certificate with the SSL Certificate Checker. - Distributions sometimes build servers with a different OpenSSL than the system one: enter the version the server itself reports (
nginx -V,haproxy -vv). - The Old profile is not offered for Caddy, Traefik and Go programs, whose TLS stack handles legacy versions and ciphers differently.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, TLS / SSL Server Config Generator shows the profile summary, the checks for your versions and the test commands in full, with the first lines of the configuration (up to 20). Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
Which profile should I use?
Intermediate, unless you know every client is recent (then Modern) or you must serve devices that cannot be updated (then Old, ideally on a separate host name). Intermediate works with every browser of the last several years, IE 11 on Windows 10 and Java 8u161 included.
What is X25519MLKEM768?
A hybrid key exchange: X25519 combined with ML-KEM-768, the post-quantum algorithm NIST standardised, so a recording of today’s traffic stays protected even against a future quantum computer. It needs OpenSSL 3.5 (Go 1.24, Caddy 2.10.0, Traefik 3.5.0). Clients that do not offer it simply use X25519.
Why is ssl_prefer_server_ciphers off?
Because every cipher in the Modern and Intermediate profiles is strong, the profiles let the client choose — a phone without AES hardware can then pick ChaCha20-Poly1305, which is faster for it. Only the Old profile, with weak ciphers in its list, prefers the server’s order.
Do I need a dhparam file?
No. The current profiles have no DHE cipher suites (guideline 5.8 removed them), so nothing uses DH parameters.
Why does Postfix get a warning about port 25?
Mail between servers on port 25 uses opportunistic TLS: if the two servers cannot agree on TLS settings, the sender delivers without encryption. Restricting port 25 too much can therefore lower security. Use the stricter settings for submission ports and IMAP.