使用Keytool往Java运行环境添加自签名根证书(我的世界Minecraft)

我们能帮你什么吗?
当前浏览位置:
Print

由于java运行时可以独立存放,故除了官方安装版本没有固定的目录
按照以下步骤获取当前游戏客户端使用的java运行时目录
首先运行需要应用自签名根证书的游戏客户端.出现窗口后

运行cmd,运行命令:
wmic process where name="javaw.exe" get ExecutablePath

上图红框内的路径(去掉\bin\javaw.exe)就是java运行时的路径
我这里得到的是C:\Users\user\AppData\Roaming\.minecraft\runtime\java-runtime-gamma-snapshot
这个就是当前游戏使用的JAVA运行时环境目录,接下来在cmd中输入

#1.将路径设置为变量JREDIR,路径替换成自己的
set JREDIR=C:\Users\user\AppData\Roaming\.minecraft\runtime\java-runtime-gamma-snapshot
#2.导入证书(其中Steamcommunity_302为证书名称,D:\S302\steamcommunityCA.pem为证书文件路径,自行替换.然后运行命令导入
"%JREDIR%\bin\keytool.exe" -importcert -alias Steamcommunity_302 -file "D:\S302\steamcommunityCA.pem" -keystore "%JREDIR%\lib\security\cacerts" -storepass changeit -noprompt

执行成功后将看到该提示,如果已经导入过相同名称的根证书则会提示 别名 [X] 已经存在

===================================================================

以上是针对非UWP版本的JAVA运行时环境
若游戏为UWP版本(从微软商店/XBOXPC下载的).需要UWPEnableLoopback,并且使用脚本在游戏运行时不停写入 [游戏每次启动都会重新解压JAVA运行时文件,导致导入的证书被原始文件覆盖]
1.UWPEnableLoopback开启方法:下载解压,运行: EnableLoopback.zip
打勾我的世界,然后save changes即可


2.编写脚本.让证书循环导入
注意:java运行时路径依然使用最顶部方式获取,下方脚本对应路径需要修改为自己本地环境对应路径
@echo off
:loop
set JREDIR=C:\Users\user\AppData\Roaming\.minecraft\runtime\java-runtime-gamma-snapshot
"%JREDIR%\bin\keytool.exe" -importcert -alias Steamcommunity_302 -file "steamcommunityCA.pem" -keystore "%JREDIR%\lib\security\cacerts" -storepass changeit -noprompt
ping localhost -n 1 -w 500 > nul
goto loop

将上面的脚本保存为bat格式的批处理脚本,在游戏运行前运行,会循环向JAVA运行时写入证书.成功进入游戏后再关闭脚本窗口即可

证书删除: 同样设置java运行时目录变量后执行 (Steamcommunity_302为前面自己设置的证书名称)
%JREDIR%\bin\keytool.exe" -delete -alias Steamcommunity_302 -keystore "%JREDIR%\lib\security\cacerts" -storepass changeit