文档中心
CentOS涓婲ginx閰嶇疆SSL璇佷功鍏ㄦ敾鐣ヤ粠闆跺埌HTTPS鐨勫疄鎴樻寚鍗?txt
时间 : 2025-09-27 15:42:55浏览量 : 3

在当今互联网环境中,HTTPS已成为网站安全的标配。无论你是个人站长还是企业运维,为Nginx配置SSL证书都是必备技能。本文将以CentOS系统为例,手把手带你完成从证书申请到Nginx配置的全过程,同时穿插关键安全知识点和常见问题解决方案。
一、为什么必须使用HTTPS?
1. 数据加密:防止流量被窃听(比如咖啡厅WiFi下的密码劫持)
2. 身份验证:证明你是真实的网站所有者(避免钓鱼网站)
3. SEO优势:Google等搜索引擎会优先展示HTTPS站点
4. 合规要求:PCI DSS等支付标准强制要求HTTPS
*真实案例*:2025年某航空公司网站因未启用HTTPS,导致38万用户订单信息被中间人攻击截获。
二、准备工作
1. 环境确认
```bash
检查Nginx版本(需要1.15+支持TLSv1.3)
nginx -v
查看CentOS版本
cat /etc/redhat-release
```
2. 开放防火墙端口
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
三、三种主流SSL证书获取方式
? 方式1:Let's Encrypt免费证书(推荐个人使用)
安装Certbot工具
sudo yum install certbot python3-certbot-nginx
一键获取证书(替换yourdomain.com)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
*特点*:
- 90天有效期(可设置自动续期)
- 支持通配符证书(需DNS验证)
? 方式2:商业CA购买(企业推荐)
购买后通常会收到:
- 域名证书文件(yourdomain.crt)
- CA中间证书链文件(intermediate.crt)
- 私钥文件(yourdomain.key)
? 方式3:自签名证书(测试环境用)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/selfsigned.key \
-out /etc/ssl/certs/selfsigned.crt
*注意*:浏览器会显示安全警告,仅限内网测试!
四、Nginx核心配置详解
? HTTPS基础配置模板
```nginx
server {
listen 443 ssl http2;
HTTP/2可提升性能
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
SSL协议优化配置 ↓↓↓
ssl_protocols TLSv1.2 TLSv1.3;
禁用不安全的TLSv1.0/1.1
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
HSTS头(强制HTTPS)
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
root /var/www/html;
index index.html;
}
}
? HTTP强制跳转HTTPS
listen 80;
return 301 https://$host$request_uri;
五、高级安全加固技巧
? OCSP Stapling加速验证
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/full_chain.pem;
resolver 8.8.8.8 valid=300s;
? DH密钥交换增强(防御Logjam攻击)
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Nginx中添加:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
六、常见问题排查指南
? 问题1:Nginx报错 `SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch`
? *解决方法*:
使用命令检查密钥是否匹配:
```bash
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5
两个MD5值必须相同!
? 问题2:浏览器提示"NET::ERR_CERT_COMMON_NAME_INVALID"
确保证书的Common Name(CN)完全匹配域名,通配符证书需使用`*.yourdomain.com`
七、自动化维护方案
设置Let's Encrypt自动续期:
测试续期命令
certbot renew --dry-run
添加到crontab
0 */12 * * * root certbot renew --quiet && systemctl reload nginx
通过以上步骤,你的CentOS+Nginx服务器已经获得专业级的HTTPS防护。记得定期执行`ssllabs.com`测试获取A+评分!如果遇到其他问题,欢迎在评论区留言讨论。
TAG:centos nginx配置ssl证书,nginx ssl_ciphers配置,linux nginx ssl,nginx配置cer证书,nginx安装ssl证书