一、前言:为什么你需要关注SSL证书

HTTPS 已经不是可选项了。Chrome、Edge 等主流浏览器对 HTTP 站点直接标记"不安全",搜索引擎也对 HTTPS 站点给予排名加权。SSL 证书从"锦上添花"变成了"基础必备"。

但现实是,SSL 证书的管理正变得越来越麻烦:

  • 腾讯云、阿里云等平台虽然支持免费单域名证书申请,但不支持泛域名证书,且每年只有 20 张免费额度
  • 自 2024 年 4 月 25 日起,各平台免费申请的证书有效期缩短为仅 3 个月
  • 域名一多,每 3 个月手动更新一次,工作量成倍增长,极易遗漏导致站点证书过期

Let’s Encrypt 作为一家免费、开放、自动化的公益性证书颁发机构(CA),天然解决了这些痛点:

对比项 云平台免费证书 Let’s Encrypt
费用 免费 免费
泛域名支持 不支持 支持
年额度限制 20张 无限制
证书有效期 3个月 3个月
自动续期 部分支持 原生支持

一个泛域名证书就能覆盖 *.example.com 下的所有子域名,配合自动续期,一次配置,永久有效

本文将完整演示如何申请 Let’s Encrypt 免费泛域名 SSL 证书,并配置自动续期,彻底告别手动更新证书的烦恼。

二、SSL证书申请前:为什么要进行域名验证

申请 SSL 证书时,证书颁发机构(CA)必须验证你是该域名的合法控制者。这不是走流程,而是 HTTPS 信任链的根基:

  1. 防止证书误颁发:确保证书只颁发给有权控制特定域名的实体,防止恶意方获取不属于他们的域名的 SSL 证书
  2. 防范中间人攻击:如果任何人都能为你的域名申请证书,攻击者就可以冒充你的站点截获用户数据
  3. 维持浏览器信任:浏览器内置了对 CA 的信任机制,CA 必须遵守严格的验证流程,否则会被浏览器根证书计划除名

Let’s Encrypt 采用 DNS-01 验证方式:你需要在域名 DNS 解析中添加一条特定的 TXT 记录或者CNAME记录,证明你对该域名拥有控制权。整个过程非常简单,后文会详细说明。

三、申请SSL证书实操

本文中使用的工具平台为 乐此云签,它封装了 Let’s Encrypt 的 ACME 协议,提供了图形化操作界面,降低了 Let’s Encrypt 证书申请和管理的门槛。

打开 乐此云签,开始操作。

image-20260501230153287

1. 注册账号

注册页面地址

image-20260501230851000

点击注册,填写邮箱和密码完成账号注册。

2. 登录

image-20260501231033138

使用刚注册的账号登录系统。

3. 申请SSL证书

image-20260501231418371

登录后,点击 “申请证书” 进入申请流程。

image-20260501231759310

在域名输入框中填入你的域名。如果需要泛域名证书(推荐),勾选 “泛域名,包含根域” 选项,这样一个证书就能同时覆盖根域名和所有子域名。

点击 “点击获取验证码”,输入收到的验证码后点击 “提交申请”

4. 完成域名验证

这一步是整个流程的核心。平台会为你生成 DNS 验证信息,你需要将其添加到域名的 DNS 解析记录中。

PixPin_2026-05-01_23-26-49

复制页面上的验证信息(通常包含主机记录、记录类型、记录值三项)。

然后前往你的域名 DNS 管理控制台添加解析记录。以阿里云为例:

进入阿里云控制台,找到 域名 → 点击对应域名后的 解析 → 点击 添加记录

image-20260501233144461

字段 填写内容
记录类型 CNAME
主机记录 平台提供的主机记录值
记录值 平台提供的记录值
TTL 默认即可

保存解析记录后,回到 乐此云签 页面,点击 “验证DNS解析”

image-20260501233507741

