在CentOS系统中配置Nginx的SSL证书是确保网站安全传输数据的重要步骤,通过HTTPS协议,可以有效保护用户与服务器之间的通信内容,防止信息被窃取或篡改,以下是详细的配置过程,涵盖环境准备、证书获取、Nginx配置及常见问题处理。

环境准备
在开始配置之前,确保系统已安装Nginx且运行正常,可以通过以下命令检查Nginx状态:
systemctl status nginx
如果未安装,使用yum或dnf安装:
sudo yum install nginx -y
确保防火墙允许HTTPS流量(默认端口443):
sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
获取SSL证书
SSL证书可以通过多种方式获取,包括免费证书(如Let's Encrypt)或商业证书,以下是使用Let's Encrypt获取证书的步骤:
- 安装Certbot工具:
sudo yum install certbot python3-certbot-nginx -y
- 运行Certbot自动获取证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
替换
yourdomain.com为你的实际域名,Certbot会自动检测Nginx配置并生成证书,通常保存在/etc/letsencrypt/live/yourdomain.com/目录下。
配置Nginx
-
编辑Nginx配置文件,通常位于
/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf:
sudo nano /etc/nginx/conf.d/ssl.conf
-
添加以下SSL配置内容:
server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /usr/share/nginx/html; index index.html index.htm; } }确保证书路径正确,并根据需要调整其他参数(如加密协议和密码套件)。
-
重启Nginx使配置生效:
sudo systemctl restart nginx
强制HTTPS访问
为确保所有流量都通过HTTPS传输,可以添加一个HTTP服务器块,将请求重定向到HTTPS:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
保存后重启Nginx,访问HTTP地址将自动跳转至HTTPS。
证书自动续期
Let's Encrypt证书有效期为90天,建议设置自动续期,运行以下命令测试续期功能:

sudo certbot renew --dry-run
如果测试通过,Certbot会自动添加定时任务(通过cronjob),无需手动干预。
常见问题处理
- 证书路径错误:确保
ssl_certificate和ssl_certificate_key路径正确,可通过ls -l /etc/letsencrypt/live/yourdomain.com/验证文件是否存在。 - 浏览器提示不安全:检查证书是否过期、域名是否匹配,或使用
openssl s_client -connect yourdomain.com:443验证证书链。
FAQs
Q1: 如何检查SSL证书是否配置正确?
A1: 可以使用以下命令验证证书详情:
openssl x509 -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem -text -noout
访问https://www.ssllabs.com/ssltest/输入域名,可获取详细的SSL配置评分和建议。
Q2: 证书续期失败怎么办?
A2: 首先检查域名解析是否正常,防火墙是否阻止Certbot访问Let's Encrypt服务器,运行sudo certbot certificates查看证书状态,或手动执行sudo certbot renew --debug获取详细错误日志,常见问题包括域名未指向服务器或防火墙规则限制。