Matrix 是少数派的全新产品,一个纯净、小众的写作平台,我们主张分享真实的产品体验,有实用价值的互联网领域经验、思考。欢迎忠于写作,喜好分享的朋友参与内测。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
本文内容仅代表作者本人观点,文章排版有略作修改,原文链接。
近日打开 iTunes 会频繁提示一个窗口,内容为「iTunes 无法验证服务器 s.mzsatic.com. 的身份」,这个问题非常烦人,会导致无法与 Apple 服务器取得联系,从而出现无法验证固件更新、无法使用 Apple Music 等等,iTunes 会变成一个离线音乐播放器。
问题分析
导致问题的根本原因是网站证书失效。导致问题的首要因素是中国电信劫持了该网站。
观察了一下该网站证书,s.mzstatic.com.
的网站证书是颁发自webssl.chinanetcenter.com.
的(各位可以看到 ChinaNet 的字样,和中国电信有脱不开的关系),这样就会导致 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」,然后点击「继续」按钮即可。
3. 访问结束后,退出浏览器。重新启动 iTunes,会发现已经成功可以联系 Apple 服务器,例如我的 iTunes 提示了可以更新至 iOS 10.0.2。
方案二:修改线路
此方案可能给您多种方法选择,不同的方法可能花销更多的 VPN 流量、时间等,而且一旦指向 IP 地址失效,您需要手动维护,学习成本较高。
方案二之所以成为修改线路,意味着您可以用各种方式避开国内解析。例如:
- 使用 VPN
- 使用代理
- 修改 DNS 服务器(修改后需清空DNS缓存)
只要是可以改变路线的方式,都可以用。
为了避免不必要的问题和纠纷,并以最简单学习成本为目的,本文仅采用修改 Hosts 文件指向的方式解决问题。
以 macOS Sierra 为例。
1. 打开「应用程序」下的「终端」App。
2. 输入命令sudo -s
,并输入用户的系统密码,以获得修改 hosts 文件的权限。正确输入密码后,如图所示,主机名位置显示bash-3.2#
。
3. 输入命令 echo "104.70.135.100 s.mzstatic.com" >> /etc/hosts
,敲击回车,使 hosts 文件末尾追加指向条目。然后再输入命令dscacheutil -flushdns
以清空DNS缓存。
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
欢迎各位对文章批评指正,欢迎各位交流讨论,如果有任何疑惑或问题,请评论或联系我。
喜欢少数派?欢迎关注我们的微博:@少数派sspai ,微信公众号: sspaime
少数派( http://sspai.com )