Quantcast
Channel: 少数派
Viewing all articles
Browse latest Browse all 13768

「iTunes 无法验证服务器身份」的解决方案 | Matrix 精选

$
0
0

1c4f4cd729551f6d3bed04ae91393776558a2_mw

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

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

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

1240

问题分析

导致问题的根本原因是网站证书失效。导致问题的首要因素是中国电信劫持了该网站。

观察了一下该网站证书,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」,然后点击「继续」按钮即可。

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

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



文章来源 少数派 ,原作者 Hackl0us ,转载请注明原文链接



喜欢少数派?欢迎关注我们的微博:@少数派sspai ,微信公众号: sspaime
少数派( http://sspai.com )

6fcd7e4d2ff948e38968f06e6101782b55437_mw


Viewing all articles
Browse latest Browse all 13768

Trending Articles