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.
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; |
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>.