HMCL-dev / HMCL

A Minecraft Launcher which is multi-functional, cross-platform and popular
https://hmcl.huangyuhui.net
GNU General Public License v3.0
7.01k stars 680 forks source link

微软登录经常出错 #2189

Closed g-mph closed 1 year ago

g-mph commented 1 year ago

启动器版本 Launcher Version

3.5.3.230

平台 Platform

Windows 11

问题描述 Problem Description

微软登录好了,启动的时候呢,emmmmm image 删除微软账户重新登录的时候呢, image 总说我网络连接有问题,但是在下载页面发现,能连接网络。

Java

No response

游戏版本 Game Version

1.19.2

对游戏所做的修改 Modifications Made to the Game

No response

游戏崩溃报告 Game Crash Report

No response

启动器崩溃报告 Launcher Crash Report

No response

启动器日志文件 Launcher Log File

hmcl-exported-logs-2023-04-02T08-56-12.log

Glavo commented 1 year ago

你的网络问题,登录要访问微软的网站,下载默认走的是镜像源。

g-mph commented 1 year ago

你的网络问题,登录要访问微软的网站,下载默认走的是镜像源。

不是我的网络问题,我能正常访问微软网站,PCL2 也能成功登录

关闭了的 Issue 是不是收不到通知了啊, @Glavo

zkitefly commented 1 year ago

我看了下日志,这的确不是网络的问题:

[08:49:23] [org.jackhuang.hmcl.setting.Accounts.lambda$init$9/WARNING] Failed to log MicrosoftAccount[uuid=88d0ed7f-1fd4-432e-be85-05e571f50f51, name=miaopan607] in
org.jackhuang.hmcl.auth.ServerDisconnectException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at org.jackhuang.hmcl.auth.OAuth.refresh(OAuth.java:171)
    at org.jackhuang.hmcl.auth.microsoft.MicrosoftService.refresh(MicrosoftService.java:85)
    at org.jackhuang.hmcl.auth.microsoft.MicrosoftAccount.logIn(MicrosoftAccount.java:91)
    at org.jackhuang.hmcl.setting.Accounts.lambda$init$9(Accounts.java:327)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:370)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:313)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357)
    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232)
    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175)
    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458)
    at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:200)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1500)
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1415)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
    at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:580)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1430)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1401)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220)
    at org.jackhuang.hmcl.util.io.HttpRequest$HttpPostRequest.lambda$getString$0(HttpRequest.java:187)
    at org.jackhuang.hmcl.util.io.HttpRequest.getStringWithRetry(HttpRequest.java:224)
    at org.jackhuang.hmcl.util.io.HttpRequest.access$100(HttpRequest.java:47)
    at org.jackhuang.hmcl.util.io.HttpRequest$HttpPostRequest.getString(HttpRequest.java:183)
    at org.jackhuang.hmcl.util.io.HttpRequest.getJson(HttpRequest.java:102)
    at org.jackhuang.hmcl.auth.OAuth.refresh(OAuth.java:165)
    ... 6 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
    at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
    at java.base/sun.security.validator.Validator.validate(Validator.java:264)
    at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
    at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
    at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1341)
    ... 28 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
    at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
    at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
    ... 33 more

这个问题在 https://github.com/huanghongxun/HMCL/issues/2164 中有提到,是过老的 Java 版本(或者是其他的)导致证书错误,然后访问不了微软的服务导致的

@Glavo

hejiehao commented 1 year ago

有开什么加速器吗?

g-mph commented 1 year ago

@hejiehao 已经在交流群解决了,谢谢! 原因是使用 fastgithub,它似乎为系统安装了证书,但是 Java 使用自带证书,需要手动安装。