In Ubuntu 18.04 hat dieser Fehler eine andere Ursache (JEP 229, Wechseln vom jks
Keystore-Standardformat zum pkcs12
Format und Generieren der Debian-Cacerts-Datei unter Verwendung der Standardeinstellung für neue Dateien) und Problemumgehung :
# Ubuntu 18.04 and various Docker images such as openjdk:9-jdk throw exceptions when
# Java applications use SSL and HTTPS, because Java 9 changed a file format, if you
# create that file from scratch, like Debian / Ubuntu do.
#
# Before applying, run your application with the Java command line parameter
# java -Djavax.net.ssl.trustStorePassword=changeit ...
# to verify that this workaround is relevant to your particular issue.
#
# The parameter by itself can be used as a workaround, as well.
# 0. First make yourself root with 'sudo bash'.
# 1. Save an empty JKS file with the default 'changeit' password for Java cacerts.
# Use 'printf' instead of 'echo' for Dockerfile RUN compatibility.
/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts
# 2. Re-add all the CA certs into the previously empty file.
/var/lib/dpkg/info/ca-certificates-java.postinst configure
Status (2018-08-07) , der Fehler wurde in Ubuntu Bionic LTS 18.04.1 und Ubuntu Cosmic 18.10 behoben.
🗹 Ubuntu 1770553: [SRU] backport ca-certificates-java von cosmic (20180413ubuntu1)
🗹 Ubuntu 1769013: Bitte führen Sie ca-certificates-java 20180413 (main) von Debian unstable (main) zusammen.
🗹 Ubuntu 1739631: Bei einer Neuinstallation mit JDK 9 kann die generierte PKCS12-Cacerts-Keystore-Datei nicht verwendet werden
🗹 Docker-Bibliothek 145: 9-JDK-Image weist SSL-Probleme auf
🗹 Debian 894979: ca-certificates-java: funktioniert nicht mit OpenJDK 9, Anwendungen schlagen mit InvalidAlgorithmParameterException fehl: Der Parameter trustAnchors darf nicht leer sein
🗹 JDK-8044445: JEP 229: Standardmäßig PKCS12-Schlüsselspeicher erstellen
🖺 JEP 229: Standardmäßig PKCS12-Keystores erstellen
Wenn das Problem nach dieser Problemumgehung weiterhin besteht, möchten Sie möglicherweise sicherstellen, dass Sie die gerade reparierte Java-Distribution tatsächlich ausführen.
$ which java
/usr/bin/java
Sie können die Java-Alternativen auf 'auto' setzen mit:
$ sudo update-java-alternatives -a
update-alternatives: error: no alternatives for mozilla-javaplugin.so
Sie können die von Ihnen ausgeführte Java-Version überprüfen:
$ java --version
openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)
Es gibt auch alternative Problemumgehungen, aber diese haben ihre eigenen Nebenwirkungen, die eine zusätzliche zukünftige Wartung erfordern, ohne dass sich dies auszahlt.
Die nächstbeste Problemumgehung besteht darin, die Zeile hinzuzufügen
javax.net.ssl.trustStorePassword=changeit
zu den Dateien
/etc/java-9-openjdk/management/management.properties
/etc/java-11-openjdk/management/management.properties
was auch immer existiert.
Die drittniedrigste problematische Problemumgehung besteht darin, den Wert von zu ändern
keystore.type=pkcs12
zu
keystore.type=jks
in den Dateien
/etc/java-9-openjdk/security/java.security
/etc/java-11-openjdk/security/java.security
Entfernen Sie die cacerts
Datei und generieren Sie sie auf die in der letzten Zeile des Workaround-Skripts oben im Beitrag beschriebene Weise neu.