温馨提示×

Debian如何生成Nginx SSL证书

小樊
45
2026-08-18 05:31:37
栏目: 云计算

在 Debian 上给 Nginx 生成 SSL 证书,常见有三种方式,按使用场景从简单到正式说明如下:


一、使用 Let’s Encrypt(推荐,免费、自动续期)

适用场景

  • 有公网域名
  • 网站需要 HTTPS(生产环境)

1️⃣ 安装 Certbot

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

2️⃣ 生成并自动配置 Nginx

sudo certbot --nginx -d example.com -d www.example.com

替换 example.com 为你的真实域名

Certbot 会:

  • 自动申请证书
  • 修改 Nginx 配置
  • 自动设置 HTTP → HTTPS 跳转

3️⃣ 自动续期(默认已配置)

sudo certbot renew --dry-run

证书路径:

/etc/letsencrypt/live/example.com/

二、生成自签名 SSL 证书(测试 / 内网)

适用场景

  • 本地测试
  • 内网环境
  • 不需要浏览器信任

1️⃣ 创建证书目录

sudo mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

2️⃣ 生成私钥和自签名证书

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/nginx.key \
  -out /etc/nginx/ssl/nginx.crt

填写信息示例:

Country Name: CN
State: Beijing
Organization Name: MyCompany
Common Name: example.com

3️⃣ Nginx 配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    root /var/www/html;
    index index.html;
}

4️⃣ 重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

三、使用已有证书(企业 / 商业证书)

文件结构

ssl_certificate     fullchain.crt;
ssl_certificate_key private.key;

Nginx 示例

ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;

四、强制 HTTPS(推荐)

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

五、常见问题

❓ 浏览器提示“不安全”

  • 自签名证书正常现象
  • 公网建议使用 Let’s Encrypt

❓ Nginx 启动失败

sudo nginx -t
journalctl -u nginx

总结建议

场景 推荐方式
公网网站 ✅ Let’s Encrypt
本地 / 内网 自签名证书
企业证书 商业 CA

如果你愿意,可以告诉我:

  • 是否有域名
  • 是否公网
  • Debian 版本(11 / 12)

我可以给你 完全定制的 Nginx SSL 配置

0