温馨提示×

Debian LNMP如何设置SSL

小樊
46
2026-07-15 17:52:51
栏目: 云计算

在 Debian 上搭建 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 后,设置 SSL(HTTPS) 通常推荐使用 Let’s Encrypt 免费证书。下面给你一套完整、常用、可落地的做法。


一、前提条件

  1. Debian 系统(10/11/12 均可)
  2. 已安装 LNMP
    • Nginx 正常运行
    • 网站已可通过 HTTP 访问
  3. 域名已解析到服务器公网 IP
    dig example.com
    
  4. 80 和 443 端口未被占用且已放行

二、安装 Certbot(Let’s Encrypt 工具)

1️⃣ 更新系统

sudo apt update
sudo apt upgrade -y

2️⃣ 安装 Certbot 和 Nginx 插件

sudo apt install certbot python3-certbot-nginx -y

三、申请 SSL 证书(自动配置 Nginx)

一条命令即可(推荐)

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

过程中会:

  • 自动验证域名
  • 自动修改 Nginx 配置
  • 自动重载 Nginx
  • 自动配置 HTTP 跳转 HTTPS

这是最简单、最安全的方式


四、手动配置 SSL(适合自定义 Nginx 配置)

1️⃣ 申请证书(不修改 Nginx)

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

证书路径:

/etc/letsencrypt/live/example.com/
├── fullchain.pem
├── privkey.pem

2️⃣ 修改 Nginx 站点配置

编辑站点配置:

sudo nano /etc/nginx/sites-available/example.com

示例配置:

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

server {
    listen 443 ssl http2;
    server_name example.com www.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 HIGH:!aNULL:!MD5;

    root /var/www/example.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }
}

3️⃣ 检查并重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

五、自动续期(非常重要)

Let’s Encrypt 证书 90 天有效,但 Certbot 已自动配置定时任务。

手动测试续期

sudo certbot renew --dry-run

查看定时任务

systemctl list-timers | grep certbot

✅ 正常情况下无需人工干预


六、常见问题排查

1️⃣ 443 端口无法访问

sudo ss -lntp | grep 443
sudo ufw allow 443/tcp

2️⃣ Nginx 启动失败

sudo nginx -t
journalctl -xe

3️⃣ 证书申请失败

  • 检查域名解析
  • 检查 80 端口是否开放
  • 确认 Nginx 正在运行

七、进阶优化(可选)

开启 HSTS

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

HTTP/2

listen 443 ssl http2;

使用 A 级 SSL 配置

sudo apt install ssl-cert

八、总结(最简流程)

apt install certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com

✅ 自动申请
✅ 自动配置
✅ 自动续期


如果你愿意,我可以根据你的 Debian 版本 + Nginx 配置给你一份完全定制的 SSL 配置模板

0