不少人一听到“HTTPS证书”第一反应就是要花钱,尤其是一些企业官网询价,一年几千块很常见。但实际上,对于绝大多数网站来说,完全没必要走付费这条路——2026年的今天,免费HTTPS证书不仅能拿到手,而且签发的可靠性和自动化程度都已经非常成熟,只要你不是银行、政府、超大平台那种非要OV/EV证书才能满足合规的站点,免费证书完全够用,一年能省下几百到几千不等。
这篇文章我就从最实际的角度出发,把这几年折腾免费HTTPS证书的完整经验整理出来。内容包括:免费证书和付费证书的真实区别、2026年主流的申请渠道怎么选、手动和自动两种申请方式的完整步骤、免费证书续期怎么配、以及我踩过的一些坑和排查思路。给中小站长、个人开发者、企业内部系统维护者参考,尤其是那些还在为“证书马上到期了要不要续费”发愁的朋友,这篇应该能帮你省下一笔冤枉钱。
1. 先搞清楚:免费证书和付费证书到底差在哪
1.1 免费证书不是“假证书”,只是等级不同
很多人一看到“免费”两个字就怀疑是不是不安全、浏览器会不会不认。这里我先把结论放在前面:只要是正规CA机构签发的证书,浏览器就认,HTTPS加密效果一样,地址栏上的小锁一样能出来。免费证书通常都是DV级别证书,全称是Domain Validation,也就是域名验证级别。
DV证书验证什么?验证“你确实拥有这个域名”。怎么验证?你往域名的DNS解析里加一条记录,或者在你网站根目录放一个指定文件,CA看到文件或记录存在,就认为域名属于你,然后给你签发证书。整个过程很轻量,通常几分钟就能拿到证书。
而付费证书里常见的是OV和EV。OV是Organization Validation,除了验证域名,还要验证企业主体信息,证书里会带上公司名称。EV是企业增强型,验证更严格,老版本浏览器里地址栏会直接显示公司名称。但说句实话,从纯技术角度看,DV、OV、EV三者的加密强度没有本质区别,都是TLS握手,都是同样的加密算法强度。
那为什么OV/EV卖那么贵?贵在“人工审核”和“企业身份背书”上。如果你的场景不需要向访客展示企业身份,也不需要满足某种合规审查,DV级别的免费证书在安全性上完全够用。我自己维护的几个站,包括给客户做的小程序后端接口、公司内部系统、展示型官网,清一色用的免费DV证书,跑了几年没有任何问题。
1.2 都2026年了,免费证书的硬件条件早就成熟了
早些年免费证书确实让人不太放心,比如有效期只有30天,没有自动续期工具,只能在浏览器地址栏里获得“不是私密连接”类似提示,或者免费证书对ECC密钥支持不好,只能签RSA,导致握手性能差。
但现在已经完全不一样了。免费证书的主流有效期是90天,这个时长是刻意设计的,短有效期配合自动化部署,反而更安全——就算私钥泄露,影响面也就最多90天。配套的自动化工具链也已经很成熟,从申请、域名验证、签发到部署到Nginx再自动重载,全程可以无人值守。只要你在服务器上配置好一次,之后每个季度证书快到期时,脚本会自动帮你换新,几乎不用管。
2026年申请免费证书的主流渠道大概有三类:第一类是社区型免费CA,完全公益性质,不收一分钱,全球大量网站都在用;第二类是一些主流云厂商在控制台里免费提供的DV证书,往往需要你在他们那有域名或服务器,可以用控制台一键签发;第三类是各类SSL管理平台的免费额度,适合不想折腾命令行的非技术用户。
这三类各有优缺点,后面章节我会逐个分析。
2. 2026年申请免费证书的三种渠道怎么选
2.1 社区型免费CA:自动化程度最高,推荐主力使用
最推荐的方式,就是用ACME协议对接社区型免费CA。ACME是一种自动化证书管理协议,说人话就是:你装一个客户端在服务器上,客户端告诉CA“我要为这个域名申请证书”,CA随机生成一个挑战(比如要求你在域名DNS里放一条记录),客户端自动完成验证后,CA就把证书发给你。整个流程脚本搞定,不需要人工去网页上点来点去。
这类CA签发的证书有效期一般是90天,支持RSA和ECC两种密钥,也支持通配符证书(*.example.com这种)。所谓的通配符证书,就是你只需要一张证书,就能覆盖主域名和所有一级子域名,以后新增子域名不用再单独申请,非常方便。
但有个事情要提前说清楚:这类CA要求申请证书的服务器必须能通过80端口或443端口访问,或者你有域名DNS的控制权。因为CA要验证你“拥有”域名,验证方式要么是在HTTP路径下返回一个指定token,要么是在DNS里添加一条TXT记录。服务器在内网、没有公网IP、域名解析不在自己手里这些情况,都会影响申请成功率——这是很多人第一次申请失败的常见原因。
2.2 云厂商免费证书:操作简单,但有效期和限制要看清楚
很多云计算平台会提供免费的DV证书,一般可以直接在控制台里找到“SSL证书”或者“证书管理”的入口。选择免费版,提交域名,通常需要域名解析已经指向该厂商的云服务器,或者是用他们的DNS服务解析的,然后做域名验证,验证通过后就能下载证书文件。
这种方式的优点是:不需要知道什么是ACME协议,不需要装命令行工具,点几个按钮就能拿到证书,对非技术人员特别友好。而且有些云厂商的免费证书有效期是一年,比社区的90天要长不少,省去了频繁续期的麻烦。
缺点也有:首先,免费额度有数量的限制,比如同一个账号下只能申请一定数量的免费证书;其次,免费版一般不支持通配符,一张证书只能对应一个域名,如果你的子域名很多,就得申请很多张;再次,有些平台的免费证书不提供自动续期,一年到期后需要登录控制台手动重新申请和部署。如果只是给一个静态站点用,真的不想折腾命令行,云厂商的这个方式比较合适。如果想要全自动、长期无忧,我建议还是优先考虑ACME这条路。
2.3 SSL管理平台的免费额度:适合零基础快速上手
还有一些提供证书管理服务的平台,也提供有限的免费证书额度。你注册登录后,把域名填进去,按提示做一条DNS解析,过几分钟在平台下载证书文件,然后手动放到你的服务器上配置。这种方式比云厂商的“一键签发”还简单,适合完全没接触过Linux命令行的朋友。
但它有一些局限:免费额度通常只有1-3张证书,且有效期一般不超过3个月,过期后要继续用就得再申请。而且证书到期不会自动部署,需要你自己下载上传,如果网站比较多,管理起来会比较累。总的来看,这类平台比较适合“临时需要一张证书”“做测试环境”“帮朋友弄一个网站”这类轻量场景,不适合长期批量管理。
2.4 一句总结:渠道选型表
| 渠道类型 | 自动化能力 | 有效期 | 通配符支持 | 适合人群 |
|---|---|---|---|---|
| 社区型免费CA | 高(脚本续期) | 90天 | 支持 | 有服务器、愿意上手命令行的开发者 |
| 云厂商免费证书 | 中(部分支持自动) | 3-12个月 | 一般不支持 | 网站托管在云平台、偏好控制台操作 |
| SSL管理平台 | 低(手动下载) | 多为90天 | 视平台而定 | 零基础临时使用、不想碰命令行 |
选渠道这件事,没有绝对的“哪个最好”,核心看你自己的维护能力。愿意折腾一次、换长期省心,就选社区型CA;想要点几下鼠标就完事,云厂商是首选。
3. 手动申请免费HTTPS证书的完整流程拆解
3.1 准备材料:域名和控制权是底线
不管走哪种渠道,都需要你手里有这几个东西:一个解析权在自己手里的域名、能登录域名DNS控制台的权限,以及一台准备部署证书的服务器(如果你要部署到服务器上的话)。
域名和服务器不用在同一家,比如域名在某注册商那买的,服务器用的是某云主机,完全可以。证书验证走的是DNS验证,跟你的服务器在哪没关系。唯一要注意的是,如果服务器在国内机房,域名解析必须完成ICP备案才能正常用80和443端口访问,这是国内环境的特殊要求,跟证书本身无关,但会影响验证部署。
密钥方面,2026年的建议是优先使用ECC密钥(推荐prime256v1曲线),特别是对移动端用户比较多的网站,ECC握手所需的密钥交换数据更小,算力消耗更少,体验会好一些。如果某些老旧的客户端兼容性要求高,再考虑RSA 2048位。
3.2 第一步:生成私钥和CSR
先在你的服务器上生成密钥对。私钥就是你证书对应的“钥匙”,必须保存在你的服务器上,绝对不能外传。CSR是“证书签名请求”,作用是告诉CA你想申请证书的域名和你的公钥,CA会在签发时把它写入证书里。
这里有个实用经验:如果你打算用自动化工具,其实不需要手动生成CSR,工具自己会生成。但如果你想完全手动操作,或者用的是某些平台提供的“粘贴CSR”功能,那可以在服务器上执行类似 openssl req -newkey rsa:2048 -keyout domain.key -out domain.csr 这样的命令,生成过程中按照提示填写国家、省份、组织等信息即可。注意组织名称留空或填你的网站名都行,DV证书不会严格审核组织信息。
3.3 第二步:提交申请并完成域名验证
有了域名和密钥之后,就可以向CA提交申请了。如果是社区CA,通常是通过ACME客户端提交;如果是云厂商控制台,就在控制台里填域名和CSR,然后点击“申请”。
CA会给你一个待验证的“挑战”,挑战分两种:
第一种是DNS验证。CA给你一串随机值,比如 token-abc123,你需要在域名的DNS解析记录里添加一条TXT记录,记录值就是这串随机值。添加完成后,等DNS全球生效(一般几分钟到几十分钟不等),CA检测到这条记录,就确认你拥有域名,然后签发证书。
第二种是HTTP验证。CA给你一个路径,比如 /.well-known/acme-challenge/token-abc123,让你把这个文件放到你网站根目录的对应路径下,然后CA去访问你的网站这个路径,能访问到指定内容就算验证通过。
对普通用户来说,DNS验证比HTTP验证更推荐,理由有两点:第一,DNS验证不依赖服务器80端口开放,也不依赖备案状态,域名解析指向哪里都可以;第二,DNS验证能用来申请通配符证书,而HTTP验证不行。缺点是DNS生效有等待时间,急性子可能会觉得慢。
3.4 第三步:下载证书并部署到Nginx
验证通过后,CA会签发证书,一般提供两个文件:证书文件(包含你域名的公钥证书)和CA中间证书链文件。有些平台会把这两个合并成一个PEM文件。你下载下来后,放到服务器合适的目录,比如 /etc/ssl/ 下。
配置Nginx时,在server块里写上证书路径和私钥路径:
server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/ssl/example.com/fullchain.pem; ssl_certificate_key /etc/ssl/example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; # 其他站点配置... }配置完成后,先执行 nginx -t 检查语法,没问题再执行 systemctl reload nginx 或者 nginx -s reload 平滑重载,不会中断现有连接。
部署完之后一定要去浏览器访问你的网站,确认地址栏出现小锁。如果出现红色提示“不安全”,优先检查证书链是否完整——也就是证书文件是否包含了中间证书。很多人在这一步踩坑,具体表现是电脑上浏览器正常,手机浏览器却提示证书无效,就是因为中间证书没配全。
3.5 手动申请流程小结
整个过程看下来其实不难,核心就三步:准备密钥、做域名验证、拿到证书后配置到服务器。难就难在如果证书有效期只有90天,手动申请一次可以接受,长期每三个月搞一次就很烦。所以下一节我重点讲怎么把它变成全自动。
4. 用ACME客户端把申请和续期做成自动化
4.1 为什么免费证书必须做成“没人管也能活”的样子
社区型免费CA把证书有效期设计成90天,这个选择非常合理。证书有效期越短,即使私钥泄露,影响范围也越可控。但对运维来说,等价于每三个月要做一次“申请、验证、部署、重载”全流程操作。如果靠手动,只要漏掉一次,网站HTTPS就会在某个凌晨突然失效,用户访问时看到红色警告,跳出率飙升,甚至被搜索引擎标记为不安全。
解决办法就是让证书生命周期完全自动化。ACME客户端可以定时检查证书剩余有效期,发现临近过期(比如剩余不到30天)就自动发起续期申请,自动完成域名验证,自动替换证书文件,最后自动触发Web服务重载。整个过程不需要人干预。
4.2 安装并配置ACME客户端的实操记录
我目前用的是开源社区的ACME客户端脚本,安装很简单,一条命令拉取到服务器上,赋予执行权限,然后执行命令签发证书。这里有几个关键参数要提前理解:
第一条命令是注册账号,CA会为你生成一个账户密钥,用于之后的API调用。然后是签发证书命令,需要指定你要申请的域名、使用的验证方式以及证书的输出目录。签发完成后,脚本会提示你证书存放在哪个目录,一般包括四个文件:证书、私钥、完整证书链(就是部署时用的)、中间证书。
以Nginx部署为例,签发完证书后,脚本会自动执行部署命令,把你的证书拷贝到Nginx的证书目录,并触发重载。这意味着以后每三个月,脚本检测到证书快过期时,会自动走完整个流程。
我自己的配置中,给脚本设置了每天执行的定时任务,实际上续期不会每天都触发,只有距离过期小于30天时才会真正执行续期操作,效率上完全没问题。定时任务的日志会输出到文件,方便事后检查有没有执行失败。
4.3 续期脚本的权限和路径坑
自动续期有一个我最想提醒的点:脚本必须以root或者有权限写入证书目录和站点配置的用户身份运行。如果脚本以普通用户运行,很可能因为没有权限写 /etc/ssl/ 目录而静默失败。更麻烦的是,某些ACME客户端在续期时报错,但没有推送任何提醒,等到证书真正过期了你才发现。
所以建议配置定时任务时,把输出日志重定向到固定路径,并且设置一个额外的健康检查——比如每周检查证书是否还剩多少天,如果剩余天数小于10天就发一个告警通知,这样才能真正做到“无人值守但随时可控”。
4.4 Nginx重载的两种方式对比
续期完成后,需要让Nginx重新读取新的证书文件。有两种做法:一种是 reload,会平滑重启worker进程,不影响现有连接;另一种是 restart,会断开现有连接,导致瞬间访问失败。强烈建议只用reload。
那有人会问,会不会出现证书文件已经被替换,但Nginx还缓存着旧证书?不会。因为Nginx读取证书是随每次TLS握手进行的,reload后就会使用新文件。我给客户配置的服务器上,每次续期自动reload后,我没有见过一次因证书更新不到位导致的“必须重启才生效”的情况。
5. 免费HTTPS证书避坑指南:这些问题我全都遇到过
5.1 证书链不完整,手机浏览器疯狂报错
前面提过,证书链不完整是高频坑。很多平台下载证书时给的是分开的证书文件,比如 example.com.crt 和 chain.crt,如果你部署时只填了站点证书,没有把CA中间证书拼进去,电脑浏览器因为本地缓存了中间证书,可能显示正常;但手机浏览器没有缓存,就会提示证书无效。
解决办法是:部署时用合并好的完整证书链文件。如果手里只有两个分开的文件,可以用命令把它们按顺序拼成一个文件。我建议所有人在部署后,必须用手机浏览器流量访问测试一下,不要只在电脑上看小锁。
5.2 免费的证书也能签泛域名,但别搞混“泛”和“多”
泛域名证书,也叫通配符证书,可以覆盖主域名和所有一级子域名,比如 *.example.com 能同时用于 a.example.com、b.example.com、c.example.com,但不能用于 a.b.example.com 这种二级子域名。很多人以为通配符能覆盖所有层级,结果申请完发现多级子域名还是不能用。
如果你确实需要覆盖多级子域名,通常只能申请多个SAN条目,或者在证书里列出具体的多个域名。社区型免费CA对泛域名证书的支持一般没有问题,但云厂商的免费版几乎都不支持,选择前先看清楚说明。
5.3 HTTP验证失败:检查80端口和重定向
使用HTTP验证时,常见失败原因有三个。第一是服务器80端口没有对公网开放,CA访问不到你的80端口;第二是网站配置了强制跳转HTTPS,CA访问HTTP路径时被301跳走了;第三是伪静态规则把带 .well-known 开头的路径重写了,导致CA访问返回404。
解决办法:临时放行80端口、在Nginx配置里给 .well-known 路径单独加一条跳过重定向的规则,或者干脆改用DNS验证方式,从根上避开这几个问题。
5.4 CAA记录拦住了免费CA
CAA记录容易忽略。CAA是一种DNS记录类型,相当于“白名单”,明确规定了允许哪些CA机构给这个域名签发证书。如果你的域名CAA记录里只写了某一家付费CA,那么免费CA申请时会因为这条记录被拒绝,日志里会提示“CAA record forbids issuance”。
排查方式:先查看域名的CAA记录,如果有,就在记录里添加允许免费CA签发的条目。这种情况不常见,但一旦遇到,光看申请日志会一头雾水。
5.5 私钥不能上传、不能打包进项目仓库
这一点我必须反复强调。私钥一旦泄露,攻击者可以配合你的证书对你的HTTPS流量进行中间人解密,或者冒充你的服务器身份,后果非常严重。我见过有人为了方便,把证书和密钥文件直接放到项目代码仓库里,然后公开仓库权限,这是极其危险的操作。
正确做法是:证书和私钥存放在服务器受保护目录,权限设置尽量收紧,只让Nginx进程和root用户可读。不要把私钥上传到第三方服务,不要发给同事,更不要写成代码配置提交到远程仓库。如果确实需要在多台服务器之间同步证书,请使用加密传输通道,并考虑轮换密钥。
5.6 免费证书有效期90天,HSTS下过期影响更大
有的站点配置了HSTS,也就是服务器告诉浏览器“你们只能使用HTTPS访问我,且这个策略在后续一段时间内有效”。如果证书过期了且服务器暂时无法恢复HTTPS,那么浏览器会因为HSTS策略直接拒绝访问,甚至不给你跳过警告的机会,此时整个网站相当于宕机。
这就是为什么我强烈建议:如果配置了HSTS,要么同时做好全自动续期,保证证书永远不会过期;要么把HSTS的max-age设置短一点,给自己留操作余地。这是一个跟“自动续期”强绑定的坑,很多人没意识到。
5.7 自动化任务常见排查速查表
| 现象 | 原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 申请时报域名验证失败 | DNS TXT记录未生效或记录值错误 | 检查DNS记录是否能在公网被解析 | 等待生效或修改记录值重新提交 |
| 续期日志显示401/403 | ACME账号信息损坏或权限不足 | 查看ACME账号配置和目录写权限 | 重新注册账号或修复目录权限 |
| 证书已更新但网站没生效 | Nginx未重载或进程缓存 | 执行 nginx -t 检查语法后reload | 调整部署命令,确保每次续期后自动reload |
| HTTPS红锁 | 证书链不完整或私钥不匹配 | 检查证书文件和私钥指纹是否一致 | 重新拼接证书链并核对私钥 |
| 手机访问证书报错 | 中间证书缺失 | 在SSL工具站分析证书链 | 用完整链文件替换部署 |
| 定时任务执行失败但无提醒 | 日志未重定向或脚本静默退出 | 手动执行脚本看输出 | 加上日志和告警通知 |
5.8 免费证书后续扩展现可以做的事
我还想多说一句,免费证书除了给网站用,还有很多衍生场景。比如给内部API接口加HTTPS,很多公司内网服务其实不在乎浏览器认证,但接口数据明文传输不合适,这时候完全可以申请一张免费证书给内部系统加密;再比如给邮件服务器配SMTPS、IMAPS,很多中小企业邮箱服务器也支持用免费证书加密;还有开发测试环境、给客户展示Demo演示环境、小程序开发环境等,都是免费证书的合适场景。
只要你对“证书有效期90天要有自动化续期机制”这个前提有清晰认知,免费证书能覆盖的场景比想象中宽得多。
最后再分享一个我自己养成的习惯:每次给新站点部署完证书,我都会用在线SSL检测工具查一遍证书链、部署规范性、协议版本和OCSP状态。别小看这一步,大部分“装完证书后偶尔有问题”的怪现象,基本都能在检测报告里找到线索。另外就是所有服务器上都配好持续续期的定时任务,并且把日志输出到集中位置,我会定期瞄一眼。这套逻辑跑下来,我已经连续好几个季度没有因为证书问题被人半夜叫醒过。免费HTTPS证书这条路,确实省钱,也确实省心,前提是你按规矩把它配置完善。