注意:DNS 解析生效通常需要几分钟,个别情况可能需要更长时间。如果验证失败,等待 2-3 分钟后重试即可。

5. 等待证书签发与下载

image-20260501234017116

验证通过后,Let’s Encrypt 会在几分钟内完成证书签发。签发成功后,在证书列表中可以看到已签发的证书。

image-20260501234111539

点击 “下载”,选择你的服务器类型对应的证书格式:

  • Nginx:PEM 格式(证书文件 + 私钥文件)
  • Apache:PEM 格式
  • Tomcat:PFX 格式
  • IIS:PFX 格式

6. 手动部署证书到服务器

下载证书后,需要将证书文件部署到服务器上。不同服务器的部署方式不同,以下是各主流服务器的部署参考:

手动部署可以解决当前证书的安装问题,但 3 个月后证书到期仍需手动更换。域名越多,维护成本越高,也越容易遗忘。

接下来,我们用自动续期方案来彻底解决这个问题。

四、一键部署与自动续期(推荐)

手动部署最大的隐患是 遗忘续期。证书过期后,网站会立即变为不可信状态,浏览器拦截访问,对业务影响极大。

如果你的服务器可以联网(绝大多数服务器都满足),强烈建议配置 一键部署 & 自动续期。配置完成后,系统会在证书到期前自动完成续期和部署,全程无需人工干预。

image-20260501234205281

在证书列表中,点击对应证书的 “自动续期”

PixPin_2026-05-01_23-46-09

按页面指引填写配置信息:

  • 服务器类型:Nginx / Apache / Tomcat / IIS
  • 操作系统:Windows / Linux
  • CPU架构:默认AMD64
  • 私钥文件路径:你服务器上私钥文件存放的路径
  • 证书文件路径:你服务器上证书文件存放的路径
  • 应用重载命令:web应用服务的配置重新加载命令

Windows + Nginx 自动续期配置示例

以 Windows Server + Nginx 为例,完整配置如下:

第一步:创建 Nginx 重载脚本

在服务器上创建 nginx.bat,用于在证书更新后自动重新加载 Nginx:

@echo off
setlocal enabledelayedexpansion

:: 设置 Nginx 安装路径(请修改为你的实际路径)
set "NGINX_PATH=D:\nginx-1.19.7"
set "NGINX_EXE=%NGINX_PATH%\nginx.exe"
set "PID_FILE=%NGINX_PATH%\logs\nginx.pid"

echo 正在检查 Nginx 状态...

:: 检查进程是否存在
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
if "%ERRORLEVEL%"=="0" (
    echo Nginx 正在运行,准备重新加载...
    "%NGINX_EXE%" -s reload
    if "%ERRORLEVEL%"=="0" (
        echo Nginx 重新加载成功!
    ) else (
        echo Nginx 重新加载失败,请检查配置或权限。
    )
) else (
    echo Nginx 未运行,准备启动...
    start "" "%NGINX_EXE%"
    if "%ERRORLEVEL%"=="0" (
        echo Nginx 启动成功!
    ) else (
        echo Nginx 启动失败,请检查配置或权限。
    )
)

pause
第二步:执行部署脚本

image-20260501235040954

乐此云签 的自动续期配置页面,复制生成的部署脚本,在服务器上以管理员权限打开 PowerShell 执行。

