JavaでSSL通信が出来ない(UbuntuにおけるJavaのcacertsファイルの扱いについて質問)
下記環境で、SSL通信が出来ない現象に悩んでいます。
OS: Ubuntu 18.04
Java 1.8.0_162, 10.0.1等
エラーの内容
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
冒頭の"SSL通信が出来ない"というのは少し語弊があり、
システムプロパティに下記の設定を入れることで意図したとおりの通信ができることは確認しています。
-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts
-Djavax.net.ssl.trustStorePassword=changeit
・ このJavaは手動インストールではなくaptでインストールしたものです。
・ cacerts
の場所は特段変えていないのと、パスワードはもともとかかっているもののため、
調べましたが何が問題なのか見当がつきません。
・ ca-certificates-java
の再インストールも試しましたが、問題は解決しません。
・ keytool -list -keystore /etc/ssl/certs/java/cacerts
を確認したところ証明書は問題なく入っているようです(ただしパスワードにchangeitを入れたときのみ)
質問:
Ubuntuでは、Javaを利用する場合は一々システムプロパティを設定する必要があるのか(要はこの現象は仕様で、こういうものなのか)、設定せずとも利用できるようにする方法があるならばどうしたら良いのかを教えていただきたいです。
よろしくお願いします。
追記:
下記を試しましたが、解決しませんでした。
sudo apt-get install ca-certificates-java
sudo update-ca-certificates -f