为什么需要安装SSL证书
SSL(Secure Sockets Layer)证书是网站安全的基础设施。安装SSL证书后,网站可以通过HTTPS协议访问,实现数据传输加密,保护用户隐私信息不被窃取。同时,主流浏览器会标记HTTPS网站为”安全”,有助于提升用户信任度和搜索引擎排名。
准备工作
在开始安装之前,请确保满足以下条件:
- 已安装CentOS 7/8/Stream操作系统
- 已安装Nginx并正常运行
- 拥有服务器的root或sudo权限
- 已购买或申请免费的SSL证书(如Let’s Encrypt)
方法一:使用Certbot自动安装Let’s Encrypt证书
Let’s Encrypt提供免费的SSL证书,有效期90天,可以通过Certbot工具自动续期。
安装Certbot
# CentOS 7
yum install -y epel-release
yum install -y certbot python3-certbot-nginx
# CentOS 8/Stream
dnf install -y epel-release
dnf install -y certbot python3-certbot-nginx
自动配置Nginx
certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot会自动修改Nginx配置文件,添加SSL相关配置,并重启Nginx服务。
设置自动续期
# 测试自动续期
certbot renew --dry-run
# 添加定时任务(每天检查一次)
echo "0 3 * * * /usr/bin/certbot renew --quiet" >> /etc/crontab
方法二:手动安装商业SSL证书
如果您购买的是商业SSL证书(如DigiCert、GlobalSign等),需要手动配置。
上传证书文件
将证书文件上传到服务器,通常包含:
domain.crt(证书文件)domain.key(私钥文件)ca-bundle.crt(中间证书,可选)
建议存放在 /etc/nginx/ssl/ 目录:
mkdir -p /etc/nginx/ssl/
cp domain.crt domain.key /etc/nginx/ssl/
配置Nginx
编辑Nginx配置文件(通常在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/):
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# 证书配置
ssl_certificate /etc/nginx/ssl/domain.crt;
ssl_certificate_key /etc/nginx/ssl/domain.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;
}
测试并重启Nginx
# 测试配置文件语法
nginx -t
# 重启Nginx
systemctl restart nginx
常见问题排查
1. Nginx启动失败
检查端口占用:
netstat -tlnp | grep 443
检查证书文件路径是否正确。
2. 浏览器提示证书不受信任
确认中间证书(CA Bundle)是否已正确安装。商业证书需要将CA Bundle与域名证书合并:
cat domain.crt ca-bundle.crt > domain_full.crt
然后在Nginx配置中指向 domain_full.crt。
3. SSL Labs测试评分较低
可以通过优化SSL配置提升安全性:
# 启用HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
# 禁用弱加密算法
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
然后在 SSL Labs测试工具 中检查评分。
总结
CentOS系统下Nginx的SSL证书安装主要有两种方式:使用Certbot自动安装Let’s Encrypt免费证书,或手动配置商业SSL证书。推荐生产环境使用自动续期的Let’s Encrypt证书,既安全又省心。安装完成后,记得检查HTTPS是否正常工作,并通过SSL测试工具验证配置的安全性。