温馨提示×

debian lnmp如何开ssl

小樊
44
2026-10-10 16:41:22
栏目: 云计算

在 Debian 的 LNMP(Linux + Nginx + MySQL + PHP) 环境下开启 SSL(HTTPS),通常最推荐用 Let’s Encrypt 免费证书 + Nginx 来实现。下面给你一套通用、可落地的做法。


一、前提条件

  1. 已安装好 LNMP(Nginx 正常运行)
  2. 有一个域名(如 example.com)
  3. 域名 A 记录已解析到服务器 IP
  4. 能 SSH 登录 Debian

二、使用 Let’s Encrypt 免费 SSL(推荐)

1. 安装 certbot

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

2. 自动申请并配置 SSL(最简单)

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

按提示:

  • 输入邮箱
  • 同意协议
  • 选择是否重定向 HTTP → HTTPS(建议选 2)

✅ 完成后 Nginx 配置会自动加好 SSL


3. 测试自动续期

sudo certbot renew --dry-run

Let’s Encrypt 证书 90 天 有效,certbot 会自动续期。


三、手动配置 Nginx SSL(进阶)

如果你不用 certbot 自动配置:

1. 申请证书(示例)

sudo certbot certonly --webroot -w /var/www/example -d 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;
    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;

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

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

3. 测试并重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

四、使用自签证书(仅测试用)

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

⚠️ 浏览器会提示不安全,不适合生产环境。


五、常见问题

1. 防火墙未放行 443

sudo ufw allow 443/tcp

2. 证书不自动续期

systemctl status certbot.timer

3. HTTP 无法跳转 HTTPS

确认 return 301 https://... 已配置


六、总结(推荐方案)

✅ 最省事:certbot --nginx
✅ 生产环境:Let’s Encrypt + 自动续期
❌ 不推荐:自签证书用于正式网站


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

  • Debian 版本
  • Nginx 版本
  • 是否用 LNMP 一键包(如 lnmp.org)

我可以给你更精确的配置。

0 踩