赞助登录提交
博客

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,三个版本都带有同样的改动。

下面说说发生了什么、影响到谁,以及我会测试什么。

发生了什么

据 MacRumors 报道,同一批更新还修复了信息、AirPlay 和蓝牙中的另外 8 个安全漏洞。Apple 没有说其中有被用于攻击的。

Mac 应用开发者为什么该在意

如果你的应用是用 URLSession 联网的普通 Swift 应用,它很可能在 10 月就已被覆盖。Apple 的页面说的是使用其网络和安全框架的应用,而 Michael Tsai 引用的 Howard Oakley 说,基于 Apple 标准 API 的应用使用 macOS 的信任库。

没有被覆盖的,正是许多独立开发者发布的那类应用:

所以 10 月的修复可能没有覆盖到你的应用,如果应用自带根证书,11 月的修复也可能没有。

还有另一面。AAA Certificate Services 是 Sectigo 的一个老根证书,签发过大量普通证书。Apple 的页面警告说,只使用 /etc/ssl/cert.pem 的工具,可能无法验证证书链经过已移除根证书的某些网站。如果你的下载服务器、更新源或许可证 API 恰好是其中之一,更新后的 Mac 上的 curl 就可能开始拒绝它。

本周我会检查什么

这些是我自己的步骤,不是 Apple 的。

  1. 把一台 Mac 更新到 27.2.1,然后在命令行测试下载。运行你的安装脚本;如果有 cask,就运行 brew install;再对你的下载、appcast 和许可证地址运行 curl -I。证书被拒绝时会显示为错误,而不是页面变慢。
  2. 看看你自己的证书链。运行 openssl s_client -connect yourapp.com:443 -showcerts,读一下 issuer 那几行。如果看到 eMudhra、emSign 或 AAA Certificate Services,请让你的主机商或证书供应商换成以其他根证书结尾的证书链。
  3. 找出你的应用实际使用的信任库。Electron、Go、自带根证书的 Rust、使用 certifi 的 Python 和 Java,都带有自己的信任库。把运行时或根证书包更新到已去掉问题证书的版本,并写进你的发布说明。
  4. 准备好支持回复。如果有人的旧 Mac 无法安装更新,Apple 的页面提供了手动移除根证书的步骤。我会链接到 Apple 的页面,而不是把用到 sudo 的命令直接贴进邮件。
  5. 提醒用户更新。如果你的应用用户偏技术,在下一次发布或通讯邮件里写一小段,不费什么事。
  6. 在测试用的 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,上架是免费的。

来源

继续阅读

提交你的应用面向开发者的免费工具