在Linux系统上配置LNMP(Linux, Nginx, MySQL, PHP)环境的SSL证书,通常涉及以下几个步骤。这里以Let’s Encrypt提供的免费SSL证书为例进行说明。
Certbot是一个自动化的工具,用于获取和续订Let’s Encrypt证书。你可以使用以下命令安装Certbot:
sudo apt update
sudo apt install certbot python3-certbot-nginx
使用Certbot获取SSL证书。假设你的域名是example.com,你可以运行以下命令:
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动配置Nginx以使用SSL,并将证书文件放在适当的位置(通常是/etc/letsencrypt/live/example.com/)。
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指令指向你的网站根目录。
保存配置文件后,重启Nginx以应用更改:
sudo systemctl restart nginx
你可以使用以下命令测试Nginx的SSL配置是否正确:
sudo nginx -t
如果配置正确,你会看到类似以下的输出:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Let’s Encrypt证书通常有效期为90天。Certbot可以自动续期证书。你可以设置一个cron任务来定期检查并续期证书:
sudo crontab -e
添加以下行:
0 0,12 * * * certbot renew --post-hook "systemctl reload nginx"
这会每天检查证书是否需要续期,并在续期后重新加载Nginx。
最后,你可以使用浏览器访问你的网站,并检查是否显示了安全的锁图标,以及浏览器地址栏中的https://前缀。
通过以上步骤,你应该能够在Linux系统上成功配置LNMP环境的SSL证书。