1. 从“证书自由”聊起:为什么我盯上了 Let‘s Encrypt
2017 年我第一次给个人站配 HTTPS 时,在证书商那儿花了 599 块买了一年的单域名证书。当时觉得这钱花得值,毕竟浏览器一绿,安全感直接拉满。结果第二年续费短信弹出来,价格变成了 1299,我盯着屏幕上那行“SSL 证书费用”看了半天,突然意识到一件事:我们买的根本不是加密能力本身,而是“省事”和“品牌背书”。
后来换工作到了做 SaaS 的公司,手里管着几十个域名,有客户的、有内部的、有测试环境的。每年到续费季,财务那边跑过来问“为什么证书费又涨了”,我就得把每一张证书的用途、域名、有效期、采购渠道重新盘一遍。那个痛苦,只有运维人能懂。更离谱的是,有些子域名只是内部系统临时用一下,也得按年续费,完全是在烧钱。
真正让我下决心切换到 Let‘s Encrypt 的,是一个周末的下午。我帮朋友迁移一台阿里云 ECS,上面挂着一个企业官网,用的是某云厂商的付费证书,还有两周到期。后台续费界面写得明明白白:一年 1680 元。我打开 Let’s Encrypt 官网看了一眼,心里那个数字瞬间变成了零。于是我当场用 Certbot 给他配好了证书,全程大概 15 分钟,之后顺手加了个自动续期任务,那天之后再也没管过证书的事。到现在两年多了,那张证书一直在自动生效,没花过一分钱。
这篇文章我就把整套方案掰开揉碎讲清楚。不管你是个人站长、小团队运维,还是手里管着几十个域名的“证书管理员”,只要能接受每 90 天自动续期这个设定,Let‘s Encrypt 基本就是你的最优解。我会从原理、工具选型、实操步骤、常见坑位、兼容性几个维度展开,尽量做到拿起来就能用。
Let’s Encrypt 的两个关键词:免费和自动化。免费意味着成本归零,自动化意味着摆脱“手工换证书”这个耗时耗力的脏活。下文所有内容都围绕这两个核心价值展开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 先搞清楚 Let‘s Encrypt 到底在做什么
2.1 免费背后的技术逻辑:ACME 协议
很多人一听到“免费证书”会下意识怀疑安全性,觉得“不要钱的肯定不靠谱”。这个直觉可以理解,但从技术上讲,免费和加密强度没有任何关系。证书的作用是“证明你是你”,加密用的是公钥密码学那套机制,而签发证书的权威机构(CA)只是在背后帮你做一个身份确认。Let’s Encrypt 是 Linux 基金会赞助、Mozilla 等大厂背书的一个开源 CA,它的加密强度和那些卖几千块的商业证书完全相同,用的都是 2048 位 RSA(或 ECDSA)证书链,浏览器一样显示小锁。
那它凭什么能免费?关键在于签发环节的自动化。传统商业证书靠人工审核域名所有权,人工成本高,所以收费高。Let‘s Encrypt 把验证流程完全自动化,靠一套名为 ACME(Automatic Certificate Management Environment)的协议完成“服务器自己证明域名归自己所有”这个动作。本质上就是让服务器程序和 CA 之间做几轮自动握手,CA 确认你能控制某个域名后,就直接签发证书。
2.2 两种验证方式:HTTP-01 与 DNS-01
ACME 协议里最常用的两种验证方式,拿生活类比,就是“邮递员上门查水表”和“公示备案”。
HTTP-01 验证逻辑很直接:CA 给你的域名下发一个随机 token,要求你的 Web 服务器在 http://你的域名/.well-known/acme-challenge/那个token 这个路径上返回指定内容。如果你的服务器能返回正确结果,说明你确实控制着这个域名的网站文件。这个方法适合域名解析已经指向服务器、80 端口能正常访问的场景,配置简单,Certbot 等工具可以全自动处理。
DNS-01 验证逻辑更是简单粗暴:CA 要求你在域名的 DNS 记录里添加一条特定的 TXT 记录,添加完成后 CA 去查这条记录,查到了就证明你对域名有控制权。这个方法天然支持通配符域名(*.example.com),因为 CA 不可能跑遍每一台子服务器去验证。代价是你需要能自动操作 DNS 服务商的 API,或者接受“创建证书时手动加一条 TXT 记录”这个额外步骤。
这两种方式的选择直接影响了自动化程度和通配符支持,后半段讲实操的时候我会具体展开。
2.3 三个月有效期的真实意义:安全优先于方便
Let‘s Encrypt 把证书有效期设定为 90 天,这被很多人吐槽过“太折腾”。但从安全角度看,短有效期其实是一个刻意设计。证书有效期越长,一旦私钥泄露,攻击者可以滥用这个“合法身份”的时间就越长。证书被吊销后,浏览器端的黑名单机制更新也需要时间,有效期短相当于给每次泄露加了一个天然止损点。
90 天还有一个隐藏好处:强迫你建立自动化流程。如果你每 90 天手动换一次证书,你很快就会受不了,于是被迫去配置自动续期脚本。这一旦跑起来,你的运维体系其实比“一年买一次证书放着不管”更健康,因为你始终知道证书的真实状态,而不是等到浏览器报错那天才发现快过期了。
我自己经历过一次付费证书静默过期导致线上订单支付接口报错的事故,那次之后我对“手工续期”三个字PTSD了。Let‘s Encrypt 的短周期策略,实际上是把“怕过期”这种情绪从运维日常里彻底赶走了。
3. 工具选型与准备工作:两套主流方案怎么选
3.1 Certbot:最经典,生态好,适合绝大多数人
Certbot 是 EFF(电子前沿基金会)出品的官方客户端,也是 Let‘s Encrypt 社区里资历最老、教程最多的工具。它支持 Nginx、Apache 的全自动配置,一条命令就能完成“签发证书 + 改服务器配置 + 配置自动续期”三步。
它的优点很明显:生态成熟、文档全、自动化程度高。遇到问题顺手一搜,基本上全世界踩坑的记录都能找到。个人站长和中小团队服务器数量不算多的情况下,Certbot 是零基础入门最稳的选择。
它也有小缺点:相对比较重,会往系统里装一
