>CentOS系统Nginx配置SSL证书完整指南
>引言
在当今互联网环境中,网站安全已成为每个站长的必修课。SSL证书不仅能够加密用户与服务器之间的数据传输,还能提升网站在搜索引擎中的排名。本文将详细介绍如何在CentOS系统上为Nginx服务器安装和配置SSL证书。
>准备工作
在开始安装之前,请确保您具备以下条件:
- >
- 一台运行CentOS的服务器(本文适用于CentOS 7/8/Stream版本)
- 已安装Nginx Web服务器
- 拥有root权限或sudo权限的账户
- 一个已解析到服务器IP的域名
- SSL证书文件(可以从证书颁发机构获取)
>第一步:获取SSL证书
您可以选择以下几种方式获取SSL证书:
>1. 使用Let’s Encrypt免费证书
Let’s Encrypt提供免费的SSL证书,非常适合个人和小型网站:
>
安装certbot工具
sudo yum install certbot python3-certbot-nginx -y
>获取并自动配置证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
2. 商业SSL证书
如果从商业CA购买了证书,您将收到以下文件:
证书文件(通常为.crt或.pem扩展名)
私钥文件(通常为.key扩展名)
中间证书链文件(可选)
>第二步:上传证书文件到服务器
将证书文件上传到服务器的合适位置,建议使用以下目录结构:
>
创建证书存放目录
sudo mkdir -p /etc/nginx/ssl/yourdomain.com
sudo chmod 700 /etc/nginx/ssl/yourdomain.com
>将证书文件复制到该目录
sudo cp yourdomain.crt /etc/nginx/ssl/yourdomain.com/
sudo cp yourdomain.key /etc/nginx/ssl/yourdomain.com/
sudo cp chain.crt /etc/nginx/ssl/yourdomain.com/
第三步:配置Nginx使用SSL证书
编辑Nginx配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 目录:
>server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL证书配置
ssl_certificate /etc/nginx/ssl/yourdomain.com/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com/yourdomain.key;
# 如果需要中间证书链
ssl_trusted_certificate /etc/nginx/ssl/yourdomain.com/chain.crt;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 其他配置...
root /var/www/yourdomain.com;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
>HTTP到HTTPS重定向
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$server_name$request_uri;
}
第四步:测试Nginx配置
在重启Nginx之前,务必测试配置文件是否有语法错误:
>
测试Nginx配置
sudo nginx -t
>如果显示"syntax is ok"和"test is successful",则可以继续
第五步:重启Nginx服务
配置测试通过后,重启Nginx使配置生效:
>
对于CentOS 7/8
sudo systemctl restart nginx
>或者使用reload(不中断现有连接)
sudo systemctl reload nginx
第六步:验证SSL证书安装
使用以下方法验证证书是否正确安装:
1. 浏览器验证:访问 https://yourdomain.com,查看地址栏是否显示锁形图标
2. 在线工具验证:使用SSL Labs测试工具(https://www.ssllabs.com/ssltest/)
3. 命令行验证:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
常见问题排查
>问题1:Nginx启动失败
原因:证书文件路径不正确或权限不足
解决方法:
检查证书文件权限
sudo chmod 600 /etc/nginx/ssl/yourdomain.com/*
sudo chown nginx:nginx /etc/nginx/ssl/yourdomain.com/*
>确认证书文件格式正确
openssl x509 -in /etc/nginx/ssl/yourdomain.com/yourdomain.crt -text -noout
问题2:浏览器显示证书不受信任
原因:缺少中间证书链或使用了自签名证书
解决方法:确保已将中间证书链正确配置在 ssl_trusted_certificate 指令中
>问题3:混合内容警告
原因:网页中包含HTTP资源
解决方法:将网页中的所有资源链接改为HTTPS协议,或使用相对协议(//)引用
>SSL证书自动续期
对于Let's Encrypt证书,可以设置自动续期:
>
测试自动续期
sudo certbot renew --dry-run
>添加定时任务(crontab)
sudo crontab -e
添加以下行(每12小时检查一次)
0 */12 * * * /usr/bin/certbot renew --quiet
安全最佳实践
1. 启用HTTP严格传输安全(HSTS):
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
2. 禁用不安全的SSL/TLS版本:
ssl_protocols TLSv1.2 TLSv1.3;
3. 使用强大的加密套件:
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
4. 启用OCSP装订:
ssl_stapling on;
ssl_stapling_verify on;
性能优化建议
1. 启用SSL会话缓存:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
2. 使用TLS 1.3:提供更快的握手速度和更好的安全性
3. 启用OCSP Stapling:减少客户端验证证书的时间
>结论
在CentOS系统上为Nginx配置SSL证书是提升网站安全性的重要步骤。通过本文的详细步骤,您可以顺利完成证书的安装和配置。记得定期检查证书有效期,并确保配置了合适的安全策略。随着网络威胁的不断演变,保持SSL配置的安全性和现代性是每个网站管理员的责任。
>参考资料
Nginx官方SSL配置文档
Let's Encrypt官方文档
Mozilla SSL配置生成器
OpenSSL官方手册
---
*本文更新于2026年,适用于主流Linux发行版和Nginx稳定版本。实际操作中请根据您的具体环境进行适当调整。*