互联网最恶心的设计:SSL 证书!搞一个 https 为什么要这么麻烦?免费且自动的方案来了!
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
浏览器地址栏那把小锁,究竟是个什么东西?你有没有遇到过这种场景: 凌晨十二点,线上服务突然挂了。用户疯狂投诉,老板在群里@你。你手忙脚乱地排查,最后发现—— SSL 证书过期了。 就这么一个小破证书,让你熬了一整夜。 或者另一个版本:你在公司搭了个内网服务,URL 前面显示"不安全",浏览器拦了一道又一道,你只是想让同事访问一个内部工具,结果被 HTTPS 折磨得死去活来。 做互联网这行,你大概率跟 SSL 证书打过交道。也大概率在某个时刻,在心里默默地问候或者问过一句: 这破玩意儿,有必要搞这么复杂吗? 先说说,它到底在干什么。SSL,准确来说现在应该叫 TLS(Transport Layer Security),是你和网站之间通信的"保镖"。 大多数人知道 HTTPS 比 HTTP 安全,但安全在哪,说不太清楚。其实 TLS 同时做了三件事: 第一件:加密。你发出去的内容,路上没人能看懂。 第二件:防篡改。内容从你手里到服务器手里,一个字节都不能被偷偷改掉。 还有人记得吗?很久以前,打开最纯净的网站也会弹出广告,明明这个网站没放广告,或者就是你自己的网站,也会弹出广告。那就是网络运营商给加的料。 第三件:身份验证。你访问的 bank.com,是真的银行,不是有人伪装的。 前两件,其实不难实现,随便一个加密算法都能搞定。 难就难在第三件。 这个问题,比你想象的要难想象一下:你和一个陌生人第一次见面,对方自称是你银行的客户经理,给你看了一张名片。 你怎么判断这张名片是真的? 如果没有第三方背书,你没办法判断。名片谁都能印。 SSL 证书解决的正是这个问题:在互联网上,你怎么相信对面是它自称的那个人? 它的答案是:找一个共同信任的第三方来担保。 这个第三方叫 CA(证书颁发机构),全球有几十家,Comodo、DigiCert、Let's Encrypt……你的浏览器和操作系统在出厂时就内置了对这些机构的信任。CA 给某个域名签发了证书,就相当于在说:"我担保,这个网站确实是他的。" 逻辑上听起来很合理。但工程实现上,它带来了一大堆麻烦。 说说让人头疼的部分证书管理是个无底洞配过 HTTPS 的人都知道:光是申请证书、配置服务器、处理中间证书链,就够折腾半天。更别提:
一旦忘了,后果就是凌晨的那个故事。 有效期越来越短,还在继续缩短早些年证书有效期是两年。后来被压到一年。现在,苹果和谷歌已经在推动压到 47 天。 你没看错,47 天。 更激进的提案是 10 天以内,甚至更短。 官方的理由是:短期证书不需要吊销机制(证书吊销这套机制本身就烂透了,以后再说),过期自动失效,更安全。 但对于那些没做好自动化的团队来说,这就是噩梦——手动续期的频率会越来越高,直到把你逼成自动化续期的信徒。 CA 体系本质上是中心化的全球几十家 CA,任何一家出问题,都可能危及整个信任体系。 这不是理论上的担忧。2011 年,荷兰的 DigiNotar 被黑客攻破,攻击者签发了大量伪造证书,受害者包括 Google。事件曝光后,DigiNotar 直接倒闭了。但在那之前,无数用户的通信已经暴露。 你把自己的安全,托付给了一个你从未听说过的公司。 那有没有更好的方案?有人想过,有人在做,但都不完美。 DANE:把证书信息直接写进 DNS 记录,绕开 CA。听起来很美,但依赖 DNSSEC,而 DNSSEC 的普及率至今惨不忍睹,大多数域名根本没开启。 SSH 的方式(TOFU):第一次连接时信任对方,之后持续验证一致性。简单、优雅。但问题在于:如果你第一次连接时就已经被中间人劫持了,后面验证的都是假的。对浏览器场景不适用。 区块链身份认证:去中心化,理论上优雅。实际上工程复杂度极高,迄今没有一个方案真正落地普及。 Certificate Transparency(证书透明度):不替代 CA,但把所有签发记录公开上链,让伪造变得可以被发现。这个已经落地了,Chrome 强制要求所有证书必须在 CT 日志里有记录。不完美,但是真实进步。 让我改变看法的一件事我之前也觉得 SSL 这套体系是个历史包袱,又重又烂。 直到我了解了 Let's Encrypt 和 ACME 协议。
Let's Encrypt 是一个免费的 CA,2016 年上线。它做的事情很简单:把证书申请和续期这件事,变成一个可以自动化的流程。你在服务器上跑一个客户端,它帮你自动申请、自动续期,你不用管。 而证书有效期越来越短这个趋势,背后的逻辑其实也是这个:既然可以自动续期,那就不需要让证书有效那么久。短期证书不需要复杂的吊销机制,出问题了自然过期,简单粗暴但有效。 这让我重新理解了 SSL 这套东西: 它不是一个精心设计的完美系统。它是一个在当时能用的工具拼凑出来的工程妥协,背负着三十年的历史债务,在不断修补和演进。 让人头疼的,不是 SSL 本身,而是过渡期的阵痛——自动化还没有全面普及,有效期却已经开始缩短。 痛苦是真实的。但方向是对的。 阅读原文:https://mp.weixin.qq.com/s/UDWLEWhcIDv6h0GIqxkqkA 该文章在 2026/5/20 12:30:04 编辑过 |
关键字查询
相关文章
正在查询... |