教程:在 Ubuntu 上为 NGINX 配置 SSL 证书

教程:在 Ubuntu 上为 NGINX 配置 SSL 证书

1. 环境准备

  1. 操作系统:Ubuntu 20.04 或更高版本。
  2. Web 服务:NGINX。
  3. 域名:确保你的域名正确指向服务器的 IP 地址(A 记录)。
  4. 权限:需要 sudo 权限。

2. 安装必要工具

更新系统软件包

sudo apt update
sudo apt upgrade -y

安装 Certbot 和 NGINX 插件

sudo apt install certbot python3-certbot-nginx -y

3. 使用 Certbot 申请 SSL 证书

运行以下命令申请证书:

sudo certbot --nginx -d domain.baizi.net

执行步骤:

  1. Certbot 会提示输入你的邮箱地址(用于重要通知)。
  2. 选择是否允许共享邮箱信息(根据个人选择 YN)。
  3. Certbot 会自动配置 NGINX,并尝试验证域名。
  4. 验证成功后,Certbot 会自动安装证书,并更新 NGINX 配置。

成功后,你会看到类似以下提示:

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domain.baizi.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domain.baizi.net/privkey.pem

4. 验证 SSL 配置

访问 https://domain.baizi.net,检查是否启用了 HTTPS。可以使用浏览器查看证书详情或在线工具(如 SSL Labs)测试。

5. 配置强制 HTTPS(可选)

修改 NGINX 配置文件

Certbot 可能已经自动生成了重定向配置。如果没有,请手动编辑你的 NGINX 配置文件,通常位于 /etc/nginx/sites-available/ 目录。

sudo nano /etc/nginx/sites-available/domain.baizi.net

添加或修改以下内容:

server {
    listen 80;
    server_name domain.baizi.net;

    # 将 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name domain.baizi.net;

    ssl_certificate /etc/letsencrypt/live/domain.baizi.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.baizi.net/privkey.pem;

    # 推荐的安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 其他网站配置
    root /var/www/html;
    index index.html index.htm;
}

 

 

测试 NGINX 配置并重启

sudo nginx -t
sudo systemctl reload nginx

6. 自动续期

Let's Encrypt 证书的有效期为 90 天。Certbot 自带自动续期功能,但建议手动验证。

测试续期

运行以下命令,测试是否能成功续期:

sudo certbot renew --dry-run

如果测试成功,系统会自动安排续期任务,无需额外配置。


7. 日常管理

检查证书状态

sudo certbot certificates

手动续期证书

sudo certbot renew

删除旧证书(如果不再需要)

sudo certbot delete --cert-name domain.baizi.net
阅读剩余
THE END