news 2026/5/14 3:53:05

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

环境准备

在开始之前,确保你具备以下条件:

  1. 一台可以访问互联网的服务器(Linux 环境,如 Ubuntu/CentOS)。
  2. Root权限或sudo权限。
  3. 一个已解析的域名(本文以example.com为例)

关于Let’s Encrypt

Let’s Encrypt是一个免费的、自动化的、开放的证书颁发机构(CA),提供免费 SSL 证书。它的目标是让所有网站都能轻松实现 HTTPS 加密,保障用户数据的安全。通过Let’s Encrypt,你可以为你的主域名、子域名,甚至泛域名配置安全证书,而且过程完全自动化,不需要手动申请和管理证书,官方推荐使用 Certbot。

Certbot工作流程

Certbot 是一个自动化工具,用于为网站部署和管理 HTTPS 证书(SSL/TLS 证书)。其核心工作原理基于ACME 协议(Automated Certificate Management Environment),主要步骤如下:

1.初始化

客户端(如 Certbot)向 Let’s Encrypt 注册账户,生成公私钥对,公钥用于身份验证。

2.域名验证

在申请证书之前,Let’s Encrypt 必须验证你对所申请域名的控制权。这是通过以下几种方式进行的:

  1. HTTP-01 验证:Let’s Encrypt 向你请求创建一个特定的文件,并放在你网站的指定路径下。它通过访问该文件来验证你是否控制该域名。
  2. DNS-01 验证:Let’s Encrypt 提供一条 DNS TXT 记录,要求你将其添加到域名的 DNS 设置中。它通过检查 DNS 记录来验证你对域名的控制权。
  3. TLS-ALPN-01验证:通过 TLS 握手时的扩展协议验证,Apache、Nginx 或 Certbot 短期內都不支持这种验证方式。

对于泛域名证书,必须使用DNS-01验证方式,因为 HTTP 验证不能跨域名层级进行。

3.证书申请和签发

一旦验证成功,客户端(如Certbot)生成公私钥对,并将CSR(证书签名请求)发给CA(如Let’s Encrypt) ,CA会生成一个 SSL 证书,并将其发放给申请者。这个证书包含了公钥、域名、有效期等信息,任何人都可以通过该证书与网站进行安全通信。

