
我之前用 Xubuntu 15.4 就可以玩 Minecraft。昨天更新到15.10後,我無法在線上玩。這裡是啟動日誌。我嘗試過重新安裝 Minecraft 本身和 Java。我似乎在 Feed the Beast(Minecraft 的 modpack 用戶端)中遇到了另一個問題,它給了我這些錯誤:
Authlib checksum download failed, please check log for bad SSL
certificates: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
這是 FTB 啟動器中的另一個錯誤:
SSL handshake failed. Something might be altering SSL certificates
Certificates are not trusted by JVM certificate chain
Certificate chain will be printed in debug logging level
Authlib Download Failed
還有另一個:
No usable authlib available. Please check your firewall rules and network
connection. Can't start MC without working authlib. Launch button will be
disabled.
作為記錄;我沒有使用防火牆,並且我擁有chmod +x
每個 .jar 檔案。我在幾個 Minecraft 和 FTB 論壇上搜尋過答案,但沒有找到任何答案。
我認為這些問題有可能是相關的,但是比我了解更多的人可能可以證明我錯了。
我將不勝感激所提供的任何幫助。
謝謝!
編輯:一週後沒有回覆我幾乎放棄了。我還是不知道該怎麼辦。
編輯:我已將oracle-java
其刪除並替換為open-jdk-8
.現在我得到這個錯誤:Recognized exception: the likely cause is a set of broken/missing root-certificates. Check your java install and perhaps reinstall it.
Unable to download remote file. Check your internet connection/proxy settings.
FATAL ERROR: net.minecraft.bootstrap.FatalBootstrapError: Unable to download while being forced
at net.minecraft.bootstrap.Bootstrap.execute(Bootstrap.java:95)
at net.minecraft.bootstrap.Bootstrap.main(Bootstrap.java:381)
Please fix the error and restart.
我搞亂了一些並向jre/lib/security/cacerts
文件添加了一個證書。這樣我取得了一些進展,現在日誌如下圖:
[20:58:32 INFO]: Logging in with username & password
[20:58:32 ERROR]: Couldn't log in
com.mojang.authlib.exceptions.AuthenticationUnavailableException: Cannot contact authentication server
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:71) ~[launcher.jar:1.6.44]
at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logInWithPassword(YggdrasilUserAuthentication.java:74) ~[launcher.jar:1.6.44]
at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logIn(YggdrasilUserAuthentication.java:57) ~[launcher.jar:1.6.44]
at net.minecraft.launcher.ui.popups.login.LogInForm$4.run(LogInForm.java:171) [launcher.jar:1.6.44]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_66-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_66-internal]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66-internal]
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[?:1.8.0_66-internal]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[launcher.jar:1.6.44]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[launcher.jar:1.6.44]
... 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 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[?:1.8.0_66-internal]
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[?:1.8.0_66-internal]
at sun.security.validator.Validator.validate(Validator.java:260) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[?:1.8.0_66-internal]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[launcher.jar:1.6.44]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[launcher.jar:1.6.44]
... 6 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146) ~[?:1.8.0_66-internal]
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131) ~[?:1.8.0_66-internal]
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[?:1.8.0_66-internal]
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[?:1.8.0_66-internal]
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[?:1.8.0_66-internal]
at sun.security.validator.Validator.validate(Validator.java:260) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[?:1.8.0_66-internal]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[?:1.8.0_66-internal]
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[?:1.8.0_66-internal]
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[?:1.8.0_66-internal]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258) ~[?:1.8.0_66-internal]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[?:1.8.0_66-internal]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[launcher.jar:1.6.44]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[launcher.jar:1.6.44]
... 6 more
對我來說,這看起來仍然像是證書的問題,但說實話,我對這樣的事情不太了解。感謝您最終的幫助。我還是迷失在這裡。有沒有人有任何知道從哪裡開始嗎?
好吧,現在我得到了一些幫助,但我似乎不知道該怎麼做。我測試過以下 Java 版本:
甲骨文Java 8
OpenJRE 8
甲骨文Java 9
答案1
經過測試並與 FTB IRC 中的優秀人員合作後,我們讓它發揮作用。我們改變了一些東西(例如將 cacerts 連結到 java 的二進位檔案中),但真正修復它的是這個命令。幹得好 :)
sudo update-ca-certificates --fresh
答案2
答案是實際上第一次以正確的方式安裝java,即使在這部分之後我試圖使用的主機上也有問題,發生的事情是我寫了一個錯誤的命令,一切都搞砸了。套件ca-certificates 導致Ubuntu 的一半崩潰...結果是重新安裝並進行了數小時的重新配置,所以我無法再重現問題。現在的解決方案:我建議您刪除所有 java 安裝並手動清理 java 資料夾。現在您可以安裝一個名為 default-jre 的軟體包,這應該可以解決問題。它的作用是安裝一個名為 ca-cetficates-java 的套件
sudo apt-get install default-jre
The following extra packages will be installed:
ca-certificates-java default-jre-headless fonts-dejavu-extra java-common libatk-wrapper-java libatk-wrapper-java-jni libgif4 libgnomevfs2-0 libgnomevfs2-common libsctp1 lksctp-tools openjdk-7-jre openjdk-7-jre-headless tzdata-java
然後它將帶來 Minecraft 運行所需的證書!它是如此簡單。
舊:我有同樣的問題,它還需要更多證書,但最新的錯誤日誌沒有說明它嘗試訪問哪個網站。一個解決方案是讓java接受任何憑證。 https://stackoverflow.com/questions/1828775/how-to-handle-invalid-ssl-certificates-with-apache-httpclient
答案3
我遇到了這個問題,但 sudo update-ca-certificates --fresh 沒有解決它。事實證明,我的 Icedtea 版本相對於我的 nss 版本已經過時了。
答案4
我可以透過使用 openjdk-8 而不是 openjdk-11 來解決該錯誤。若要了解您使用的 java 版本,請java --version
在終端機中輸入。預設情況下,openjdk-java 安裝在/usr/lib/jvm/java-$version-openjdk-$platform
(其中 $version 是版本,例如 8,$platform 是平台,例如 amd64)。如果您在那裡找到版本 8,您可以使用以下命令運行啟動器/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -jar FTB_launcher.jar