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

云服务

最近要给公司网站的 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 证书的最长有效期是三个月
已有 8 条评论
  1. 我用的Alpha SSL

  2. 非金融类,感觉免费 SSL 证书完全足够了。

  3. 其实3个月一次可以使用各种工具自动更新,如果 Caddy 之类的工具会在到期前一个月自动替换,第一次知道原来这些证书这么贵.

  4. acme.sh 配置定时任务,自动续期签发,几乎就不用管了。

  5. 楚狂人
    楚狂人

    除了域名数量限制之外,免费的SSL证书基本也够用了

  6. 呜哩亚绅
    呜哩亚绅

    免费证书的过期时间也能达到一年,所以过期时间其实也不算是诟病,收费证书有一点就是支持泛解析,很少见到有时间长且支持泛解析的SSL证书出现过(除了CloudFlare自签,俺们也没法拿出来),这应该算是一大优点

  7. 看了看阿里云的OV证书也才3000人民币不到,应该是批发商有折扣吧。不过我这种小作坊一般用免费的dv就行。

  8. 其实吧,Cersign的证书更可靠,它是国内的支持国密,也有免费证书,90天的,免费证书可以选择ECC算法或者RSA亦或者SM2算法,而且是双算法(RSA
    /SM2或者ECC/SM2),而且他们有Nginx客户端,可以自动无限续签