Installing SSL on nginx in 15 min with Let's Encrypt: certbot automatically modifies the config + enables HTTPS + adds HTTP→HTTPS redirect. For manual control — copy fullchain.pem + privkey.pem into /etc/ssl/, add an ssl block to the server config, enable HSTS + modern ciphers.
Below: step-by-step, working examples, common pitfalls, FAQ.
Free online tool — SSL certificate checker: instant results, no signup.
apt install certbot python3-certbot-nginxcertbot --nginx -d example.com -d www.example.comcurl -I https://example.com → HTTP/1.1 200 OKsystemctl enable --now certbot.timer| Scenario | Config |
|---|---|
| nginx ssl block (manual) | server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
} |
| HTTP→HTTPS redirect | server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
} |
| HSTS header (preload-ready) | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; |
| OCSP Stapling | ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 valid=60s; |
| Pre-installed cert (not Let's Encrypt) | # cat cert.pem intermediate.pem > fullchain.pem
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/private.key; |
To install an SSL certificate on Nginx, obtain your certificate files, then modify the Nginx configuration file to include the paths to your SSL certificate and private key. Use the listen 443 ssl; directive to enable SSL, and test the configuration before reloading Nginx. This ensures secure HTTPS connections for your website.
Installing an SSL certificate on Nginx involves several specific steps to ensure your server is correctly configured for secure connections. Below, we provide a detailed walkthrough of these steps, including practical commands and configurations.
Before you start, ensure that you have:
If you haven't already obtained an SSL certificate, you can purchase one from a trusted CA like Let's Encrypt, DigiCert, or Comodo. If you're testing, you can create a self-signed certificate with the following commands:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/mydomain.key -out /etc/ssl/certs/mydomain.crtThis command generates a private key and a self-signed certificate valid for one year.
Next, you need to configure Nginx to use your SSL certificate. Open the Nginx configuration file for your site, typically located at /etc/nginx/sites-available/default or a similar path depending on your setup:
sudo nano /etc/nginx/sites-available/defaultIn the server block, add the following lines:
server {
listen 443 ssl;
server_name mydomain.com www.mydomain.com;
ssl_certificate /etc/ssl/certs/mydomain.crt;
ssl_certificate_key /etc/ssl/private/mydomain.key;
location / {
try_files $uri $uri/ =404;
}
}Replace mydomain.com with your actual domain name, and ensure the paths to your certificate and key files are correct.
For better security, it’s advisable to redirect all HTTP traffic to HTTPS. You can add another server block to your configuration file:
server {
listen 80;
server_name mydomain.com www.mydomain.com;
return 301 https://$host$request_uri;
}This configuration listens on port 80 and redirects any requests to the equivalent HTTPS URL.
Before reloading Nginx, check your configuration for syntax errors:
sudo nginx -tIf the test is successful, you will see a message indicating the configuration is okay. If there are errors, fix them as indicated.
Once your configuration is error-free, reload Nginx to apply the changes:
sudo systemctl reload nginxTo confirm that your SSL certificate is installed correctly, you can use tools like SSL Labs' SSL Test (ssllabs.com) or simply navigate to your website using https://. Look for the padlock symbol in the browser's address bar, indicating a secure connection.
By following these steps, you can successfully install an SSL certificate on your Nginx server, enhancing the security of your website and ensuring encrypted connections for your users. Regularly check your SSL certificate's validity and renew it as needed to maintain secure communications.
SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.
Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).
Full chain verification: from leaf certificate through intermediates to root CA.
Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.
Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.
SSL certificate monitoring
TLS config audit
HTTPS as ranking factor
customer trust
www and subdomains.Strict-Transport-Security header forces browsers to always use HTTPS.SSL certificate monitoring, check history and alerts 30 days before expiry.
Sign up freeYes, 100%. Google, Facebook, Cloudflare use it. Only constraint: 90 days validity (auto-renew handles that).
Same as manual: fullchain.pem = cert + intermediate, separate privkey.pem. In nginx — ssl_certificate + ssl_certificate_key.
Yes. Certbot keeps a backup. You can revert: <code>cp nginx.conf.backup nginx.conf</code>.
systemctl enable --now certbot.timer. Runs twice daily. Renew hook: <code>--deploy-hook "systemctl reload nginx"</code>.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.