装个描述文件就能防掉签?iOS 反撤销 DNS 到底是怎么回事

装个描述文件就能防掉签?iOS 反撤销 DNS 到底是怎么回事

玩侧载的人大概都遇到过这一幕:应用装上去用得好好的,某天点开图标,iOS 弹出一句「不受信任的开发者」或者「无法验证 App」。原因通常是签名证书被苹果撤销了。

为了对付这件事,侧载社区里流行起一种东西——反撤销 DNS 配置文件。装一次,据说就能让已经签好的应用一直活着。这个说法有一半对、一半是误解。下面把它的原理和边界讲清楚。

它到底做了什么

反撤销配置文件的本质是一个 iOS 描述文件(mobileconfig),里面用的是苹果的「受管加密 DNS」功能。它的作用范围非常具体:只把特定域名的 DNS 查询,导向一个指定的加密 DNS 服务器,而不是接管你全部网络流量。

走的是 DNS over HTTPS(DoH)。文件里写的服务器地址是一个 Cloudflare Gateway 的 DNS 端点。注意关键的一点:具体要拦截哪些域名,并不写在这个描述文件里,而是由那个 Cloudflare 账户的服务端策略控制。也就是说,你装进手机的这个文件,只是把查询「转交给某台服务器」,真正的黑名单不在你手里,随时可以被对方改动。

描述文件里到底有什么

把文件拆开看,功能性 payload 只有两个:

com.apple.dnsSettings.managed —— 受管加密 DNS 配置,负责把指定域名导向 DoH 服务器

一个可移除的 Web Clip —— 往主屏加一个快捷方式图标

重要的是它不含什么:没有 MDM 注册 payload、没有根 CA 证书、没有 VPN 配置、没有全局 HTTP 代理、也没有限制移除的设定。

文件本身带 CMS/PKCS#7 签名,签名身份是一个企业开发者证书,证书链基于苹果的 WWDR G3 层级,有效期一年。换句话说,这个描述文件自己也有到期日。

它屏蔽了哪些苹果域名

这是全文最实用的部分。这份配置屏蔽的域名包括:

ocsp.apple.com —— 证书在线状态检查

ocsp2.apple.com —— 同上,较新的 HTTPS 端点

crl.apple.com —— 证书撤销列表

certs.apple.com —— 证书链与验证服务

valid.apple.com —— 证书验证

mesu.apple.com —— 系统软件更新目录

gdmf.apple.com —— 软件更新可用性检查

appattest.apple.com —— App 验证与设备证明

vpp.itunes.apple.com —— 受管 App 许可服务

若干 Siri 相关主机名

看这份名单就能明白:它不是单纯的「证书撤销拦截器」,而是顺带干扰了系统更新、App Attest、受管应用等一整套基础设施。

有一点值得注意:它没有屏蔽 ppq.apple.com(苹果定义的企业 App 验证服务)。2021 年 6 月之后注册的开发团队,其开发签名/Ad Hoc 签名的应用首次启动必须联网过一遍 PPQ 检查。如果不屏蔽它,应用的首次验证不会被破坏——这其实是这份配置相对克制的地方。社区里更常见的做法是:安装和首次验证时临时放行 PPQ,之后再屏蔽。

原理:为什么屏蔽 DNS 就能延缓撤销

先从签名机制说起。非 App Store 安装的应用包含两部分东西:代码签名和嵌入式描述文件。当苹果撤销某个签名证书时,证书本身并没有从你的应用里消失,它物理上还在。

真正发生的是:系统去问苹果「这张证书还有效吗」,苹果回答「已撤销」。如果设备因为 DNS 解析不到、或者连不上证书验证基础设施,就可能拿不到最新的撤销信息,从而延迟甚至阻止在线撤销检查。

这就是 OCSP、CRL、certs 这几个域名反复出现在反撤销配置里的原因——苹果自己就把它们归类为证书验证基础设施。

安装步骤

把配置装进 iPhone 或 iPad 的流程如下:

用 Safari 打开描述文件下载链接(其他浏览器不行,iOS 只认 Safari 的下载行为)

下载完成后,系统会提示「已下载描述文件」

打开设置,在顶部找到「已下载描述文件」并进入

安装前先审查内容——这一步别跳过,确认看到的是加密 DNS 配置和 Web Clip,没有任何 MDM 或根证书

点击「安装」,输入设备密码

仔细读一遍警告内容,确认后完成安装

安装后可以到「设置」→「通用」→「VPN 与设备管理」里查看是否生效。

