Matrix 是少数派的全新产品,一个纯净、小众的写作平台,我们主张分享真实的产品体验,有实用价值的互联网领域经验、思考。欢迎忠于写作,喜好分享的朋友参与内测。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

本文内容仅代表作者本人观点,文章排版有略作修改,原文链接


近日打开 iTunes 会频繁提示一个窗口,内容为「iTunes 无法验证服务器 s.mzsatic.com. 的身份」,这个问题非常烦人,会导致无法与 Apple 服务器取得联系,从而出现无法验证固件更新、无法使用 Apple Music 等等,iTunes 会变成一个离线音乐播放器。

1240

问题分析

导致问题的根本原因是网站证书失效导致问题的首要因素是服务商劫持了该网站。

观察了一下该网站证书,s.mzstatic.com.的网站证书是颁发自webssl.chinanetcenter.com.的,这样就会导致 HTTPS 证书的主机名和被颁发证书原机构不符合,被判断有伪造服务器嫌疑,iTunes 为了保证通讯安全,所以终止本次通讯,并提示用户错误。

通常这种情况是由于服务器配置错误,或是被拦截攻击导致的,这种情况会被判定为不安全的传输,认定证书无效。

问题归根结底出现在证书,那么解决方案就有两种,第一种就是按照国内的解析走,但是信任证书。第二种就是,绕路,不走寻常的国内 DNS 解析,手动将其指向国外地址,这样就不会出现此问题。

当然每种方法都有代价,您需要慎重考虑后选择出适合您的方案。


国内 DNS 解析结果

Google DNS解析结果

说人话版

如果您实在无法理解我上面到底说了什么,那么这里请看这里。

为什么 iTunes 报错?

假设你是 iTunes,22 岁,程序猿。每天早上喝杯牛奶,然后上班,有一个固定的牛奶配送员。突然有一天一个陌生人给了你一瓶牛奶,并告诉你这个牛奶很安全(失效证书),你可以放心饮用。你为了保证你能好好活着,选择不喝。因此 iTunes 为了保证通讯安全,发现问题后,选择中断连接。

怎么解决这个问题?

就是喝与不喝,或者怎么喝到牛奶的问题。

方法1:你信任这个陌生人(手动信任证书),并承担饮用牛奶后的一切后果,是死是活自己看着办,你让我喝到牛奶就好。代价是可能会反胃、狗带(DNS 被劫持后,黑客可能会通过某些手段窃取隐私、数据等未知危险行为)等。

方法2:为了安全地喝到牛奶,我不信任陌生人,我选择自己步行、坐车、打车、坐飞机(改变原访问路线,但访问方式可不同)去附近最近的商店,然后购买相同品牌放心可靠的牛奶,再饮用。代价是你会花更多的时间(不同的方法可能花费更多的代理流量、学习成本等),一旦商店没营业,既耽误了时间又没得到想买的牛奶(一旦指向的 IP 失效或变更,那么访问将失效)

解决方法

首先,退出正在运行的 iTunes。

方案一:手动信任证书

此方案的原理是,信任劫持后的网站证书,所以可能面临劫持后,被黑客窃取隐私数据的风险。

以 macOS Sierra 为例。

1. 打开 Safari 浏览器,地址栏输入s.mzstatic.com.并访问,一定加上英文字符点

2. 访问过程中,Safari 弹出提示框,警告用户该网站证书出现问题。如图,勾选「使用信任 webssl.chinanetcenter.com」,然后点击「继续」按钮即可。

1240

3. 访问结束后,退出浏览器。重新启动 iTunes,会发现已经成功可以联系 Apple 服务器,例如我的 iTunes 提示了可以更新至 iOS 10.0.2。

1240

方案二:修改线路

此方案可能给您多种方法选择,不同的方法可能花销更多的 VPN 流量、时间等,而且一旦指向 IP 地址失效,您需要手动维护,学习成本较高。

方案二之所以成为修改线路,意味着您可以用各种方式避开国内解析。例如:

  • 使用 VPN
  • 使用代理
  • 修改 DNS 服务器(修改后需清空DNS缓存)

只要是可以改变路线的方式,都可以用。

为了避免不必要的问题和纠纷,并以最简单学习成本为目的,本文仅采用修改 Hosts 文件指向的方式解决问题。

以 macOS Sierra 为例。

1. 打开「应用程序」下的「终端」App。

2. 输入命令sudo -s,并输入用户的系统密码,以获得修改 hosts 文件的权限。正确输入密码后,如图所示,主机名位置显示bash-3.2#

 

1240

3. 输入命令 echo "104.70.135.100 s.mzstatic.com" >> /etc/hosts ,敲击回车,使 hosts 文件末尾追加指向条目。然后再输入命令dscacheutil -flushdns以清空DNS缓存。

1240
4. 运行 iTunes 即可。

方案对比

 选用方案

方案 1

方案 2

安全性

低(可能被窃取数据)

高(在指定可靠的 DNS 服务器获取 IP 的前提下)

时效性

取决于证书有效期

取决于 IP 地址的变更 / 失效时间

学习 / 维护成本

注意事项

1. macOS 不同的系统,刷新 DNS 命令均有不同。请自行查阅相关信息。

2.「方案二」的步骤 3,注意重定向符号的使用,千万不要输入成 >,而是 >>。高级玩家可以使用高级工具如 Gas Mask、iHosts 等。

FAQ

Q:104.70.135.100 怎么来的?可以换成别的吗?
A:可以,使用dig命令,并指向非国内运营商DNS服务器,获取到的A记录即可作为被指向的地址。参考「问题分析」版块的配图。我使用的命令:dig s.mzstatic.com. @8.8.8.8

欢迎各位对文章批评指正,欢迎各位交流讨论,如果有任何疑惑或问题,请评论或联系我。