TLS and https
11 answers
Protocols, ciphers, stapling and post quantum key exchange.
Looking for something specific
The searchable index covers all 326 answers at once and filters as you type.
84 Turn on HTTPS for a site
Open the site, tick Listen on https, choose a certificate, tick Redirect http to https, and apply. Leave Listen on http on so renewal keeps working.
With no certificate attached, the https block is left out altogether. That is on purpose: nginx refuses to start at all if it finds a TLS listener with no certificate.
85 Turn off old TLS versions
TLS 1.3 and 1.2 are on by default, and 1.1 and 1.0 are off. Both of the old ones are formally deprecated and turning them on is a compliance failure in most audits. There is almost never a good reason.
86 Confirm post quantum key exchange is working
The dashboard shows a post quantum ready badge next to the OpenSSL version when the build supports it. From a terminal:
openssl list -kem-algorithms | grep -i mlkem
nginx -V 2>&1 | tr ' ' '\n' | grep -i openssl
Any external TLS testing service will also tell you which groups your site offers.
87 Turn on strict transport security
It is a site setting. Start with a short max age, confirm everything on that name works over https, then raise it.
HSTS is very hard to take back. A browser told two years will refuse plain http for that name for two years, whatever you do afterwards.
88 Turn on OCSP stapling
It is on by default and you should leave it on. Without it, a visitor's browser may go and ask the certificate authority itself, which is slower and tells that authority which sites the visitor is looking at.
89 Change the cipher list
The default is a modern list and most people should leave it alone. Two situations justify a change: an audit that names specific suites, or a client you cannot change that needs something the default leaves out. In the second case, add the one thing rather than replacing the whole list.
For TLS 1.3 the suite list is short and fixed by the standard, so most cipher tuning only affects TLS 1.2 traffic.
90 Speak https to my backends and verify it properly
Turn on Use TLS on the pool and leave verification on. If your backends use certificates your company issued, put your authority file on the load balancers and point the pool at it.
Turning verification off works and gives up most of the point: an unverified TLS connection protects against passive listening and not against somebody in the middle.
188 Ask visitors for a client certificate
Open the site, Settings tab, tick Show advanced settings, then TLS, Require a client certificate. Three choices: not needed, require a valid one, or ask for one and allow the request either way.
The middle option is a genuinely strong door. Nobody without the certificate gets past the handshake, so your application never sees the request at all. Good for an admin interface, a partner API, or anything where you control both ends.
The third is for the case where you want the certificate as extra information and the application decides what to do about it.
You need a certificate authority of your own to issue and revoke the client certificates. That part is on you, and losing control of it is worse than not having done it.
189 Turn on HTTP/3
Open the site, Settings tab, advanced settings shown, TLS, tick HTTP/3 (QUIC). Open UDP port 443 on your firewall, which people forget because everything else about 443 is TCP.
HTTP/3 mostly helps on connections that lose packets, which means phones and bad wifi. On a wired connection you will not notice. Browsers fall back to HTTP/2 on their own, so turning it on is low risk.
190 Turn session tickets off
Open the site, Settings tab, advanced settings shown, TLS, untick Session tickets.
Session tickets let a returning visitor skip most of the handshake, which is a real saving. The trade is that if the ticket key ever leaks, recorded traffic can be decrypted after the fact. Turn them off where that matters more than the handshake time.
Session cache timeout in the same section is the other half of resumption and does not carry the same trade, so leaving that on is usually the better compromise.
191 Insist on post quantum key exchange
Open the site, Settings tab, advanced settings shown, TLS. Post-quantum key exchange offers it and lets older clients fall back. Require post-quantum key exchange refuses anything that cannot do it.
Offer it everywhere. Require it only where you control the clients, because requiring it turns every older browser away with an error nobody can act on.
The reason to have it on now is that traffic recorded today can be decrypted later, once the machines exist. Anything with a long secrecy life is worth protecting before the machines arrive, not after.