web-dev-qa-db-fra.com

Minecraft avec OpenJDK 7, j'obtiens "le paramètre trustAnchors doit être non vide"

J'utilise Ubuntu 15.04 et OpenJDK 7 pour essayer d'exécuter Minecraft. C'est ce que je reçois.

EDIT: Minecraft fonctionne maintenant lorsque j'utilise Sudo Java -jar Minecraft.jar mais ne fonctionne pas sans super utilisateur, comment puis-je résoudre ce problème! La raison pour laquelle je ne peux pas l'exécuter en tant que super utilisateur tout le temps est parce que je veux pouvoir l'exécuter en double-cliquant dessus sur le bureau.

Downloading: https://s3.amazonaws.com/Minecraft.Download/launcher/launcher.pack.lzma (try 4/10)
Exception: javax.net.ssl.SSLException: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Lorsque vous l'exécutez. J'ai essayé d'utiliser OpenJDK 8 et c'est ce qu'il a fait également. J'ai aussi essayé le Java 8 d'Oracle.

Minecraft a bien fonctionné sur mon ancien ordinateur portable 14.04 sous OpenJDK 7.

EDIT 2: Maintenant, après avoir obtenu une exception SSL, le programme de lancement démarre et dit Play Offline, je suis donc allé à l'onglet "journal du programme de lancement" et je reçois ce message (désolé. :

[16:46:39 INFO]: Minecraft Launcher 1.6.11 (through bootstrap 5) started on linux...
[16:46:39 INFO]: Current time is May 25, 2015 4:46:39 PM
[16:46:39 INFO]: System.getProperty('os.name') == 'Linux'
[16:46:39 INFO]: System.getProperty('os.version') == '3.19.0-18-lowlatency'
[16:46:39 INFO]: System.getProperty('os.Arch') == 'AMD64'
[16:46:39 INFO]: System.getProperty('Java.version') == '1.8.0_45-internal'
[16:46:39 INFO]: System.getProperty('Java.vendor') == 'Oracle Corporation'
[16:46:39 INFO]: System.getProperty('Sun.Arch.data.model') == '64'
[16:46:39 INFO]: proxy == DIRECT
[16:46:39 INFO]: Refreshing local version list...
[16:46:39 INFO]: Refreshing remote version list...
[16:46:39 ERROR]: Unexpected exception refreshing version list
javax.net.ssl.SSLException: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Sun.security.ssl.Alerts.getSSLException(Alerts.Java:208) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.Java:1937) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.Java:1894) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.Java:1877) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1398) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1375) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.Java:563) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Java:185) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.Java:1512) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.Java:1440) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.Java:254) ~[?:1.8.0_45-internal]
    at com.mojang.launcher.Http.performGet(Http.Java:54) ~[launcher.jar:1.6.11]
    at net.minecraft.launcher.updater.RemoteVersionList.getContent(RemoteVersionList.Java:27) ~[launcher.jar:1.6.11]
    at net.minecraft.launcher.updater.VersionList.refreshVersions(VersionList.Java:85) ~[launcher.jar:1.6.11]
    at net.minecraft.launcher.updater.MinecraftVersionManager.refreshVersions(MinecraftVersionManager.Java:60) ~[launcher.jar:1.6.11]
    at net.minecraft.launcher.Launcher$2.run(Launcher.Java:132) [launcher.jar:1.6.11]
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511) [?:1.8.0_45-internal]
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:266) [?:1.8.0_45-internal]
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142) [?:1.8.0_45-internal]
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617) [?:1.8.0_45-internal]
    at Java.lang.Thread.run(Thread.Java:745) [?:1.8.0_45-internal]
Caused by: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Sun.security.validator.PKIXValidator.<init>(PKIXValidator.Java:90) ~[?:1.8.0_45-internal]
    at Sun.security.validator.Validator.getInstance(Validator.Java:179) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.Java:312) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.Java:171) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.Java:184) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.Java:124) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.Java:1460) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.Java:212) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.processLoop(Handshaker.Java:979) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.process_record(Handshaker.Java:914) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:1050) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1363) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1391) ~[?:1.8.0_45-internal]
    ... 16 more
Caused by: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.Java:200) ~[?:1.8.0_45-internal]
    at Java.security.cert.PKIXParameters.<init>(PKIXParameters.Java:120) ~[?:1.8.0_45-internal]
    at Java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.Java:104) ~[?:1.8.0_45-internal]
    at Sun.security.validator.PKIXValidator.<init>(PKIXValidator.Java:88) ~[?:1.8.0_45-internal]
    at Sun.security.validator.Validator.getInstance(Validator.Java:179) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.Java:312) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.Java:171) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.Java:184) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.Java:124) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.Java:1460) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.Java:212) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.processLoop(Handshaker.Java:979) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.process_record(Handshaker.Java:914) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:1050) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1363) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1391) ~[?:1.8.0_45-internal]
    ... 16 more
[16:46:40 INFO]: Loaded 2 profile(s); selected 'AsherMaster'
[16:46:40 INFO]: Refreshing auth...
[16:46:40 INFO]: Logging in with access token
[16:46:40 ERROR]: Exception whilst logging into profile
com.mojang.authlib.exceptions.AuthenticationUnavailableException: Cannot contact authentication server
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.Java:71) ~[launcher.jar:1.6.11]
    at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logInWithToken(YggdrasilUserAuthentication.Java:132) ~[launcher.jar:1.6.11]
    at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logIn(YggdrasilUserAuthentication.Java:55) ~[launcher.jar:1.6.11]
    at net.minecraft.launcher.Launcher.ensureLoggedIn(Launcher.Java:214) [launcher.jar:1.6.11]
    at net.minecraft.launcher.Launcher$2.run(Launcher.Java:168) [launcher.jar:1.6.11]
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511) [?:1.8.0_45-internal]
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:266) [?:1.8.0_45-internal]
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142) [?:1.8.0_45-internal]
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617) [?:1.8.0_45-internal]
    at Java.lang.Thread.run(Thread.Java:745) [?:1.8.0_45-internal]
