Nginx更换SSL证书详细操作步骤与注意事项
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
更换Nginx的SSL证书需先备份原证书和配置文件,然后将新证书上传至服务器指定目录,修改Nginx配置文件中的证书路径,确保指向新的crt和key文件,检查语法正确性后重新加载Nginx服务使配置生效,操作过程中需注意权限设置、证书链完整性,并及时验证HTTPS访问及证书有效性,避免服务中断。
在现代互联网环境中,HTTPS已成为网站安全通信的标配,作为高性能的Web服务器和反向代理服务器,Nginx被广泛用于部署支持SSL/TLS加密的网站服务,SSL证书并非永久有效,通常有效期为一年或更短(如Let’s Encrypt证书为90天),因此定期更换SSL证书是系统运维中不可或缺的一项任务,本文将详细介绍如何在Nginx环境下安全、高效地更换SSL证书,并提供常见问题的解决方案和最佳实践建议。
为什么要更换SSL证书?
SSL证书的主要作用是验证服务器身份并建立加密连接,一旦证书过期,浏览器会提示“您的连接不是私密连接”等警告,严重影响用户体验,甚至导致搜索引擎排名下降,过期的证书可能引发API调用失败、移动端应用无法访问等问题,及时更换即将到期的SSL证书至关重要。
准备工作
在开始更换证书前,需要完成以下准备工作:
-
获取新证书
可通过证书颁发机构(CA)申请新的SSL证书,常见的CA包括Let’s Encrypt(免费)、DigiCert、GlobalSign等,若使用Let’s Encrypt,可通过certbot工具自动签发和续期证书。 -
备份原有证书和配置文件
在操作前,务必对现有的SSL证书文件(.crt和.key文件)以及Nginx配置文件进行备份。cp /etc/nginx/ssl/example.com.crt /etc/nginx/ssl/example.com.crt.bak cp /etc/nginx/ssl/example.com.key /etc/nginx/ssl/example.com.key.bak cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/example.com.bak
-
确认证书文件位置
查看当前Nginx配置中ssl_certificate和ssl_certificate_key指令指向的路径,确保新证书将放置在同一目录下,或相应修改配置。
更换SSL证书的操作步骤
-
上传新证书文件
将新获取的.crt(证书文件)和.key(私钥文件)上传至服务器指定目录,/etc/nginx/ssl/,确保文件权限设置合理,推荐设置为600:chmod 600 /etc/nginx/ssl/*.crt /etc/nginx/ssl/*.key chown root:root /etc/nginx/ssl/*.crt /etc/nginx/ssl/*.key
-
更新Nginx配置文件
打开对应的站点配置文件(通常位于/etc/nginx/sites-available/目录下),检查并更新证书路径:server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; # 其他配置... }如果新证书包含中间证书(Intermediate Certificate),应将主证书与中间证书合并成一个文件:
cat example.com.crt intermediate.crt > combined.crt
然后在配置中引用合并后的文件。
-
测试配置语法
更改配置后,必须先测试Nginx配置是否正确:nginx -t
若输出显示“syntax is ok”和“test is successful”,则说明配置无误。
-
重载Nginx服务
使用以下命令平滑重载Nginx,使新证书生效:systemctl reload nginx
或使用:
nginx -s reload
验证证书是否生效
可通过以下方式验证新证书是否已正确加载:
- 使用浏览器访问网站,点击地址栏锁形图标,查看证书信息中的有效期。
- 使用在线工具如 SSL Labs 进行全面检测。
- 命令行方式检查:
openssl s_client -connect example.com:443 -servername example.com < /dev/null | openssl x509 -noout -dates
常见问题及解决方法
- 证书未更新:确认Nginx是否真正重载,而非重启;检查配置文件路径是否正确。
- 警告:确保网站内所有资源(如图片、JS、CSS)均使用HTTPS加载。
- 证书链不完整:遗漏中间证书会导致部分客户端无法信任,务必合并完整证书链。
自动化与最佳实践
对于频繁更换证书的场景(如使用Let’s Encrypt),建议配置自动化脚本或使用certbot的自动续期功能:
certbot renew --dry-run # 测试自动续期
结合cron定时任务,可实现零人工干预的证书管理。
Nginx更换SSL证书是一项基础但关键的运维操作,遵循规范流程,做好备份与验证,能够有效保障网站的安全性与可用性,定期检查证书有效期,提前规划更换时间,是构建稳定可靠Web服务的重要一环。


