如何给网站配置免费 HTTPS(Let's Encrypt)?

想给网站加 HTTPS 但不想花钱买证书

解决方案

使用 Certbot 自动配置 推荐

# 1. 安装 certbot
sudo apt install certbot python3-certbot-nginx

# 2. 获取证书并自动配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com

# 3. 验证自动续期
sudo certbot renew --dry-run

# 4. 设置定时续期(certbot 通常自动设置)
# /etc/cron.d/certbot 或 systemd timer

Certbot 会自动获取 Let's Encrypt 证书、修改 Nginx 配置、设置自动续期。整个过程不到 1 分钟。

适用场景:大多数场景,最简单的方式

手动配置(已有证书)

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.pem;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    add_header Strict-Transport-Security "max-age=63072000" always;

    root /var/www/html;
}

# HTTP → HTTPS 重定向
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

手动指定证书路径和安全参数。适合从其他 CA 购买的证书或企业内部 CA。

适用场景:已有证书文件、企业内部 CA、特殊安全要求