有一点要提醒:描述文件下载后 8 分钟内没有安装会被自动删除,所以下完就顺手装掉。另外,如果开启了失窃设备保护(Stolen Device Protection),在离开熟悉地点时可能会阻止安装,需要临时关闭。

移除方法很简单:「设置」→「通用」→「VPN 与设备管理」→ 选中该描述文件 → 移除。

它做不到的事

这部分是最需要讲清楚的,因为误解基本都出在这里。

不能让证书永久有效:DNS 拦截只能干扰在线验证,无法改写描述文件里编码的过期日期。个人开发团队的 7 天有效期,照样会到期。

不能把已撤销的应用救回来:正确用法是预防性的——在设备收到撤销结果之前就装好过滤。如果 iOS 已经知道证书被撤销了,事后装这个描述文件不保证能逆转。

过期和撤销是两件事:过期是指超过了编码的有效期(DNS 无法推迟);撤销是指有效期内被签发方主动作废(DNS 可以干扰信息获取)。搞清楚区别,就不会对它抱错期待。

不能给设备加 UDID:如果描述文件里压根没有你的设备 UDID,DNS 也没法帮你加进去。

不能修复被改动的可执行文件:签名对不上,DNS 管不着。

苹果随时可以改规则:引入新主机名、改变验证协议、改变缓存行为、或要求通过其他服务在线验证——这些都是苹果能做的事。

已知的副作用

屏蔽名单里那些域名会带来实际影响,值得提前知道:

系统更新:mesu.apple.com 和 gdmf.apple.com 被路由,可能影响 OTA 更新的发现和下载。想升级系统时,可能得先移除描述文件。

App Attest:部分应用依赖这个服务做安全判断,屏蔽后可能影响这些应用的行为。

Siri:名单里包含 Siri 相关主机名,可能导致相关功能异常。

隐私:DNS 查询实质上是交给了 Cloudflare Gateway 的运营方,对方理论上有能力观测和过滤你发往该解析器的查询。

还有一个小坑:这份描述文件的外层描述写着「包含 google 和 cloudflare DNS」,但实际 payload 里只有 Cloudflare Gateway 的 DoH,并没有 Google DNS。描述文字和实际内容不一致,这也说明为什么安装前必须审查 payload。

一个重要的兼容性提醒

苹果已经把 com.apple.dnsSettings.managed 标记为从 iOS 27 起弃用,替代方案是新的声明式配置 com.apple.configuration.network.dns-settings。如果你要长期使用这类配置,得留意它在新系统上的兼容性——旧 payload 在后续版本里可能失效。

顺手把几个容易混的概念讲清

P12 证书:一个 PKCS#12 归档,里面装着签名证书和对应的私钥。私钥才是真正用来签名软件的东西。只下载 .cer 是不够的,因为缺私钥。要把 P12 当密码一样保管。

P12 和描述文件是两回事:P12 是签名身份,.mobileprovision 是配置授权。侧载通常两个都要。

签名不等于安全:签名能证明文件完整性和签名者身份,但恶意描述文件同样可以签名。所以安装界面上出现的 payload 类型要看清——看到 MDM、根证书、VPN、代理这些,就该停手。

几个常见报错怎么理解

「不受信任的企业开发者」:手动安装企业应用时的正常提示。iOS 18 之后要到「设置」→「通用」→「VPN 与设备管理」里选中开发者,点「允许并重新启动」。

「未验证」:无法完成在线验证。需要联网并保证 ppq.apple.com 可达,然后点「验证 App」。

「无法验证 App」:通用错误。可能原因包括证书被撤销、描述文件过期、设备未注册、签名无效、权限不匹配、验证连接被阻断等。DNS 只能解决其中一部分,别指望它包治百病。

结论

反撤销 DNS 是一个基于「当前验证流量走哪些域名」这一假设的 DNS 过滤手段。它在特定条件下确实有用,尤其是在设备还没收到撤销信息之前就装好的情况下。

但它不是「苹果再也撤销不了你的应用」的保证。用正确的期待去用它——把它当成侧载工具箱里的一件工具,而不是护身符。最重要的一条仍然是:在日常使用的手机上安装任何配置描述文件之前,先看清楚它的内容。

相关推荐

针尖对麦芒词语解释
日博365投注

针尖对麦芒词语解释

📅 02-16 👁️ 6093
惊蛰 (电影)
日博365投注

惊蛰 (电影)

📅 10-05 👁️ 2407
便秘别只知道吃香蕉?缓解便秘,有11种方法
棋牌365大厅

便秘别只知道吃香蕉?缓解便秘,有11种方法

📅 09-07 👁️ 9063
喜马拉雅
棋牌365大厅

喜马拉雅

📅 01-09 👁️ 9466