证书通常包括:

  • 域名证书(cert.pem
  • 私钥文件(privkey.pem
  • 中间 CA 证书链(chain.pem

4. 证书部署

certbot支持证书的自动部署,如果使用的nginx或者apache的默认配置方式,可以增加--nginx/apache配置选项实现自动部署。当然也可以选择手动部署,也很方便。

5.自动续期

Let’s Encrypt 的证书有效期为90 天,因此需要定期续期。Certbot 自动进行续期验证,确保你的网站不会因为证书过期而遭到用户的安全警告。

安装Certbot

Certbot是由Electronic Frontier Foundation (EFF)提供的一个开源工具,用于自动化从 Let’s Encrypt 获取和管理 SSL 证书。Certbot 会自动为你处理证书申请、安装和续期等过程。

Linux 系统

推荐使用 Linux 的 snapd包管理工具安装Certbot,支持snapd后可以使用如下命令安装Certbot。

sudo snap install --classic certbot #安装Certbot sudo ln -s /snap/bin/certbot /usr/local/bin/certbot #创建一个符号链接,确保可以执行certbot命令(相当于快捷方式)

其它系统平台

参考Certbot官网

单域名SSL证书

申请证书

如果你只需要为单个域名(如example.comwww.example.com)申请证书,可以使用以下命令:

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

如果还有子域名(如,api.example.com),可以在指令上继续增加(-d api.example.com)。

安装并配置证书

经过上面指令,一般会显示你申请成功的提示,并显示证书存储的路径。

默认路径为/etc/letsencrypt/live/<域名>/

使用以下命令查看证书详细信息

sudo certbot certificates

nginx配置示例

server { listen 80; server_name example.com www.example.com; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 默认的ssl推荐配置 include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { proxy_pass http://127.0.0.1:8080; } # 如果配置的是静态网站,这里应是你的网站根目录 # location / { # root /html; # index index.html index.htm; # try_files $uri $uri/ =404; # } }

如果需要自动配置,增加--nginx。--nginx 需要服务器预先安装nginx,certbot获取到证书后会自动通过修改nginx的配置将证书安装到nginx上。--------没试过

自动续期

Let’s Encrypt 证书的有效期为90 天,为了避免证书过期,我们可以使用Cron Job设置自动续期。

首先,你可以手动测试续期是否正常:

# 首先,你可以手动测试续期是否正常: sudo certbot renew --dry-run # 如果没有报错,可以继续配置自动续期任务: sudo crontab -e # 在打开的编辑器中添加以下行,表示每10天凌晨 2 点执行自动续期任务: 0 2 */10 * * /usr/bin/certbot renew --quiet # --quiet 参数表示静默模式,不会输出非错误信息。

一般使用,这样就够了。

泛域名SSL证书

申请证书

泛域名证书(Wildcard Certificate)可以为同一主域名下的所有子域名提供 HTTPS 支持。例如,*.example.com可以覆盖blog.example.comapi.example.com等子域名。

Let’s Encrypt 要求通过DNS-01验证来申请泛域名证书。运行以下命令:

sudo certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com

Certbot 会要求你在 DNS 中创建一个特定的TXT 记录记录以验证域名的所有权。

_acme-challenge.example.com IN TXT "certbot给出的随机字符串"

前往你的域名 DNS 管理页面,添加该记录后,返回命令行按下Enter
如图:


大概等几十秒钟,确保 DNS 记录在全网传播开来,Certbot 可以查询到。
Certbot 在执行验证时会发起 DNS 查询,如果能找到所需的 TXT 记录并验证其值,认证就会成功,然后就会颁发证书。证书颁发后,这条TXT 记录就可以删除了。

这个是手动添加删除 DNS 对应的 TXT 记录,这里只是演示Certbot颁发证书的过程,实际情况下最好采用自动化脚本添加和删除 DNS 的 TXT 解析记录。

安装并配置证书

与之前单域名类似

自动续费

自动续费,需要使用脚本用于处理DNS-01验证的 DNS 记录添加和删除,请参考这篇文章,没有验证过。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 3:51:05

AI编码助手规则体系构建:从Cursor实践看工程化提效

1. 项目概述&#xff1a;为什么我们需要为AI编码助手制定“规则”&#xff1f;如果你和我一样&#xff0c;从VSCode切换到Cursor&#xff0c;最初可能只是被它“能聊天、能写代码”的噱头所吸引。但用了一段时间后&#xff0c;我发现一个核心问题&#xff1a;AI助手虽然强大&am…

作者头像 李华
网站建设 2026/5/14 3:50:30

服务器频繁遭暴力攻击?IP 更换、防护加固一站式解决方案

更换服务器 IP 地址联系云服务商或主机提供商更换服务器 IP&#xff0c;避免攻击者继续针对旧 IP 发起攻击。如果是动态 IP&#xff08;如家庭宽带&#xff09;&#xff0c;可尝试重启路由器获取新 IP。确保更换 IP 后更新 DNS 解析记录&#xff0c;避免服务中断。对于重要业务…

作者头像 李华
网站建设 2026/5/14 3:47:24

OpenCLI技能框架:让命令行工具拥有自然语言交互与自动化能力

1. 项目概述&#xff1a;一个为OpenCLI注入灵魂的技能框架如果你是一名开发者&#xff0c;尤其是经常和命令行&#xff08;CLI&#xff09;打交道的后端或运维工程师&#xff0c;你肯定有过这样的体验&#xff1a;面对一个陌生的CLI工具&#xff0c;你需要反复查阅--help文档&a…

作者头像 李华
网站建设 2026/5/14 3:47:23

WordPress开发利器:clawwp工具库提升PHP开发效率与代码质量

1. 项目概述&#xff1a;一个面向WordPress开发者的现代化工具库如果你是一个长期和WordPress打交道的开发者&#xff0c;无论是搭建企业官网、电商平台还是内容社区&#xff0c;大概率都经历过这样的场景&#xff1a;为了实现一个看似简单的功能&#xff0c;比如自定义一个复杂…

作者头像 李华
网站建设 2026/5/14 3:44:16

LMFlow:大模型微调工具箱,从LoRA到LISA的实战指南

1. 项目概述&#xff1a;LMFlow&#xff0c;一个为大型模型微调而生的高效工具箱如果你正在大语言模型&#xff08;LLM&#xff09;的领域里摸索&#xff0c;尤其是想用自己的数据去“调教”一个模型&#xff0c;让它更懂你的业务、更符合你的需求&#xff0c;那么你大概率会遇…

作者头像 李华
网站建设 2026/5/14 3:41:22

Kubernetes核心库tausik-core:云原生动态配置与资源监听实践

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为Kibertum/tausik-core的项目引起了我的注意。乍一看这个标题&#xff0c;它由两部分组成&#xff1a;一个组织名“Kibertum”和一个项目名“tausik-core”。对于不熟悉的朋友&#xff0c;可能会觉得有些陌生&#xf…

作者头像 李华