Ubuntu 18.04、このエラーは別の原因(JEP 229からスイッチがあるjks
のキーストアのデフォルトフォーマットpkcs12
形式、およびDebianは新しいファイルのデフォルトを使用してファイル生成をCACERTS)と回避策を:
# 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
ステータス(2018-08-07)、Ubuntu Bionic LTS 18.04.1およびUbuntu Cosmic 18.10でバグが修正されました。
🗹 1770553:[SRU] cosmicからca-certificates-javaをバックポートする(20180413ubuntu1)
🗹Ubuntu 1769013:Debian不安定版(メイン)のca-certificates-java 20180413(メイン)をマージしてください
🗹 1739631:JDK 9でのフレッシュインストールは、生成されたPKCS12 cacertsキーストアファイルを使用できません
🗹 -library 145:9-jdkイメージにSSLの問題がある
🗹 894979:ca-certificates-java:OpenJDK 9では機能しません。アプリケーションはInvalidAlgorithmParameterExceptionで失敗します:trustAnchorsパラメーターは空でない必要があります
🗹 -8044445:JEP 229:デフォルトでPKCS12キーストアを作成
🖺JEP 229:デフォルトでPKCS12キーストアを作成する
この回避策を実行しても問題が解決しない場合は、修正したJavaディストリビューションを実際に実行していることを確認してください。
$ which java
/usr/bin/java
次のコマンドを使用すると、Javaの代替を「自動」に設定できます。
$ sudo update-java-alternatives -a
update-alternatives: error: no alternatives for mozilla-javaplugin.so
実行しているJavaのバージョンを再確認できます。
$ 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)
代替の回避策もありますが、これらには独自の副作用があり、将来のメンテナンスが必要になります。
次善の策は行を追加することです
javax.net.ssl.trustStorePassword=changeit
ファイルへ
/etc/java-9-openjdk/management/management.properties
/etc/java-11-openjdk/management/management.properties
どちらか存在します。
3番目に問題の少ない回避策は、値を変更することです
keystore.type=pkcs12
に
keystore.type=jks
ファイル内
/etc/java-9-openjdk/security/java.security
/etc/java-11-openjdk/security/java.security
どちらかが存在する場合、cacerts
ファイルを削除し、投稿の上部にある回避策スクリプトの最後の行で説明されている方法でファイルを再生成します。