New-Item -ItemType Directory -Force -Path "C:\LetsEncrypt"
curl -o C:\LetsEncrypt\letsencrypt-renew.exe https://letsssl.cn/download/letsencrypt-renew.exe
$command = @'
C:\LetsEncrypt\letsencrypt-renew.exe -token="你的token"  -key_path=D:\nginx-1.19.7\cert\yourdomain_private.key  -server_type=nginx  -cert_path=D:\nginx-1.19.7\cert\yourdomain_certificate.pem  -command="D:\nginx-1.19.7\nginx.bat" -backup=true >> C:\Renew.log 2>&1
'@
$command | Set-Content -Path C:\LetsEncrypt\SslRenewTask-nginx-yourdomain.bat -Encoding ASCII
schtasks /Create /TN "SslRenewTask-nginx-yourdomain" /TR "C:\LetsEncrypt\SslRenewTask-nginx-yourdomain.bat"  /SC DAILY /MO 15 /ST 03:28 /SD 2026/01/01 /ED 9999/12/31 /RL HIGHEST /RU "NT AUTHORITY\SYSTEM" /F
C:\LetsEncrypt\letsencrypt-renew.exe -token=你的token  -key_path=D:\nginx-1.19.7\cert\yourdomain_private.key  -server_type=nginx  -cert_path=D:\nginx-1.19.7\cert\yourdomain_certificate.pem  -command="D:\nginx-1.19.7\nginx.bat" -backup=true

Windows 服务器安装 curl:如果服务器上还没有 curl,可以按以下步骤安装:

  1. 访问 curl for Windows 下载页面
  2. 根据系统位数选择 Win64 - Generic 版本(64位系统选此)
  3. 解压到指定目录(如 C:\curl
  4. C:\curl\bin 添加到系统环境变量 Path 中
  5. 新开命令行窗口,输入 curl --version 验证安装成功

脚本做了三件事:

  1. 下载续期工具 letsencrypt-renew.exeC:\LetsEncrypt 目录
  2. 创建 Windows 计划任务,每 15 天自动检查并续期
  3. 立即执行一次续期,验证配置是否正确
第三步:验证自动续期配置

脚本执行成功后,可以验证:

  1. 检查计划任务是否创建:打开"任务计划程序",找到 SslRenewTask-nginx-yourdomain 任务
  2. 检查证书文件是否已更新:查看证书目录下的文件修改时间
  3. 检查日志文件:查看 C:\Renew.log 中的执行记录

配置完成后,系统会每 15 天自动检查一次证书状态,在证书到期前自动完成续期和部署,你再也不用担心证书过期的问题了。

五、常见问题

Q1:DNS 验证一直失败怎么办?

DNS 解析生效需要时间,通常 1-5 分钟,个别 DNS 服务商可能需要 10 分钟以上。建议添加记录后等待 3-5 分钟再点击验证。另外,检查添加的 TXT 记录是否正确,可以用 nslookup -type=TXT _acme-challenge.你的域名 命令验证解析是否已生效。

Q2:泛域名证书和单域名证书怎么选?

如果你有多个子域名(如 www.example.comapi.example.comblog.example.com),强烈建议使用泛域名证书。一个 *.example.com 证书就能覆盖所有子域名,管理成本大幅降低。

Q3:自动续期失败怎么办?

检查以下几点:

  • 服务器是否能正常访问外网
  • 计划任务是否以最高权限运行
  • 证书文件路径是否正确
  • 重新加载命令(如 nginx -s reload)是否能在命令行手动执行成功
  • 查看 C:\Renew.log 日志文件定位具体错误

Q4:Let’s Encrypt 的证书可信度如何?

Let’s Encrypt 的根证书已被所有主流浏览器和操作系统信任,包括 Chrome、Firefox、Safari、Edge 等。其证书在功能上与付费证书完全一致,均提供 TLS 加密。主要的区别在于 Let’s Encrypt 不提供 OV(组织验证)和 EV(扩展验证)类型的证书,仅提供 DV(域名验证)证书。

六、总结

Let’s Encrypt 免费SSL证书方案的核心优势:

  • 零成本:完全免费,无数量限制
  • 泛域名:一张证书覆盖所有子域名
  • 自动化:配置一次,自动续期,永久有效
  • 可信度:所有主流浏览器信任

对于个人开发者、中小企业来说,Let’s Encrypt + 自动续期是目前最具性价比的 HTTPS 解决方案。花 10 分钟配置一次,就能彻底告别证书管理的烦恼。


相关阅读

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