Configuring HTTPS servers
- HTTPS server optimization
- SSL certificate chains
- A single HTTP/HTTPS server
- Name-based HTTPS servers
- An SSL certificate with several names
- Server Name Indication
- Compatibility
To configure an HTTPS server, the ssl
parameter must be enabled on listening sockets in the server block, and the locations of the server certificate and private key files should be specified:
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ... }
The server certificate is a public entity. It is sent to every client that connects to the server. The private key is a secure entity and should be stored in a file with restricted access, however, it must be readable by nginx’s master process. The private key may alternately be stored in the same file as the certificate:
ssl_certificate www.example.com.cert; ssl_certificate_key www.example.com.cert;
in which case the file access rights should also be restricted. Although the certificate and the key are stored in one file, only the certificate is sent to a client.
The directives ssl_protocols and ssl_ciphers can be used to limit connections to include only the strong versions and ciphers of SSL/TLS. By default nginx uses “ssl_protocols TLSv1 TLSv1.1 TLSv1.2
” and “ssl_ciphers HIGH:!aNULL:!MD5
”, so configuring them explicitly is generally not needed. Note that default values of these directives were changed several times.
Please login to continue.