macOS 27.2.1 起 curl 不再信任 eMudhra。我会在 Mac 应用里检查这些
作者 Justinas Rolando,MacPip 的开发者
2026年11月9日,Apple 发布了 macOS 27.2.1,以及面向旧款 Mac 的 26.7.3 和 15.8.3。除了 8 项安全修复,它们还堵上了 eMudhra 证书泄露留下的缺口:自10月19日起,Safari、邮件以及使用 Apple 网络和安全框架的应用已经拒绝了 12 个有问题的证书,但 curl、git、python3 和 openssl 这类命令行工具读取的是 /etc/ssl/cert.pem,仍继续接受它们。这次更新从该文件中移除了 5 个根证书,其中包括 AAA Certificate Services。如果你的应用、安装程序或更新脚本用到这些工具,或者自带受信任根证书列表,请在新版本上测试你的下载和你自己的服务器。
大多数 Mac 更新我装完就忘。但如果我做 Mac 应用,11月9日发布的 macOS 27.2.1 我会仔细读说明,因为它改变了每台 Mac 上一些工具所信任的证书。Apple 同时为旧款 Mac 发布了 macOS Tahoe 26.7.3 和 Sequoia 15.8.3,三个版本都带有同样的改动。
下面说说发生了什么、影响到谁,以及我会测试什么。
发生了什么
- 8 个中间证书颁发机构遭到入侵。Apple 的 eMudhra 支持页面说,eMudhra 的 8 个中间 CA 的私钥已泄露,其中 6 个签发网站用于 https 的证书。有了这些密钥,就可以伪造出对任何网站看起来都有效的证书。eMudhra 和 Sectigo 已吊销受影响的证书。
- 密钥小得离谱。MacRumors 报道说,Mozilla 的调查发现密钥值小到很容易还原。MacRumors 也在 10 月提到,没有证据表明这些密钥被用过。
- Apple 在 10 月就做了拦截,但并非处处生效。从10月19日起,Apple 在 Safari、邮件以及使用 Apple 网络和安全框架的应用中拦截了其中 12 个证书,不需要更新。
- 缺口出在命令行工具上。Apple 的页面点名了 curl、git、python3、ruby、perl 和 openssl。它们依据
/etc/ssl/cert.pem这个文件校验证书,凡是链到该文件中某个根证书的,都绕过了 Apple 的拦截。 - 27.2.1 堵上了这个缺口。命令行工具不再接受这些证书,
/etc/ssl/cert.pem中也移除了 5 个根证书:emSign ECC Root CA - G3、AAA Certificate Services、emSign Root CA - G1、emSign Root CA - C1 和 emSign ECC Root CA - C3。Apple 的页面说明,26.7.3 和 15.8.3 包含同样的保护。
据 MacRumors 报道,同一批更新还修复了信息、AirPlay 和蓝牙中的另外 8 个安全漏洞。Apple 没有说其中有被用于攻击的。
Mac 应用开发者为什么该在意
如果你的应用是用 URLSession 联网的普通 Swift 应用,它很可能在 10 月就已被覆盖。Apple 的页面说的是使用其网络和安全框架的应用,而 Michael Tsai 引用的 Howard Oakley 说,基于 Apple 标准 API 的应用使用 macOS 的信任库。
没有被覆盖的,正是许多独立开发者发布的那类应用:
- 底层调用 curl、git 或 python3 的应用。下载助手、安装脚本、本地 AI 应用的模型下载器、封装 git 的开发者工具。
- 自带受信任根证书列表的应用。Oakley 点名了 Chrome 和其他 Chromium 内核浏览器、Mozilla 和 Microsoft 的产品,以及部分 Electron 应用。他还说 Python、Java、Go,也可能包括 Rust 或 Ruby,都可能受影响。Apple 的页面说,自带根证书列表的工具完全不使用它的拦截,也不使用
/etc/ssl/cert.pem。
所以 10 月的修复可能没有覆盖到你的应用,如果应用自带根证书,11 月的修复也可能没有。
还有另一面。AAA Certificate Services 是 Sectigo 的一个老根证书,签发过大量普通证书。Apple 的页面警告说,只使用 /etc/ssl/cert.pem 的工具,可能无法验证证书链经过已移除根证书的某些网站。如果你的下载服务器、更新源或许可证 API 恰好是其中之一,更新后的 Mac 上的 curl 就可能开始拒绝它。
本周我会检查什么
这些是我自己的步骤,不是 Apple 的。
- 把一台 Mac 更新到 27.2.1,然后在命令行测试下载。运行你的安装脚本;如果有 cask,就运行
brew install;再对你的下载、appcast 和许可证地址运行curl -I。证书被拒绝时会显示为错误,而不是页面变慢。 - 看看你自己的证书链。运行
openssl s_client -connect yourapp.com:443 -showcerts,读一下 issuer 那几行。如果看到 eMudhra、emSign 或 AAA Certificate Services,请让你的主机商或证书供应商换成以其他根证书结尾的证书链。 - 找出你的应用实际使用的信任库。Electron、Go、自带根证书的 Rust、使用 certifi 的 Python 和 Java,都带有自己的信任库。把运行时或根证书包更新到已去掉问题证书的版本,并写进你的发布说明。
- 准备好支持回复。如果有人的旧 Mac 无法安装更新,Apple 的页面提供了手动移除根证书的步骤。我会链接到 Apple 的页面,而不是把用到 sudo 的命令直接贴进邮件。
- 提醒用户更新。如果你的应用用户偏技术,在下一次发布或通讯邮件里写一小段,不费什么事。
- 在测试用的 Mac 上检查这个文件。Apple 的页面给出了下面的命令,两个关键根证书被移除后,它不会输出任何内容。
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'
我不会做的事
我不会为了让错误消失,就在脚本里关掉证书检查。这次改动要防的正是这件事。我也不会告诉用户他们的 Mac 被黑了。没有迹象表明密钥被用过,而且大多数应用在 10 月就已受到保护。
MacPip 的角度
MacPip 不检查应用信任哪些证书。上架信息在提交时会自动扫描,蓝色对勾只表示有人在某个日期试用过这款应用。如果你做的是开发者工具或安全与隐私应用,你最可能有受此影响的脚本或内置运行时,值得花一个小时看看。
今天上线:隐私清单检查器。粘贴你的 PrivacyInfo.xcprivacy,它会对照 Apple 自己的列表,检查每个数据类型、用途和必需原因代码,比如 CA92.1。它还会说明 Apple 在 Mac 上要求什么、不要求什么。它在页面里运行,不会发送任何内容。Info.plist 讲解和公证讲解就在旁边。如果你的 Mac 应用还没上 MacPip,上架是免费的。
来源
- Apple 支持:关于 eMudhra 证书颁发机构遭入侵(2026年11月9日 发布)
- Apple 支持:Apple 安全更新
- MacRumors:macOS 27.2.1 修复命令行工具中的 eMudhra 证书缺陷
- MacRumors:Apple 拦截被入侵的 eMudhra 证书(2026年10月25日)
- MacRumors:Apple 在 iOS 27.2.1 和 macOS 27.2.1 中修复了什么
- Michael Tsai:eMudhra 中间 CA 遭入侵
继续阅读
- Claude Fable 5.2 and Mythos 5.2: what's new, the benchmarks, and what it means for your MacClaude Fable 5.2 and Mythos 5.2 came out on November 9, 2026. Anthropic's benchmarks as charts, the prices, what changes on a Mac, and four free tools.
- Live Activities 来到 Mac 菜单栏。如果是我的 Mac 应用,我会这样做macOS 27.3 测试版把 Live Activities 放进了 Apple silicon Mac 的菜单栏,Mac 应用也可以自己启动。这里讲有什么变化、有哪些限制,以及先试什么。
- 内存让 Mac 变贵了。我会这样处理我的 Mac 应用Apple 说,因为内存,Mac 会一直紧缺、涨价到 2027,而最便宜的 Mac 只有 8 GB。这对你的 Mac 应用意味着什么,以及本周可以做的检查。
- Apple 现在允许你和取消订阅的人说话了。如果是我的 Mac 应用,我会这样做自 11月4日 起,App Store 订阅可以在用户取消时显示一条消息或优惠。规则、Apple 的说法,以及在 Mac 上要检查什么。
- Apple 新增了两个年龄分级问题。我会这样处理我的 Mac 应用从 11月16日 起,App Store Connect 会询问位置共享和约会功能,所有应用都必须在 2027年1月12日 前回答。有哪些变化,以及该怎么做。
- Siri AI 现在向所有开发者开放了。我会先为自己的 Mac 应用做这些Apple 在 macOS 27.3 测试版中向所有开发者开放了 Siri AI。这篇文章讲清楚有什么变化、现在能发布什么和不能发布什么,以及给小型 Mac 应用的一个简短计划。
- 触控屏 Mac 将于 11月6日 发货。我会在自己的 Mac 应用里检查这些Apple 的首批触控 Mac 将于 11月6日 到货。这篇文章讲有什么变化、Apple 建议开发者怎么做,以及一份可以在你自己的 Mac 应用里测试的简短清单。
- MacPip 简介MacPip 是什么、我为什么做它、收录和发布日如何运作、蓝色对勾真正意味着什么,以及它最初几天的真实数据。
- 如何发布 Mac 应用:一页纸的清单Mac 应用发布日前后该做什么:签名、你的页面、目录、Product Hunt、Show HN,以及该衡量什么。
- 如何写一句话描述你的 Mac 应用做什么一种朴实的写法,用来写你 Mac 应用名称下面那一行文字:说清它做什么,去掉夸大,并找一个从没见过这个应用的人来测试。
- 用朴实的语言讲解签名与公证,面向第一次制作 Mac 应用的人代码签名、公证和装订(stapling)各自做什么、按什么顺序进行、没有它们时用户会看到什么,以及如何检查你自己的构建版本。
- 一个提供 dofollow 链接的网站,坦白说这种链接值多少dofollow 的含义、Google 对链接的说法、为什么新目录的链接目前价值不高,以及不买链接时该怎么做。