普通视图

彻底放弃收费 SSL 证书

2025年12月12日 14:50

在一年前的文章中我就质疑过收费 SSL 证书的必要性。到了今年年底,公司的官网证书再次到期,我终于有机会将之前的设想付诸实现。

DigiCert Logo

今年我就没有直接在 DigiCert 官网询价了,不过按照它每年费用的涨幅,我估计今年的价格妥妥要破 2000 刀。说实话花 2000 美元买一个一年多就过期的 SSL 证书,对我们这种不涉及金融等高保密领域的小公司而言还是需要一点勇气的。

DV,OV 还是 EV?

如果你申请过 SSL 证书,一定知道这三者代表证书的三个验证级别,从低到高分别是:

  1. DV(Domain Validation,域名型证书)
  2. OV(Organization Validation,组织型证书)
  3. EV(Extended Validation,扩展验证证书)

DV 下证书最简单,只需要验证你有域名的控制权,一般几分钟就可以拿到证书。OV 麻烦一点,需要验证你的组织是否存在,我们公司之前就是使用的 OV 证书,需要提供 DUNS 码(现在可以直接提供境内的中文企业名称),等待人工审核。EV 我也没用过,据说是更加严格,可能需要人工介入来验证更多的材料。

从 OV 证书往上,由于验证了组织信息,所以你的企业名称也会在证书中体现出来,当然这也是逼格的体现,大公司可以追求这个,小公司实属没有必要,毕竟普通用户也不会有事没事去查看你的证书信息,这种事只有闲着没事干的程序员才干得出来。

百度的 SSL 证书

而 EV 证书,在各大浏览器厂商去掉了地址栏的企业绿标后,再去申请它实属钱多得没地方花了。对于我们公司,在去年我就意识到了连申请 OV 证书都是一种浪费,今年我直接瞄准了最便宜的 DV 证书。

有没有便宜的选择?

Sectigo Logo

有的,在我多方探索之后,发现 Sectigo 这个公司的收费证书非常便宜,当然你别去它的官网申请,一般 SSL 证书产业由于利润丰厚,会有强大的代理体系。直接在淘宝搜索 Sectigo 可以找到一堆国内的代理公司,大致的价格可以做到 DV 的泛域名证书一年 600 元人民币的价格,这相比之前上千刀的价格已经非常便宜了。

但是最终我还是没选择它,原因有二:

  1. 如果是个人用无所谓,但是公司的证书去找一家不知名的代理商来签发,心里还是有点无法接受。
  2. 既然已经便宜到 600 块了,咱干脆一步到位,一分钱都别花岂不是更好。

免费证书

对于免费证书,有一点需要注意,大名鼎鼎的 Let's Encrypt 已经将它的证书有效时间从 90 天进一步下降到了 45 天,这对我们来说是个小麻烦,因此后来选择了更友好的 ZeroSSL

在去年我还在用 certbot 这样的上古工具,今年已经有了国人开发的更好选择 acme.sh。相比 certbot 它不仅做到了申请证书的自动化,还把部署证书自动化也集成了进来,而且由于是使用了 Shell 脚本语言,不需要依赖任何运行时环境。我们公司的域名解析服务商是 dnspod,这在 acme.sh 里得到很好的支持,可以做到全自动 dns 验证下发证书。

当前我把证书自动申请和部署的工作流,放到了 Github Actions 里。做成了一个定时 Cron 任务,每周更新一次证书,这样证书的申请情况可以实时记录,如果失败了也有邮件提醒。而放到 Github 上还有个好处,我可以利用它完善的生态来补充 acme.sh 的能力,比如我们现在部分存储还放在又拍云上,而 acme.sh 并没有针对又拍云的官方部署脚本,又拍云本身也没有开放 SSL 证书的部署 API,但有好心的开发者已经开发出了使用模拟登录的方式来更新证书的 Actions,拿来使用可以极大减轻我们的工作量。

最终效果

几天前我就已经把公司的官方网站,CDN 等等各种域名证书切换到了免费证书上,目前几天使用下来没有任何不适,也没有遇到任何兼容性的问题。虽然证书信息中的公司名称不再显示,但相比这省下来的真金白银还是挺香的。

SegmentFault 的 SSL 证书

付费的 SSL 证书是不是智商税

2023年12月15日 18:32

最近要给公司网站的 SSL 证书续费了,以前一直用的是高大上的 DigiCert 泛域名 OV 证书服务。为啥要选这个服务商,理由很简单,当时看到 GitHub 用的就是它家的证书,所以就无脑为信仰充值了(按理说 DigiCert 应该给 GitHub 不少广告费才对)。年复一年,每次续费似乎已经成了习惯动作,直到最近我瞟了一眼账单。

IMG_9658.PNG

好嘛,从 2017 年的 1k 刀出头,直接来到了一千七百多刀,结合汇率的涨幅,这个使用成本直接高出了一倍。我寻摸着 SSL 证书这玩意也没啥技术和资源投入吧,咋涨这么狠呢?当然也不能怪 DigiCert 心太黑,其实 OV 证书本来价格就比较高,更何况还是泛域名。证书快到期的这段时间里,国内供应商的销售电话轰炸就没停过,我看了看他们的报价1,其实也没有更良心。