Caused by: javax.net.ssl.SSLException: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Sun.security.ssl.Alerts.getSSLException(Alerts.Java:208) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.Java:1937) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.Java:1894) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.Java:1877) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1398) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1375) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.Java:563) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Java:185) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.Java:1282) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.Java:1257) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.Java:250) ~[?:1.8.0_45-internal]
    at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.Java:73) ~[launcher.jar:1.6.11]
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.Java:54) ~[launcher.jar:1.6.11]
    ... 9 more
Caused by: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Sun.security.validator.PKIXValidator.<init>(PKIXValidator.Java:90) ~[?:1.8.0_45-internal]
    at Sun.security.validator.Validator.getInstance(Validator.Java:179) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.Java:312) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.Java:171) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.Java:184) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.Java:124) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.Java:1460) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.Java:212) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.processLoop(Handshaker.Java:979) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.process_record(Handshaker.Java:914) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:1050) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1363) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1391) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1375) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.Java:563) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Java:185) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.Java:1282) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.Java:1257) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.Java:250) ~[?:1.8.0_45-internal]
    at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.Java:73) ~[launcher.jar:1.6.11]
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.Java:54) ~[launcher.jar:1.6.11]
    ... 9 more
Caused by: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at Java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.Java:200) ~[?:1.8.0_45-internal]
    at Java.security.cert.PKIXParameters.<init>(PKIXParameters.Java:120) ~[?:1.8.0_45-internal]
    at Java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.Java:104) ~[?:1.8.0_45-internal]
    at Sun.security.validator.PKIXValidator.<init>(PKIXValidator.Java:88) ~[?:1.8.0_45-internal]
    at Sun.security.validator.Validator.getInstance(Validator.Java:179) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.Java:312) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.Java:171) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.Java:184) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.Java:124) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.Java:1460) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.Java:212) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.processLoop(Handshaker.Java:979) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.Handshaker.process_record(Handshaker.Java:914) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:1050) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1363) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1391) ~[?:1.8.0_45-internal]
    at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1375) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.Java:563) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Java:185) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.Java:1282) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.Java:1257) ~[?:1.8.0_45-internal]
    at Sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.Java:250) ~[?:1.8.0_45-internal]
    at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.Java:73) ~[launcher.jar:1.6.11]
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.Java:54) ~[launcher.jar:1.6.11]
    ... 9 more
15
ashermaster

Je viens de le résoudre! Voici comment corriger toutes les erreurs SSL dans Minecraft.

  1. Vous avez besoin d'un autre fichier "cacerts" de l'ordinateur Linux, aussi, sur un autre PC Linux, exécutez cette commande:

    readlink -f /usr/bin/Java | sed "s:bin/Java::"
    

    et allez sur ce chemin (quelque chose comme /usr/lib/jvm/Java-8-openjdk-AMD64/jre/).

  2. Ouvrez le dossier "lib", puis ouvrez le dossier "sécurité".
  3. Copiez le fichier "cacerts".
  4. Exécutez à nouveau la commande sur votre ordinateur et accédez à ce chemin:

    readlink -f /usr/bin/Java | sed "s:bin/Java::"
    
    • Si vous rencontrez des problèmes pour éditer des éléments, vous devez ouvrir "Fichiers" à l'aide de Sudo -H nautilus.
  5. Ouvrez "lib" puis "sécurité" à nouveau.
  6. Remplacez le fichier "cacerts" par le fichier de l'autre PC.

Si vous ne trouvez pas le fichier "cacerts" sur un autre PC, recherchez le chemin /etc/ssl/certs/Java/ et vous devriez voir cacerts. Je ne peux pas garantir que cela fonctionne bien.

1
ashermaster

En fait, une meilleure réponse consiste à entrer ce qui suit à l’invite de commande.

Sudo update-ca-certificates -f
34
Todd Carnes

Ouvrez un terminal et lancez cette commande:

Sudo apt-get install --reinstall ca-certificates-Java

Et assurez-vous que le réglage de l'heure de votre système est correct.

Source

Je cite:

Fondamentalement, Minecraft utilise SSL pour protéger votre connexion, mais Java ne disposait pas des certificats nécessaires pour la vérification. Le lanceur Minecraft devrait vraiment donner un meilleur message d’erreur, mais c’était vraiment la faute d’Ubuntu. Le paquetage ca-certificates-Java doit être installé, mais sur mon installation Ubuntu, il était en panne. Essayez de faire ls /etc/ssl/certs/Java/cacerts. S'il manque, vous devez le copier d'un ami ou d'un autre ordinateur Unix. Vous ne voulez pas copier les fichiers de sécurité d’étrangers…

5
A.B.

J'ai finalement trouvé une solution après qu'aucun des autres n'a travaillé pour moi. Au bas de this rapport de bogue, j'ai trouvé cette série magique de commandes:

Sudo dpkg --purge --force-depends ca-certificates-Java

Et alors:

Sudo apt-get install ca-certificates-Java

Cela a instantanément résolu le problème pour moi.

3
Elijah Goforth