linux

Linux LNMP如何配置SSL

小樊
40
2025-12-12 02:31:42
栏目: 云计算

在Linux系统上配置LNMP(Linux, Nginx, MySQL, PHP)环境的SSL证书,通常涉及以下几个步骤。这里以Let’s Encrypt提供的免费SSL证书为例进行说明。

1. 安装Certbot

Certbot是一个自动化的工具,用于获取和续订Let’s Encrypt证书。你可以使用以下命令安装Certbot:

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

2. 获取SSL证书

使用Certbot获取SSL证书。假设你的域名是example.com,你可以运行以下命令:

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

Certbot会自动配置Nginx以使用SSL,并将证书文件放在适当的位置(通常是/etc/letsencrypt/live/example.com/)。

3. 配置Nginx

Certbot会自动修改Nginx配置文件以启用SSL。你可以检查/etc/nginx/sites-available/example.com-le-ssl.conf文件,确保配置正确。一个典型的SSL配置如下:

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_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    location / {
        root /var/www/html;
        index index.php index.html index.htm;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

确保将server_name替换为你的域名,并将root指令指向你的网站根目录。

4. 重启Nginx

保存配置文件后,重启Nginx以应用更改:

sudo systemctl restart nginx

5. 测试SSL配置

你可以使用以下命令测试Nginx的SSL配置是否正确:

sudo nginx -t

如果配置正确,你会看到类似以下的输出:

nginx: configuration file /etc/nginx/nginx.conf test is successful

6. 设置自动续期

Let’s Encrypt证书通常有效期为90天。Certbot可以自动续期证书。你可以设置一个cron任务来定期检查并续期证书:

sudo crontab -e

添加以下行:

0 0,12 * * * certbot renew --post-hook "systemctl reload nginx"

这会每天检查证书是否需要续期,并在续期后重新加载Nginx。

7. 验证SSL连接

最后,你可以使用浏览器访问你的网站,并检查是否显示了安全的锁图标,以及浏览器地址栏中的https://前缀。

通过以上步骤,你应该能够在Linux系统上成功配置LNMP环境的SSL证书。

0
看了该问题的人还看了