手里拿到了SSL证书文件,Nginx该怎么配?不少运维新手在这一步卡了壳。其实Nginx部署SSL证书的流程并不复杂,关键在于文件对应关系别搞混。
一、准备证书文件
CA机构签发完成后,你会拿到几个文件。Nginx需要的是两个:一个是证书文件(.crt或.pem后缀),另一个是私钥文件(.key后缀)。有些CA还会提供一个中间证书包,这时候需要把域名证书和中间证书合并成一个文件——把中间证书的内容追加到域名证书后面就行。
把这两个文件上传到服务器,建议放在/etc/nginx/ssl/目录下,方便统一管理。记得给私钥文件设置权限:chmod 600 /etc/nginx/ssl/your_domain.key,防止其他用户读取。
二、修改Nginx配置
打开你的Nginx配置文件,通常在/etc/nginx/conf.d/或/etc/nginx/sites-available/目录下。找到443端口的server块,按下面的模板修改:
server { listen 443 ssl; server_name your_domain.com; ssl_certificate /etc/nginx/ssl/your_domain.crt; ssl_certificate_key /etc/nginx/ssl/your_domain.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 其他配置保持不变}
这里有个容易踩的坑:ssl_protocols建议只保留TLSv1.2和TLSv1.3,早期的SSLv3和TLSv1.0存在安全漏洞,别为了兼容性留着它们。
三、配置HTTP强制跳转HTTPS
用户访问时可能直接输入http://,你需要在80端口的server块里加一条跳转规则:
server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_uri;}
这样所有HTTP请求会自动跳转到HTTPS,不会出现混合内容的问题。
四、验证并重启
配置改完后,先跑一遍语法检查:nginx -t。如果提示syntax is ok,就可以执行nginx -s reload重新加载配置。打开浏览器访问你的域名,地址栏出现小锁图标就说明SSL证书部署成功了。
最后用SSL Labs的在线检测工具跑一遍评分,目标拿到A及以上。如果评分不理想,多半是ssl_ciphers参数没调优,参考Mozilla的SSL Configuration Generator生成推荐配置即可。