Bootstrap

记录一次在生产环境中更换 SSL 证书的操作

本文将记录一次在生产环境中更换 SSL 证书的过程,包括准备工作、遇到的问题和解决方案,以及如何重启和重新加载 Nginx 服务以使更改生效。


1. 确认证书过期

SSL 证书通常具有有效期,当证书过期时,用户访问网站时会看到浏览器警告,提示网站的安全连接无效。确认证书是否过期,可以通过以下方式:

  1. 浏览器提示:直接访问站点时,浏览器会显示证书过期的警告。
  2. 命令行检查
    openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
    
    这条命令会输出服务器的 SSL 证书详情,其中包括有效期。

2. 准备工作:更新证书文件

在证书过期后,第一步是获取新的 SSL 证书。通常,你可以从证书颁发机构(CA)那里获得新的证书文件。证书通常包括:

  • fullchain.pem:完整证书链文件
  • privkey.pem:私钥文件

如果你已经手动更新了证书,接下来的步骤是确认证书文件已经正确安装,并配置在 Nginx 配置文件中。

在这里插入图片描述


3. 定位和检查 Nginx 配置

在生产环境中,可能没有直接访问 Nginx 命令(如 nginx)的权限,或者 nginx 不是在系统路径中。为了解决这个问题,我们可以使用以下方法来查找 Nginx 安装路径。

使用 whereis 查找 Nginx

首先,我们可以使用 whereis 命令来查找 Nginx 的安装位置:

whereis nginx

这将显示 Nginx 的安装路径,例如:

nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx

从这些信息中,我们可以确定 Nginx 主程序和配置文件的位置。

在这里插入图片描述

检查配置文件

Nginx 配置文件通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录下。在配置文件中,你需要确认 SSL 证书的路径是否指向新的证书文件:

ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;

使用以下命令检查配置是否正确(此步骤务必执行检查):

nginx -t

如果出现类似 syntax is oktest is successful 的消息,则说明配置无误。


4. 重启或重新加载 Nginx

在更新了证书文件后,需要重启或重新加载 Nginx 服务以应用更改。以下是常见的两种方式:

重启 Nginx 服务

如果你修改了 Nginx 的其他配置(如代理、虚拟主机等),可以选择完全重启 Nginx:

sudo systemctl restart nginx
重新加载 Nginx 服务

如果只更新了 SSL 证书,可以选择重新加载 Nginx 配置,而不影响现有连接:

sudo systemctl reload nginx

使用 systemctl 的好处是它能自动管理 Nginx 服务的状态,无需手动启动和停止进程。


5. 验证证书更新

更新证书并重新加载 Nginx 后,访问网站时应该能够看到新的证书生效。为确保更新成功,可以使用以下命令检查 SSL 证书:

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

检查证书的有效期和颁发机构,确保显示的是新的证书。

另外,也可以在浏览器中访问网站,查看证书的详细信息,确保其有效期和颁发机构符合预期。

在这里插入图片描述


6. 常见问题排查

证书文件路径不正确

确认 Nginx 配置文件中指向的证书文件路径是否正确。确保文件权限正确,Nginx 进程能够访问到这些文件。

证书没有覆盖到所有服务

在有多个子域或虚拟主机的情况下,确认所有相关服务的证书路径都已更新。

浏览器缓存问题

浏览器可能会缓存旧证书。可以尝试清除浏览器缓存,或者使用无痕模式访问网站。


7. 总结

在生产环境中,务必确保更新后的证书及时应用,避免因证书过期带来的潜在风险。在进行更换操作时,保持良好的操作习惯和及时的监控,可以确保网站的安全和稳定运行。

;