2023年10月2日

技术教程 通过反向代理解决无法连接Minecraft认证服务器的故障

作者 TheWhiteDog9487

#1 前情提要

最早的时候是在国庆节当天监测到这个问题的。
我发这个动态的时候已经看到有很多人报告有一样的问题,所以影响范围应当不小。

PCL作者龙腾猫跃发的动态
龙腾猫跃的动态 – 哔哩哔哩
岷叔的讨论贴
籽岷的动态 – 哔哩哔哩

反正到这这事基本上实锤了。
管他是故意的还是意外的,反正肯定影响范围很大。


#2 那么怎么解决呢?

这里下载最新版本,全部解压后以管理员身份运行steamcommunity_302.exe

这个程序非常简单,所以我就不详细描述了,基础功能研究几分钟应该能理解。

打开设置

上边的开机自启和自动启动服务并不是必须的,但是建议开启,很方便。
左边的【本地反代服务选择】,列表拉到最下边,把【我的世界(部分请求修复)】打勾,然后保存设置。

先把服务停止掉,然后再次以管理员身份开启SteamCommunity302

当你的屏幕右下角出现这个通知的时候,就大功告成了…吗?
还没完,但是快完了。


#2.5 解决一下Java

由于Java的特性,Java虚拟机并不会理睬Windows系统信任的根证书,而是单独用自己的一套系统,这就导致了我们必须手动操作一下,不然和服务器通信的时候无法进行SSL握手。
( 上面这一段你要是听不懂我在说什么,那就跟着我说的做,相关知识建议自行搜索HTTPS和SteamCommunity302的工作原理。

首先,确定要处理哪个或者哪几个Java。
( 我用HMCL做演示,其他启动器或者官方启动器建议照葫芦画瓢,难度应当不会太大。

打开你的启动器和任务管理器

看一下你的启动器用的是哪个Java启动的,右键那个Java进程,选择打开文件所在位置。

非常好,注意这个文件路径。
退到上一层,打开lib文件夹和下面的security

注意这个cacerts,找的就是他。
在这个文件夹里打开终端(没有的自行开启cmd或者powershell然后使用cd切换到security这个目录)
使用这个指令导入CA证书:

keytool.exe -import -keystore .\cacerts -storepass changeit -keypass changeit -alias steamcommunity302 -file <steamcommunityCA.pem所在路径>

记得把<steamcommunityCA.pem所在路径>替换成你自己的路径,这个文件就在刚才启动的SteamCommunity302程序的同目录下

keytool.exe -import -keystore .\cacerts -storepass changeit -keypass changeit -alias steamcommunity302 -file "D:\其他\应用安装程序\Dogfight360\SteamCommunity\steamcommunity_302\steamcommunityCA.pem"

这是我自己用的指令。

然后程序会让你确认是否要添加这张CA证书,输入y然后按回车,搞定。

那么现在搞完了吗?不好说
对一部分人来说,现在搞定了;对另一部分人来说,还没完。

#2.7182 确定你运行游戏时使用的Java

如果你运行游戏和打开启动器使用的是同一个Java虚拟机,那这部分你不用看了,整个教程你已经走完了。

打开你的启动器,进入版本设置,看一下你启动游戏用的是哪个Java。

如果是你刚才在步骤2.5操作的那个Java,那就不用管了。
如果不是,找到你启动游戏的Java路径,重复步骤2.5的操作。

#3 完结撒花

没了,已经结束嘞!
现在应当可以正常登录,可以正常进入服务器了。