从Let'sEncrypt获取免费且安全的证书,且系统在该证书 到期之前自动续签

一、前置条件

在开始之前,请确保满足以下条件:

一个已解析到服务器 IP 的域名(SSL 证书不能绑定 IP)

服务器上已安装并运行 Nginx(或 Apache)

服务器80 端口和443 端口已开放(云服务器需在安全组放行)

拥有 root 或 sudo 权限

二、安装 Certbot

Certbot 的安装方式因操作系统而异,推荐使用apt(我是debian)

使用 apt 安装:


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

image
image

验证

安装完成后,可通过 certbot --version 验证是否安装成功。
image

三、获取 SSL 证书

Certbot 的 --nginx 插件会自动完成域名验证、证书申请和 Nginx 配置修改。执行以下命令(将 example.com 替换为你的真实域名):

sudo certbot --nginx -d example.com -d www.example.com

如果需要同时为多个域名申请证书,可以多次使用 -d 参数指定。

image

说明

执行过程中 Certbot 会:

提示输入邮箱地址(用于接收证书过期提醒)

要求同意 Let's Encrypt 服务条款

自动通过 HTTP-01 挑战验证域名所有权

自动修改 Nginx 配置,添加 HTTPS 支持

询问是否将 HTTP 流量强制重定向到 HTTPS(建议选择 Redirect)

证书申请成功后,文件默认存储在:

/etc/letsencrypt/live/example.com/
├── fullchain.pem # 证书链(Nginx 中 ssl_certificate 使用此文件)
├── privkey.pem # 私钥(Nginx 中 ssl_certificate_key 使用此文件)
├── cert.pem
└── chain.pem

Nginx 配置会被自动修改为类似以下内容:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    # ... 其他配置
}

完成申请后,重新加载 Nginx 使配置生效

nginx -s reload

四、自动续签机制

这是整个流程中最关键的部分。Certbot 在安装后会自动配置定时任务,无需手动设置。

验证自动续签是否已配置

sudo systemctl status certbot.timer

如果看到 Active: active (waiting),说明自动续签已启用

posted @ 2026-09-15 15:13  锅巴编程  阅读(6)  评论(0)    收藏  举报