Product

Product Features How to Compare Docs Screenshots Why

Start here

Getting started Download Guides Frequently asked questions

More

Security Support Roadmap About

Certificates and TLS

TLS settings

The settings that decide how a browser and your load balancer agree on encryption. Sensible defaults are already in place, so most people never open this. It is here for the people who have to.

lb-01.example.net/lb/sites/2
The settings tab of a site. Only options this build of nginx can run are shown at all.
The settings tab of a site. Only options this build of nginx can run are shown at all.

Only what your nginx can do is offered

The manager reads nginx -V from the real binary on each node and works out which modules are compiled in. A setting for a module you do not have is simply not there. That is the reason you cannot save something that would stop nginx starting.

Protocols

ProtocolPosition
TLS 1.3On. This is what you want for nearly all traffic.
TLS 1.2On. Still needed by a long tail of older clients and some payment terminals.
TLS 1.1 and 1.0Off. Both are formally deprecated and turning them on is a compliance failure in most audits.
HTTP/2On by default. Faster for pages with many small resources.
HTTP/3 and QUICAvailable, because the build includes the module. Worth turning on for mobile heavy traffic.

OCSP stapling

With stapling on, your server fetches the certificate's revocation status itself and hands it to the visitor along with the certificate. Without it, the visitor's browser may go and ask the certificate authority, which is slower and tells that authority which sites the visitor is looking at. Leave it on.

Session cache

A shared session cache lets a returning visitor skip the expensive part of the handshake. It is on by default with a sensible size. The one thing to know in a cluster: the cache is per node, so a visitor whose next request lands on the other node pays for a full handshake. That is normal and it costs milliseconds.

Strict transport security

Think before you set a long max age

HSTS tells browsers to refuse plain http for this name for a period you choose. That is exactly what you want, and it is also very hard to take back: a browser that has been told two years will not talk to that name over http for two years, whatever you do afterwards. Start with a short value, confirm everything on the name works over https, then raise it.

Cipher suites

The default list is a modern one and most people should leave it alone. Two situations justify changing it:

  • An audit or a policy names specific suites you must offer or must not offer.
  • A client you cannot change needs something the default list leaves out. In that 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 really only affects TLS 1.2 traffic.

Common questions

Are these settings per site or per fleet?

Per site, so one legacy application can keep TLS 1.2 without dragging your other sites back with it.

Will turning on HTTP/3 break anything?

It is negotiated, so a client that does not support it uses HTTP/2 or HTTP/1.1. The thing to check is that UDP 443 is open, since QUIC does not use TCP.

How do I test what my site actually offers?

Any external TLS testing service will tell you, and openssl s_client with the -groups option will tell you about the key exchange specifically.

Step by step instructions

The how to section has searchable, task shaped answers. Search it for tls.

Related features

Two fresh servers is all it takes

Ubuntu 22.04 or newer, root access, and about twenty minutes. The installer does the rest and it is safe to run twice.