文档中心
CentOS涓婲ginx閰嶇疆SSL璇佷功鍏ㄦ敾鐣ヤ粠鐢宠鍒癏TTPS寮哄埗璺宠浆
时间 : 2025-09-27 15:42:55浏览量 : 3

****
"为什么我的网站地址栏显示‘不安全’?"如果你在CentOS服务器上用Nginx搭过网站,一定见过这个扎心的提示。别担心,今天我们就用最直白的语言+实操案例,手把手教你从零配置SSL证书,让网站变身安全的"小绿锁"!
一、SSL证书是什么?为什么非装不可?
想象一下:你网购时输入的密码,如果像明信片一样谁都能看,是不是很可怕?SSL证书就像给数据加了"防偷窥保险箱",通过加密技术保护传输安全。
不装SSL的3大风险:
1. 数据裸奔:用户登录信息、银行卡号可能被黑客截获(比如咖啡馆公共WiFi)
2. SEO惩罚:谷歌明确表示HTTPS是搜索排名因素
3. 用户流失:现代浏览器会对HTTP网站显示红色警告(如下图)

二、准备工作清单
在开始前确认你有:
1. 一台CentOS 7/8服务器(本文以CentOS 7为例)
2. 已安装Nginx(`nginx -v`能输出版本号)
3. 域名所有权(如`example.com`)
三、实战四步走:从申请到配置
步骤1:获取SSL证书(免费/付费)
免费推荐Let's Encrypt:
```bash
安装Certbot工具
sudo yum install epel-release -y
sudo yum install certbot python2-certbot-nginx -y
一键获取证书(替换你的域名)
sudo certbot --nginx -d example.com -d www.example.com
```
执行后会交互式询问邮箱等信息,成功后证书存放在:
/etc/letsencrypt/live/example.com/
├── fullchain.pem
证书链
└── privkey.pem
私钥
付费证书差异:
- 需要手动上传CSR文件(可用OpenSSL生成)
- 通常提供更长的有效期和保险赔付
步骤2:修改Nginx配置
编辑你的站点配置文件(通常在`/etc/nginx/conf.d/example.conf`):
```nginx
server {
listen 443 ssl;
HTTPS默认端口
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
强化安全设置(建议直接复制)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location / {
root /var/www/html;
index index.html;
}
}
关键参数解释:
- `ssl_protocols`:禁用老旧的TLS 1.0/1.1(存在漏洞)
- `ssl_ciphers`:只允许高强度加密算法组合
步骤3:HTTP强制跳转HTTPS
避免用户误访问HTTP版本,在80端口配置跳转:
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
301永久重定向
步骤4:防火墙放行443端口
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
四、高级安全加固技巧
1. HSTS头防御降级攻击
在Nginx的443端口配置中添加:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
效果:浏览器在未来两年内自动强制HTTPS访问
2. OCSP装订提升性能
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
作用:让服务器代替浏览器验证证书状态,提速30%+
五、常见问题排雷指南
? 错误1:"SSL_CTX_use_PrivateKey_file" failed
???? 检查私钥路径权限:`chmod 600 privkey.pem`
? 错误2:Chrome报ERR_CERT_COMMON_NAME_INVALID
???? 确保证书包含所有子域名(如www和非www)
?? 自动化续期Let's Encrypt证书:
加入定时任务(每60天续期)
echo "0 */12 * * * root certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null
*
现在访问你的网站,应该能看到漂亮的绿色锁标志了!其实HTTPS配置并不复杂,但很多运维容易忽略后续的安全调优。记住一个原则:"不是装了SSL就万事大吉,持续更新和监控才是关键"。如果有更多问题,欢迎在评论区交流~
TAG:centos nginx ssl证书,nginx ssl证书申请,nginx配置cer证书,nginx的ssl证书,nginx ssl pem,nginx ssl证书生成