Tailscale 的 TLS 证书过期,网站挂了 90 分钟!
3月7日,基于 WireGuard 的知名 VPN 厂商 Tailscale 的官方网站 tailscale.com 因 TLS 证书过期而中断服务约90分钟。
虽然影响有限,但这起事件还是在 Hacker News 等论坛引发了热烈的讨论和反思。
网友们纷纷表达了自己的看法。smackeyacky 感慨道:“我说过一次,现在我要再说一次:证书过期已然成为新时代服务中断的头号杀手。”

Tailscale 联合创始人 bradfitz 也第一时间在 Hacker News 回应,介绍了事发原因和应对过程。原来,他们在去年12月进行了一次大规模的网站迁移,涉及底层架构、域名解析等多个环节的重构。为了支持 IPv6,他们还特意搭建了额外的代理服务器。

但令人始料未及的是,这个看似无伤大雅的改动,竟然埋下了祸根。由于代理服务器终止了 TLS 连接,加上 DNS 配置的疏忽,监控系统没能及时发现证书已经过期的警告。bradfitz 坦言,这次事故暴露出团队在变更管理和风险评估方面还有很大的提升空间。
这波 “辩解”,你买账吗?让我们来看看网友们怎么说。
j45 就提出了质疑:如果 IPv6 如此重要,为什么当初要选择一家压根不支持的供应商呢?bradfitz 只能苦笑,表示公司内部在这个问题上尚未达成共识。
lmeyerov 则一针见血地指出,关键脚本和文档不应该放在营销页面上,那无异于 “身败名裂”。

更有意思的是,大家对 Tailscale 下一步的打算出谋划策。amluto 建议他们最好换成 TCP 代理,这样可以充分利用 Let's Encrypt 的 HTTP 验证方式。agwa 的想法则更大胆:要不要试试每天自动更新证书?延长过期时间虽然安全,但如此频繁的滚动更新,应该也不是什么难事儿吧?
光说不练假把式,Tailscale 到底准备如何破局?bradfitz 表示,除了之前提到的监控改进,他们还计划进一步简化网络拓扑,减少对特殊方案的依赖。同时,为了防患于未然,还要像 “古人” 那样设置每月提醒,专人盯防,避免证书过期时 “完犊子”。
但 bradfitz 也不忘自信满满地补充:Tailscale 的设计目标,本来就是打造一个弹性十足的网状架构。即便控制平面偶尔抽风,用户的连接状态也不会受到影响。这次事故恰恰印证了他们的优势所在。
Tailscale 本次的应对,可谓是基础设施领域的 “教科书”。他们没有避重就轻、诿过于人,而是勇于承担责任;他们没有急于修补、敷衍了事,而是深刻反思、触及本质。这种开诚布公、虚心接纳的态度,值得每一个技术团队学习。
回到本次事件,笔者认为,Tailscale 暴露出的问题绝非个案。在快速迭代的今天,任何平台都难免经历这样那样的折腾。但关键是要时刻保持警惕,尊重专业,关注细节。一念之差,可能就是业务中断、口碑受损的起点。
尤其值得警惕的是 “身败名裂” 式的设计。当一个看似不起眼的页面或服务,成为了整个系统的 “生死簿”,我们就必须格外留心。是否应该适当解耦?是否需要特别优化?唯有未雨绸缪,才能降低 “黑天鹅” 事件的影响。
对创业公司而言,技术固然重要,但更要注重全局观。什么是真正的刚需?什么又是可以简化的?架构师们需要时刻问自己这样的问题。盲从所谓 “最佳实践”,搞出一堆 “金玉其外败絮其中” 的玩意儿,那就本末倒置了。

