> For the complete documentation index, see [llms.txt](https://dh.4g.cx/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dh.4g.cx/items/accessing-difficulties-of-github-in-china.md).

# GitHub访问速记

不知道我的消息够不够灵通，在昨晚我了解到GitHub Pages疑似遭到中间人攻击。我打开自己的浏览器先访问了GitHub，发现一切正常，然后再打开Pages，就遇到了以下问题：

![\*.github.io疑似遭到了MITM（中间人）攻击。](https://doodlehuang.files.wordpress.com/2020/03/image-4.png?w=1024)

![浏览器不想相信这种证书，毕竟它太假了](https://doodlehuang.files.wordpress.com/2020/03/403vuu7s42llf6xr40q8i-1.png?w=804)

在这里，我想先说明一下，很多人说HTTPS没用，这都能被挡住。事实上，这就是HTTPS的作用与魅力：它能阻止不安全的连接。如果没有这项机制，你可能甚至不会察觉到网络连接被劫持了。

当我检查证书的时候，我发现了这个证书跟GitHub官方的确丝毫没有联系，因此没有什么浏览器会选择信任它。

![证书的详情：这是一个自签（Self-Signed）证书。](https://doodlehuang.files.wordpress.com/2020/03/image-2.png?w=409)

这个证书是一个自签证书，给主机“server”签发。这看起来只是一个给局域网或是内网使用的证书，却不知道为什么流到了互联网，而且还是被用于劫持一个大网站！

很多人都查看了CSR信息，发现了该证书请求邮箱是一个QQ邮箱，而他的昵称为“心即灵山”，这个QQ想必很多人也有尝试接触过。

![346608453@qq.com](https://doodlehuang.files.wordpress.com/2020/03/image-3.png?w=409)

我个人认为这个证书更像是一个替罪羔羊，并不能指示任何一个幕后主使者，而我也不支持任何骚扰这个人的行为。于是我进一步检测这个问题：

1. 我通过NSLookUp查询GitHub多个网站的地址，并将IP进行搜索，发现是官方IP无误，排除DNS污染等常用GFW操作的可能；
2. Pages一直都没有强制HTTPS，因此在稍晚的时候，多数人通过HTTP即可访问几乎所有Pages（在通过关键词审查的前提下），因此我合理猜测80端口和443端口被分开路由了，或者是……？
3. 由于HTTP是明文传输，我合理猜测HTTP也有可能被中间人攻击，只是用户无法察觉。
4. 因为DH trl，根本不懂什么网络技术，上述猜想根本不会去验证，呜呜呜。

今天早上我登入知乎查看了一下[GitHub的主题（Luv Letter的回答）](https://www.zhihu.com/question/382718053/answer/1107253757)，然后发现了一些结论，同时也解决了我的一些疑惑：

1. 这个情况的确有且仅有在国内发生；
2. 大家普遍同意那个不明证书（里面提到的QQ号）和幕后主使没有太大关联（就是“替罪羔羊”）；
3. DNS相关部分运作正常，根据网友的进一步检测（我太弱了，呜呜呜），证实HTTP是正常的（没有中间人攻击），而443端口的流量则被转发到不同的路由；
4. 攻击模式确认就是中间人攻击（MITM）无误。

昨晚我还刻意测试了一下GitHub官网，在那个时候它还能被访问。但是今天早上我起床后再试了一下——

![连它也不能幸免于难！](https://doodlehuang.files.wordpress.com/2020/03/image-5.png?w=1024)

![Stapx的截图](https://doodlehuang.files.wordpress.com/2020/03/7v3vxby0g5vg409t.jpg?w=150)

Surprise！相同的手法，相同的结果，相同的阴谋！

没有人想要被网络搞暧昧。

截止到发布前，GitHub的各项服务已经能在中国大陆大部分地区正常访问，少数地区仍存在偶尔的劫持问题，长期禁止GitHub的地区不在本文的讨论范围内。
