首页 帮助中心 云服务器中Nginx自动化证书续签全流程指南
云服务器中Nginx自动化证书续签全流程指南
时间 : 2025-05-23 13:56:12 编辑 : 华纳云 阅读量 : 8

在现代网站部署中,HTTPS已成为基本标配,它不仅保障了数据传输的安全性,还有助于提升搜索引擎排名。为了快速部署SSL证书,越来越多的网站选择使用免费证书,但该证书的有效期仅为90天,因此自动化续签机制显得尤为重要。

一、基础准备:服务器环境及域名要求

在开始之前,请确认你已拥有一个公网可访问的云服务器,建议操作系统为 Ubuntu 20.04 / Debian / CentOS 7+;

  • 确保Nginx已正确安装并运行;
  • 确保域名已解析至该云服务器公网 IP,A 记录或 CNAME 配置无误;
  • 确保防火墙或安全组已开放 80(HTTP)和 443(HTTPS)端口。

准备工作完成后,即可开始证书自动化部署流程。

二、安装Certbot 与 Nginx 插件

Certbot 是由 Electronic Frontier Foundation(EFF)推出的官方客户端工具,用于申请和续签Let's Encrypt免费证书。其最大优势在于:支持一键申请、配置并自动续签。

Ubuntu / Debian 系统安装:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

CentOS / Rocky Linux 系统安装:

sudo yum install epel-release -y
sudo yum install certbot python3-certbot-nginx -y

安装完成后,输入以下命令检查版本确认:

certbot --version

输出如 certbot 2.8.0 表示安装成功。

三、使用 Certbot 为 Nginx 配置 HTTPS 证书

Certbot 能自动识别当前 Nginx 配置的 server_name,若配置正确,只需一条命令即可申请证书并部署 HTTPS。

Step 1:预配置好 Nginx 虚拟主机

确保你已设置如下虚拟主机(80端口)配置:

server {
    listen 80;
    server_name www.example.com example.com;

    root /var/www/html;
    index index.html;
}

重载配置:

nginx -t && systemctl reload nginx

Step 2:申请证书并自动配置 HTTPS

执行以下命令:

sudo certbot --nginx

Certbot 会自动读取 Nginx 配置,提示你选择需要启用 HTTPS 的域名,选择后它将:

  • 验证域名所有权(通过 HTTP challenge);
  • 向 Let's Encrypt 请求证书;
  • 修改 Nginx 配置以启用 HTTPS;
  • 自动创建定时任务以实现续签。

申请成功后,会提示如下内容:

Congratulations! You have successfully enabled HTTPS on https://example.com

此时浏览器访问 https://example.com 即可看到安全锁标识。

四、自动续签机制:Certbot 定时任务解读

Certbot 会自动在安装时为系统添加定时任务(cron 或 systemd timer)实现自动续签。默认每天执行一次,但只有在证书离过期30天内时才会实际续签。

查看续签定时任务:

systemctl list-timers | grep certbot

或:

cat /etc/cron.d/certbot

你也可以手动测试续签是否正常:

sudo certbot renew --dry-run

如输出中显示 Congratulations, all renewals succeeded. 表示续签配置无误。

五、证书续签后的 Nginx 自动重载问题

虽然 Certbot 会自动续签,但续签后需要让 Nginx 重新加载配置,才能应用新证书。

Certbot 已自动将 --deploy-hook "nginx -s reload" 添加至续签流程,无需额外干预。但你也可以在续签命令中显式指定:

sudo certbot renew --deploy-hook "systemctl reload nginx"

或者将该钩子写入 /etc/letsencrypt/renewal-hooks/deploy/ 目录中。

示例脚本 /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh:

#!/bin/bash
systemctl reload nginx

给脚本添加执行权限:

chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

这样,每次续签后 Nginx 都会自动加载新证书。

HTTPS 是站点信任的基础,而自动化续签更是现代化部署的核心一环。无论你是技术新手还是运维老手,学会配置 Nginx 自动化 SSL 管理,将极大提升你的网站运营稳定性。

华纳云 推荐文章
在香港云服务器中域名解析应该如何配置? 使用云服务器怎么搭建网站,具体步骤详解 云服务器docker部署的安装步骤(以Ubuntu为例) 云服务器Nginx与防火墙冲突该怎么解决? Nginx日志文件过大如何清理并保留必要信息(系统化处理指南) 云服务器是否提供数据备份服务?全面解读备份策略、方式 Linux香港云服务器如何部署Zookeeper详解教程 香港云服务器Nginx配置错误导致403 Forbidden怎么办? 如何配置Nginx实现新加坡云服务器动静分离? 美国云服务器上出现502错误如何排查?
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持