文档中心
LNMP鐜瀹夎SSL璇佷功鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘瀹炵幇HTTPS鍔犲瘑
时间 : 2025-09-27 16:23:10浏览量 : 3
什么是SSL证书?为什么需要它?

想象一下你正在咖啡馆用公共Wi-Fi登录网上银行,如果没有SSL证书,你的账号密码就像写在明信片上邮寄一样危险。SSL(安全套接层)证书就像给你的网站装了一个加密保险箱,所有传输的数据都会被"锁"起来,只有你和服务器有"钥匙"能打开。
具体来说,SSL证书能实现三个重要功能:
1. 加密传输:防止数据在传输过程中被窃听(比如信用卡号、密码等)
2. 身份认证:证明你访问的是真正的官网而非钓鱼网站
3. 提升信任度:浏览器地址栏会显示绿色小锁和"安全"字样
准备工作:获取SSL证书
选择证书类型
常见的SSL证书有几种:
- 免费型:Let's Encrypt(适合个人博客、测试环境)
- 付费型:DV(域名验证)、OV(组织验证)、EV(扩展验证),价格从几十到上万元不等
> *小知识:Let's Encrypt虽然免费,但每90天需要续期一次。付费证书通常有效期1-2年*
以Let's Encrypt为例获取证书
假设你的域名是`example.com`,可以通过Certbot工具快速获取:
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
```
执行后会生成几个关键文件:
- `/etc/letsencrypt/live/example.com/fullchain.pem` (证书链文件)
- `/etc/letsencrypt/live/example.com/privkey.pem` (私钥文件)
LNMP环境下安装SSL证书详细步骤
情况一:使用LNMP一键安装包
如果你是用lnmp.org的一键包搭建的环境:
进入LNMP管理目录
cd /root/lnmp1.8
执行添加SSL命令
./vhost.sh ssl_add
按照提示输入域名和选择是否开启重定向(建议选是),脚本会自动完成配置。
情况二:手动配置Nginx
打开你的Nginx站点配置文件(通常在`/usr/local/nginx/conf/vhost/域名.conf`):
```nginx
server {
listen 443 ssl http2;
server_name example.com www.example.com;
SSL证书路径
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
SSL优化配置
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
其他原有配置...
}
HTTP强制跳转HTTPS
listen 80;
return 301 https://$host$request_uri;
MySQL和PHP的注意事项
虽然主要工作在Nginx层完成,但还需注意:
1. PHP应用:检查代码中是否有硬编码的HTTP链接,全部改为//或https://开头
2. MySQL连接:如果应用与数据库不在同一服务器,考虑启用SSL加密连接(性能会略有下降)
SSL配置优化与安全加固
OCSP装订提升性能
在Nginx配置中添加:
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 8.8.8.8 valid=300s;
这相当于提前把"身份证复印件"准备好,省去了浏览器每次验证时查询的时间。
HSTS增强安全
添加HTTP头部强制使用HTTPS:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
这就像告诉浏览器:"以后只准走安全通道!"
定期更新维护
对于Let's Encrypt证书,设置自动续期:
测试续期命令是否正常工作
sudo certbot renew --dry-run
添加到crontab每月自动执行续期
0 */12 * * * /usr/bin/certbot renew --quiet > /dev/null 2>&1 && /usr/local/openresty/bin/openresty -s reload > /dev/null
常见问题排错指南
SSL握手失败的可能原因及解决方式举例:
案例一:
*症状*:浏览器提示"ERR_SSL_VERSION_OR_CIPHER_MISMATCH"
*诊断*:
openssl s_client -connect example.com:443 -tls1_2
测试TLS1.2支持情况
*解决*:调整ssl_protocols只保留TLSv1.2 TLSv1.3
案例二:
*症状*:"NET::ERR_CERT_COMMON_NAME_INVALID"
```bash
openssl x509 -in fullchain.pem -text | grep DNS
检查证书包含的域名
*解决*:确保证书包含当前使用的完整域名
通过以上步骤和技巧,你的LNMP环境应该已经成功部署了SSL证书。记住网络安全没有终点线,定期检查更新才能确保长期安全。
TAG:lnmp安装ssl证书,lnmp 安装,linux安装ssl证书,ssl证书安装指南