付费HTTPS证书是智商税吗

2021-07-26 ⏳2.8分钟(1.1千字) 🕸️

早期互联网协议都是明文,网络随便一个中间节点都可以监听甚至篡改链路上所有的通信内容。坏人越来越多,通信加密也就刻不容缓。后来人们设计了TLS(之前叫SSL)加密通信,而加密过的HTTP协议又叫HTTPS。TLS系统使用非对称算法交换加密用的密钥。非对称算法有公钥和私钥之分。如果我们从网上得到张三的公钥,怎么才能确认这个公钥一定是张三的呢?这就需要公钥基础设施(Public Key Infrastructure),简称PKI。简单说就是找人做公证。给张三做公证的人或者地方叫CA,它们出具的证明就是证书。公证自然是要付费的。现在出现了一些不收费的CA。大家都在纠结免费的证书到底能不能用。今天就谈谈我的思考。

证书的作用就是验证所有人的身分,分三种等级:域名验证(Domain Validation,DV)、组织验证(Organization Validation,OV)和扩展验证(Extended Validation,EV)。

那问题来了,我们要选用哪样的证书呢?

首先,EV证书不用考虑了,因为现在的浏览器都不再为EV证书展示组织信息(在Chrome上用户需要占击域名左边的锁打开证书信息页面才能看见)。也就是说从用户角度看,EV证书跟OV证书基本没有区别了。如果现在还用EV证书,那一定是被忽悠了。关于这个话题可以看我的另一篇文章SSL EV 证书之死

EV证书在 Chrome 上的显示效果

然后说说OV证书。这是市面上最主流的证书,可以证明网站所有者的身份(一般是公司名)。但这些信息更难查看,需要点击小锁🔒,再点击证书(Certificate)再点击详情(Detail),才能看到这些信息

DV证书展示效果

就算用户看到了组织名称是「智者四海(北京)技术有限公司」,那他能搞明白这家公司跟知乎的关系吗?估计不能。所以说,从这个角度上讲,OV证书也是没有必要的。

最后说一下DV证书。很多大网站都已经使用DV证书了,比如 Stack Overflow

Stack Overflow 使用 Lets’ Encrypt 签发的 DV 证书

DV证书只验证域名。用户只需确保自己访问的是正确的域名,就不会被钓鱼网站欺骗。所以说,免费证书并非只能用于小网站。像 Stack Overflow 这样的顶级网站也是可以用的。

那为什么还有人用付费的 OV 证书呢?

一方面是惯性。大家习惯了付费,对免费的东西普遍持怀疑态度。另一方面是免责,出了问题可以找供应商。

还有一个问题就是免费证书的一些限制。比如 Let’s Encrypt 签发的证书只有三个月的有效期,如果想使用,就得集成ACME客户端,这有一定的改造成本。但如果你的服务在云上,可以使用 AWS 或者 Cloudflare 签发的 DV 证书,同样不要钱。

最后提一下 Let’s Encrypt 被「封禁」的问题。证书一旦签发是不能收回的。如果证书被窃取,只能通过黑名单的形式注销。一些浏览器(比如苹果的 Safari)会通过在线证书状态协议(OCSP,Online Certificate Status Protocol)来检查证书有没有被吊销。而 Let’s Encrypt 的 OCSP 服务器所使用的 Akamai 的 CDN 节点有部分被国家防火墙误杀了,导致苹果用户在打开站点时候会卡顿两秒钟。这个问题可以使用 ocsp stapling 技术来解决。

总结一下,现在付费HTTPS证书基本可以看成是智商税了。尤其是在移动互联网的大环境下,用户都在用APP,根本看不到域名,更看不到证书,使用DV证书完全足够。