1. ホーム
  2. java

[解決済み] java.security.InvalidAlgorithmParameterException: Linuxでは、trustAnchorsパラメータは空であってはなりません。

2023-06-16 22:50:52

質問

この例外をググると java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty でググると、複数の結果が表示されます。しかし、決定的な解決策はなく、推測にすぎません。

問題は、(少なくとも私の場合)SSL 上の接続を開こうとするときに発生します。私の Windows マシンでは正常に動作しますが、(sun の jre がインストールされた)linux マシンにそれを展開すると、上記の例外で失敗します。

問題は、JRE のデフォルトのトラストストアが何らかの理由で空であることです (Windows では 80kb であるのに対し、サイズはわずか 32 バイトです)。

をコピーしたとき jre/lib/security/cacerts ファイルをウィンドウズからリナックスにコピーしたところ、うまくいきました。

問題は、なぜ Linux の jre が空のトラストストアを持つのか、ということです。

これはAmazon EC2インスタンスで、AMI linuxで起こるので、いくつかのamazonのポリシーが原因かもしれないことに注意してください(javaはプリインストールされていると思いますが、確かではありません)。

解決方法は?

Linux用の標準的なSun JDKは、cacertsと指定されたディレクトリ内のすべてのファイル全体が絶対に大丈夫です。問題は、使用するインストールです。