为什么需要在CentOS上配置SSL证书
SSL(Secure Sockets Layer)证书是网站安全的基础。在CentOS服务器上为nginx配置SSL证书,可以:
– 启用HTTPS加密传输,保护用户数据
– 提升网站在搜索引擎中的排名
– 增强访问者的信任度
– 符合现代浏览器的安全要求
准备工作
在开始安装SSL证书之前,请确保:
1. 拥有CentOS服务器的root或sudo权限
2. 已安装nginx并正常运行
3. 域名已解析到服务器IP地址
4. 防火墙已开放443端口
方法一:使用Let’s Encrypt免费SSL证书(推荐)
1. 安装Certbot工具
# CentOS 7/8
yum install -y epel-release
yum install -y certbot python3-certbot-nginx
2. 获取并自动配置SSL证书
certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot会自动:
– 验证域名所有权
– 获取免费SSL证书
– 修改nginx配置文件
– 设置自动续期
3. 测试自动续期
certbot renew --dry-run
方法二:手动安装商业SSL证书
1. 上传证书文件
将证书文件上传到服务器,通常包含:
– yourdomain.crt(证书文件)
– yourdomain.key(私钥文件)
– ca-bundle.crt(中间证书,可选)
推荐存放位置:
mkdir -p /etc/nginx/ssl
cp *.crt *.key /etc/nginx/ssl/
2. 配置nginx启用SSL
编辑nginx配置文件(通常在 /etc/nginx/conf.d/yourdomain.conf 或 /etc/nginx/nginx.conf):
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL证书配置
ssl_certificate /etc/nginx/ssl/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
# SSL安全优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 网站根目录
root /var/www/html;
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;
}
3. 测试nginx配置并重启
nginx -t
systemctl restart nginx
常见问题排查
1. 证书路径错误
错误提示:SSL_CTX_use_PrivateKey_file("...") failed
解决方法:检查证书和私钥文件路径是否正确,权限是否设置为600
2. 防火墙未开放443端口
# Firewalld
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# iptables
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
3. 证书链不完整
错误提示:浏览器显示”证书不受信任”
解决方法:将中间证书(ca-bundle.crt)与域名证书合并:
cat yourdomain.crt ca-bundle.crt > combined.crt
然后在nginx配置中使用 combined.crt
SSL证书有效期管理
查看证书到期时间
openssl x509 -in /etc/nginx/ssl/yourdomain.crt -noout -dates
设置证书监控告警
建议在生产环境中设置证书到期监控,避免证书过期导致网站无法访问。可以在日历中设置提前30天的提醒。
性能优化建议
- 启用HTTP/2:在listen指令后添加
http2 - 开启SSL会话缓存:减少TLS握手开销
- 使用OCSP Stapling:提升证书验证速度
- 配置HSTS头部:强制浏览器使用HTTPS连接
总结
在CentOS上为nginx安装SSL证书是提升网站安全性和SEO排名的重要步骤。推荐使用Let’s Encrypt免费证书,自动化程度高且维护成本低。对于商业网站,也可以选择付费SSL证书获得更高级别的验证和 warranty 保障。
无论选择哪种方式,都要记得设置证书自动续期或监控到期时间,确保HTTPS服务不中断。