温馨提示×

debian lnmp怎么部署ssl

小樊
45
2026-09-10 18:36:30
栏目: 云计算

Debian + LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 环境下部署 SSL(HTTPS),通常有两种主流方式:

  1. Let’s Encrypt 免费证书(推荐,自动续期)
  2. 手动部署自有 SSL 证书(商业证书 / 自签证书)

下面分别说明。


一、使用 Let’s Encrypt(certbot,推荐)

1. 安装 certbot

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

2. 自动为 Nginx 站点配置 SSL

假设你的域名是 example.com,且 Nginx 已配置好 HTTP 站点:

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

按提示输入邮箱、同意条款即可。

certbot 会:

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

3. 测试自动续期

sudo certbot renew --dry-run

证书路径一般位于:

/etc/letsencrypt/live/example.com/

二、手动部署 SSL 证书(商业 / 自签)

1. 上传证书文件

通常包括:

  • example.com.crt(证书)
  • example.com.key(私钥)
  • ca_bundle.crt(中间证书,可选)

放入目录:

sudo mkdir -p /etc/nginx/ssl/example.com
sudo cp example.com.crt example.com.key /etc/nginx/ssl/example.com/

2. 修改 Nginx 站点配置

编辑站点配置文件(如 /etc/nginx/sites-available/example.com):

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

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

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

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

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

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

3. 检查并重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

三、LNMP 一键包用户(可选)

如果你是用 lnmp.org 一键包

cd /root/lnmp
./addssl.sh

按提示输入:

  • 域名
  • 证书路径
  • 私钥路径

四、常见问题

1. 防火墙需放行 443

sudo ufw allow 443/tcp

2. 证书不生效

  • 域名已解析到服务器
  • 80 端口可访问
  • Nginx 配置已 reload

3. 强制 HTTPS

已在上面 return 301 示例中体现。


如果你能告诉我:

  • Debian 版本(11 / 12)
  • 是否用 LNMP 一键包
  • 域名是否已解析

我可以给你 更精确的命令和配置文件

0