yushijinhun / authlib-injector

Build your own Minecraft authentication system.
https://authlib-injector.yushi.moe
GNU Affero General Public License v3.0
744 stars 67 forks source link

[问题]使用域名在服务端部署外置登录无法加入游戏 #129

Closed AknnaSky closed 3 years ago

AknnaSky commented 3 years ago

问题描述:在服务端加入启动参数时使用域名出现 登入失败:身份验证目前正在停机维护 MC版本:1.12.2 环境: PHP7.4.20 搭建 Blessing Skin 皮肤站 源码构建。nginx 1.20.1 本机JDK 8u291 插件:Yggdrasil API 5.1.3 具体描述: 在VPS上: 按照Blessing Skin Wiki 教程完成搭建皮肤站,正常运行,创建角色后 域名+/api/yggdrasil 正常访问 在HMCL添加站点后正常连接,无报错,角色正常显示,日志无异常信息 服务端正版验证已开启,并且 authlib-injector 顺利加载,无报错信息 但是在多人游戏添加自己的服务器 (本地Windows10 ,VPS CentOS 8.2 环境同上),使用完全一样的Blessing Skin网站 但是网站搭建在VPS(验证服务器)时,使用域名加入游戏显示 登入失败:身份验证目前正在停机维护 最初以为是自己Nginx配置问题,尝试配置http80端口和https443,在客户端,服务端分别修改地址后,均是同样的失败提示 之后修改server_name为VPS的IP地址,在客户端,服务端分别修改,这时候正常加入服务器 查看nginx的access.log注意到 使用IP地址加入时比使用域名加入时多了这两条日志 "POST /api/yggdrasil/sessionserver/session/minecraft/join HTTP/1.1" "GET /api/yggdrasil/sessionserver/session/minecraft/hasJoined?serverId=56bb3b8ed20ae5ed0c92a4f1814b7effe47eadb5&username=Test HTTP/1.1" 并且使用IP地址直连均正常连接进入 使用域名时未出现这两条 无法正常连接 然后我尝试用别的服务器验证,这里用的是 littleskin 服务端启动参数为 -javaagent:authlib-injector-1.1.36.jar=https://littleskin.cn/api/yggdrasil 依然无法正常连接。错误提示仍然是 登入失败:身份验证目前正在停机维护 在本地时: 同VPS过程,使用localhost和127.0.0.1均可正常验证并加入服务器

个人在此方面的接触尚浅且水平不足,不清楚是哪里出了问题,在issue没有找到类似的,想请教一下。 尽力将问题的具现方式描述了出来,有些啰嗦,还望海涵 感谢!

AknnaSky commented 3 years ago

补充: 加入游戏时后台提示 com.mojang.authlib.GameProfile@42ac6a53[id=,name=Test,properties={},legacy=false] (/127.0.0.1:59943) lost connection: Disconnected

AknnaSky commented 3 years ago

以我这边的环境,用域名作为地址,在客户端服务端配好后。一般有三种情况 nginx监听80端口 用域名登录比如 http://skin.minecraft.net ,这时候客户端出现 登入失败:无效会话(请尝试重启游戏) 443端口 https://skin.minecraft.net ,登入失败:身份验证目前正在停机维护 80和443以外任意端口,比如666,81,888 无论是否在nginx启用ssl 均可正常登入 调试信息显示 [DEBUG] Reverse proxy: > GET https://域名:666/api/yggdrasil/sessionserver/session/minecraft/hasJoined?serverId=-68268997e51ce90e2856d5b7cac74352d572753a&username=玩家ID, headers: {cache-control=no-cache, pragma=no-cache, user-agent=Java/1.8.0_291, accept=text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2} [authlib-injector] [DEBUG] Reverse proxy: < 200 OK , headers: {Cache-Control=[no-cache, private], Server=[nginx], X-Authlib-Injector-API-Location=[https://skin.langying.link/api/yggdrasil], Set-Cookie=[locale=en; expires=Wed, 30-Jun-2021 20:38:34 GMT; Max-Age=7200; path=/; httponly; samesite=lax], Date=[Wed, 30 Jun 2021 18:38:34 GMT], X-Powered-By=[PHP/7.4.20], Content-Type=[application/json]}

AknnaSky commented 3 years ago

好的,再排查后确定是证书配置问题,见笑了 PKIX path building failed