付费的 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 证书的最长有效期是三个月
已有 10 条评论
  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客户端,可以自动无限续签

      1. 什么时候 SUBCA 也能碰瓷 Digicert 了。更可靠这个是怎么好意思说出口的哇

  9. GTX690战术核显卡导弹
    GTX690战术核显卡导弹

    免费证书不是可以用acme.sh自动续签吗?唯一的缺点是只能生成对应的证书,生成通配符证书还是要dns验证,稍微麻烦一点,不过也还好。
    之前我还看到了一个网页端申请ssl免费证书的。我把他源代码拿过来改了改就挂在我网站上面自己用了。
    不过挂都挂出来了,肯定是谁都能用的。我贴个地址吧:https://ssl.nekopara.uk/