温馨提示×

Debian LNMP SSL证书如何安装

小樊
49
2025-10-02 01:00:28
栏目: 云计算

Debian LNMP环境下安装SSL证书指南

在Debian系统上为LNMP(Linux+Nginx+MySQL+PHP)环境安装SSL证书,主要分为获取证书配置Nginx使用SSL(可选)配置MySQL/PHP支持SSL三大步骤。以下是详细操作流程:

一、准备工作

确保系统已安装LNMP基础组件(Nginx、MySQL、PHP),若未安装可通过以下命令快速部署:

sudo apt update sudo apt install nginx mysql-server php libapache2-mod-php php-mysql 

安装完成后,启动并启用Nginx、MySQL服务:

sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl start mysql sudo systemctl enable mysql 

二、获取SSL证书(以Let’s Encrypt免费证书为例)

1. 安装Certbot工具

Certbot是Let’s Encrypt的官方客户端,可自动化证书申请与Nginx配置:

sudo apt install certbot python3-certbot-nginx 

2. 申请并自动配置证书

运行以下命令,替换yourdomain.com为你的实际域名(需提前解析到服务器IP):

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

执行过程中,Certbot会提示:

  • 输入电子邮件地址(用于证书到期提醒);
  • 同意Let’s Encrypt服务条款;
  • 选择是否将HTTP请求自动重定向到HTTPS(推荐开启)。

Certbot会自动完成以下操作:

  • 下载证书文件(存储至/etc/letsencrypt/live/yourdomain.com/);
  • 修改Nginx配置文件(启用443端口监听、配置SSL证书路径);
  • 重启Nginx服务使配置生效。

三、手动配置Nginx使用SSL(若未使用Certbot自动配置)

若需自定义SSL配置(如调整加密协议、密码套件),可手动编辑Nginx站点配置文件:

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

添加或修改以下内容(关键参数说明见注释):

# HTTP监听(强制跳转HTTPS) server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; } # HTTPS监听(核心配置) server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; # 证书文件路径(需替换为实际路径) ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 引入Let's Encrypt提供的优化配置(包含推荐的协议、密码套件) include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # 网站根目录与PHP处理 root /var/www/yourdomain.com; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据PHP版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问.htaccess文件 location ~ /\.ht { deny all; } } 

保存文件后,创建符号链接启用站点(若未创建sites-availablesites-enabled的链接):

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ 

四、验证与测试

1. 检查Nginx配置语法

sudo nginx -t 

若输出syntax is oktest is successful,说明配置无错误。

2. 重启Nginx应用配置

sudo systemctl restart nginx 

3. 验证SSL有效性

  • 浏览器访问https://yourdomain.com,确认地址栏显示锁图标(表示HTTPS连接正常);
  • 使用SSL检测工具(如SSL Labs)检查证书链、加密协议等配置是否符合安全标准。

五、配置自动续期(Let’s Encrypt证书有效期90天)

Certbot会自动创建定时任务(通常位于/etc/cron.d/certbot),定期尝试续期证书。可手动测试续期流程:

sudo certbot renew --dry-run 

若输出Congratulations, all renewals succeeded,说明自动续期配置正常。

六、(可选)配置MySQL支持SSL

若需MySQL数据库支持SSL加密连接(适用于敏感数据传输),可按以下步骤操作:

1. 生成MySQL SSL证书与密钥

sudo mkdir -p /etc/mysql/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/mysql/ssl/mysql-key.pem \ -out /etc/mysql/ssl/mysql-cert.pem 

2. 配置MySQL服务器

编辑MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf),在[mysqld]部分添加:

[mysqld] ssl-ca=/etc/mysql/ssl/mysql-cert.pem ssl-cert=/etc/mysql/ssl/mysql-cert.pem ssl-key=/etc/mysql/ssl/mysql-key.pem 

3. 重启MySQL服务

sudo systemctl restart mysql 

4. 验证MySQL SSL连接

登录MySQL并检查SSL状态:

mysql -u root -p --ssl-mode=REQUIRED 

执行以下SQL语句,若have_ssl值为YES,则表示配置成功:

SHOW VARIABLES LIKE '%ssl%'; 

七、(可选)配置PHP支持SSL

PHP应用(如WordPress、Laravel)需确保能处理HTTPS请求,可通过以下方式配置:

1. 强制PHP-FPM监听Unix Socket(默认已支持SSL)

编辑PHP-FPM配置文件(/etc/php/7.4/fpm/pool.d/www.conf),确保listen指令为Socket模式:

listen = /run/php/php7.4-fpm.sock 

重启PHP-FPM服务:

sudo systemctl restart php7.4-fpm 

2. 在PHP代码中检查HTTPS

在应用入口文件(如index.php)顶部添加以下代码,强制跳转HTTP到HTTPS:

if ($_SERVER['HTTPS'] != "on") { $redirect = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; header("Location: $redirect"); exit(); } 

通过以上步骤,Debian LNMP环境即可完成SSL证书安装与配置,实现网站与数据库的HTTPS加密传输。

0