总而言之,Tailscale 的 “证书门”,为我们敲响了警钟:安全可用是一切的基础。必须通过周密的设计、严谨的态度,才能获得用户的信赖。相信 Tailscale 能够从这次事件中汲取教训,以更成熟、专业的姿态,打造真正韧性十足的服务,在 VPN 领域一路高歌。
尽管 Tailscale 因 TLS 证书过期导致了90分钟的服务中断,但这恰恰凸显了它的一大优势——多数用户几乎没有受到影响。Tailscale 的分布式架构使得用户端的连接不依赖于中心节点始终在线。这种弹性设计是 Tailscale 区别于传统 VPN 的关键所在。短暂的中心服务中断并不能否定 Tailscale 的价值,反而凸显了其良好的容错性。
Tailscale 的 TLS 证书过期,网站挂了 90 分钟!的更多相关文章
- 在阿里云托管kubernetes上利用 cert-manager 自动签发 TLS 证书[无坑版]
前言 排错的过程是痛苦的也是有趣的. 运维乃至IT,排错能力是拉开人与人之间的重要差距. 本篇会记录我的排错之旅. 由来 现如今我司所有业务都运行在阿里云托管kubernetes环境上,因为前端需要对 ...
- 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...
- 二进制搭建kubernetes多master集群【一、使用TLS证书搭建etcd集群】
上一篇我们介绍了kubernetes集群架构以及系统参数配置,参考:二进制搭建kubernetes多master集群[开篇.集群环境和功能介绍] 下面本文etcd集群才用三台centos7.5搭建完成 ...
- 附008.Kubernetes TLS证书介绍及创建
一 Kubernetes证书 1.1 TLS Kubernetes系统的各个组件需要使用TLS证书对其通信加密以及授权认证,建议在部署之前先生成相关的TLS证书. 1.2 CA证书创建方式 kuber ...
- 十大免费SSL证书:网站免费添加HTTPS加密
SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...
- 从sslyze看TLS证书的点点滴滴
纵观眼下,https已经深入大街小巷,成为网络生活中不可或缺的一部分了.提到了https,我们又不得不想到TLS(SSL),而提到了TLS,我们又不得不提到一个让人捉摸不透的东西:TLS证书. 关于证 ...
- https证书过期问题
这个是以前配置证书的文章,同时更新证书的有效的一篇文章 最近网站的https证书过期了,造成无法对外提供服务,怀疑是当时配置的自动更新没有起作用. 然后去后台更新https证书,却遇到了问题,使用的具 ...
- 基于TLS证书手动部署kubernetes集群(上)
一.简介 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S. K8S是Google内部一个叫Borg的容器集群管理系统衍生 ...
- 免费SSL证书(https网站)申请
如何拥有一个自己的免费的SSL证书,并且能够长期拥有.这篇文章让你找到可用的免费证书o(* ̄︶ ̄*)o 各厂商提供的免费SSL基本是Symantec(赛门铁克),申请一年,不支持通配符,有数量限制. ...
- SSL证书/TLS证书是什么
https://blog.csdn.net/donghaixiaolongwang/article/details/79193695 A. SSL协议与TLS是什么?它们的功能是什么? 答:SSL(S ...
随机推荐
- 【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)
问题描述 Java 云端开发,调用 blob 上传会产生内存溢出,Java上调用的方式如下: InputStream inputStream = new BufferedInputStream(new ...
- docker知识整理(备份)
概念: 镜像:Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板 .镜像是创建 Docker 容器的基础.通过版本管理和增量的文件系统, Docker 提供了一套十分简单的机制来创建和更 ...
- Dockerfile编写(备份)
1-使用#注释 2-Dockerfile 主体内容分为四部分:基础镜像信息. 维护者信息. 镜像操作指令和容器启动时执行指令 简单示例: FROM xxx:latest #基于xxx:late ...
- 初识JavaScript逆向——以网易云音乐和招标网站为例
前言:需要掌握一定的JavaScript基础,能看懂基础的JavaScript代码. 我们平常在浏览网站的时候会看到许多加密的参数,如果需要知道它的原始数据,就需要知道整个加密过程,所以本篇文章就来介 ...
- .NET开源功能强大的串口调试工具
前言 今天大姚给大家分享一款.NET开源的.功能强大的串口调试工具:LLCOM. 工具介绍 LLCOM是一个.NET开源的.功能强大的串口调试工具.支持Lua自动化处理.串口调试.串口监听.串口曲线. ...
- 千卡利用率超98%,详解JuiceFS在权威AI测试中的实现策略
2023 年 9 月,AI 领域的权威基准评测 MLPerf 推出了 Storage Benchmark.该基准测试通过模拟机器学习 I/O 负载的方法,在不需要 GPU 的情况下就能进行大规模的性能 ...
- C++ STL 容器-array类型
C++ STL 容器-array类型 array是C++11STL封装的数组,内存分配在栈中stack,绝对不会重新分配,随机访问 创建和初始化 // 下面的等同于int a[10]; std::ar ...
- 专访实在智能孙林君:颠覆传统RPA的实在IPA模式如何做到真正人人可用?
王吉伟对话实在智能孙林君:颠覆传统引领RPA行业的实在IPA模式是如何炼成的? 王吉伟对话实在智能孙林君:为什么第一款颠覆行业的RPA诞生在实在智能? 专访实在智能孙林君:打造出真正人人可用的实在 ...
- C语言之兔子生产问题
/#include <stdio.h> main() { long fib1 = 1, fib2 = 1, fib;//定义长整型变量,fib1表示当前前一个月的兔子数,fib2表示当前前 ...
- npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案
npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案 为什么 在安装依赖包的时候,会有依赖包的冲突 比如A包引用了C的1.0版本 B包依赖了C的1.1版本 win ...