質問: 下記環境で、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 ```
回答: バグのようですね。 私の環境では、以下のようにすれば解決できました。 不安なら実行する前に`cacerts`をバックアップしておいたほうがいいかもしれません。 ``` sudo rm /etc/ssl/certs/java/cacerts sudo update-ca-certificates -f ```