IMG_9680.PNG

本来我是决定吃下这个哑巴亏的,但是由于我是在周五提交的续费申请,OV 证书还有一个人工审核步骤。后面我的证书就一直卡在这一步下发不了,跟他们客服咨询后告诉我,中国区的代理都提前下班去搞团建了,最快也要等到下周一才能审核。好吧,外资公司的福利果然让人羡慕😂。

但是我的证书周日就要过期了,这是我不能忍受的。所以我决定用免费证书先顶上💡,之前一直听说免费证书可能有兼容性问题,但这次也顾不了那么多了,有总比挂了好。

使用免费的 SSL 证书

2023-12-15T08:51:06.png

免费证书当然是 Let's Encrypt 的最出名,直接 certbot 一把梭

certbot certonly --manual -d xxxxxx.com -d *.xxxxxx.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --register-unsafely-without-email

我直接选择了 DNS 验证,因为不用再去改服务器配置,缺点是三个月过期以后2还要去 DNS 那里重新配置一下,不过我就是临时用一下,这样反而是最方便的。命令输入后系统会提示你给 DNS 记录里加上两条 _acme-challenge.xxxxxx.comTXT 记录用于验证(因为同时申请了根域名和泛域名所以是两条)。添加完毕后确认验证通过以后,证书就已经下发到本地了,下发的证书存储在目录

/etc/letsencrypt/live/xxxxxx.com/

里面有这么几个文件:

cert.pem
chain.pem
fullchain.pem
privkey.pem

privkey.pem 是你的私钥,cert.pem 是你的证书,但是为了提高兼容性我建议你使用带有完整证书链的证书 fullchain.pemcertbot是基于 Python 的,你可能还需要搞定运行环境,现在貌似 acme.sh 更流行,这个直接在 shell 里就可以运行,兼容性更高。

不管怎么样现在我已经拿到了一个可用的 SSL 证书,大多数云厂商都提供了很方便的证书更新服务,把这个证书上传上去然后等待更新完毕即可。我在周五下班前,花了半个小时干完了上面说的所有事情。然后在所有用户都不知情的情况下,网站已经运行在了一个成本为 0 的安全证书上。

三天以后周一,DigiCert 通知我新的证书已经下发下来了,而在这期间我们没有接到任何的关于安全证书方面的用户反馈,网页,手机端,小程序都没有。于是我决定再等几天,看看会发生什么事情。一周下来,什么事情都没有发生🤷‍♂️。当然最后我还是把 DigiCert 的证书换上去了,毕竟钱已经花了🤦‍♂️。

最后的思考

其实免费证书已经广泛商用了,很多 CDN 服务商在你使用自己的域名时已经不要求必须上传证书了,它们会跟我一样为客户生成一个免费证书。而像 Cloudflare 这样的厂商,干脆就自己签发免费证书了。而我自己的个人网站,也一直在使用免费证书。

所以我就在想,我使用收费证书到底能带来什么?

兼容性?根据我的实践,没遇到这方面的问题。提高安全性?这就是骗骗小白的话术,实际上从加密手段上来讲这两者没啥区别。更方便?确实能省一点时间,免费证书大多过期时间在三个月,但收费证书的最长过期时间也从两年缩短到了一年多一点,而从我的实践来看,每次更新证书也花不了多少时间,所以你觉得省的这些时间值这么多钱么?提高置信度?这可能有点玄学了,以前如果你买更贵的 EV 证书,在浏览器上会显示一个 Green Bar,告诉用户这个网站属于哪个企业,但现在也已经取消了,现在你要查询证书里的验证信息,还得查看证书详情才看得到,我想没有人吃饱了撑的去靠这个来验证安全性。

唯一我能想到值得一点的就是稳定性,毕竟 Let's Encrypt 作为一个免费服务是没有任何商业保证的,它哪一天突然不干了不提供服务了也是有可能的,这就是你需要权衡的。

2023-12-15T10:15:58.png

但况且就算你要买 OV 证书也有更便宜的选择,另一大免费 SSL 证书提供商 ZeroSSL 也提供收费的 OV EV 证书选择,但是费用要便宜得多,需要的用户可以考虑一下。

所以对我来说,收费 SSL 证书提供的附加值对我价值有限(某些公司可能有特殊的安全认证要求,必须要收费证书),我的用户也不是金融用户,相反免费证书可以帮我省掉一比费用。所以接下来我会考虑这些做法:

  1. 逐步提高免费证书的使用比率,比如在一些次级域名使用,进一步验证兼容性。
  2. 考查更便宜的泛域名证书选择,三个月更新一次还是有点麻烦,而且我可能不会选择 OV 证书了,普通的就行。对于重要的服务还是需要有商业保证的证书,但是有便宜的选择最好。

收费证书不完全是智商税,有它的必要性,但是付出这么多费用如果你没有任何这方面的回报,那就是不划算的。


  1. 赛门铁克证书服务已经被 DigiCert 收购
  2. Let's Encrypt 免费 SSL 证书的最长有效期是三个月
❌