内部認証局をJavaのCAキーストアにインポートしました。 (keytoolを使用して「cacerts」ストアにインポートします)Java RPMを更新するまで、これは問題なく機能します。この時点で、インポートされたすべての証明書は新しいインストールに引き継がれません。 。したがって、SSL接続を確立しようとすると、アプリケーションが攻撃されます。
Javaアップグレードを通じてこれらの証明書を永続化する方法はありますか?またはアップグレードトリガーでインポートコマンドを再実行する簡単な方法はありますか?これらのコマンドをアップグレードプロセスにスクリプト化することはできますが、私はよりエレガントな解決策があることを願っています。
参考までに、これはRHEL 5.10と同等です(技術的にはOracle Linux)。公式リポジトリでJava-1.7.0-openjdkを使用していて、U65にアップグレードしました。
Java installation-directoryの外にサイト固有またはホスト固有のキーストア/トラストストアを保持し、代わりに信頼を消費する必要がある場合はそれを指すようにすると便利です。)トラストストアは/ opt/site/cacerts.JKSにあり、次の2つの方法のいずれかを使用します。
Javaコードに、次のような行を追加します:System.setProperty("javax.net.ssl.trustStore","/opt/site/cacerts.JKS");
実行時に、起動スクリプトに定義を追加します:Java -D'javax.net.ssl.trustStore'="/opt/site/cacerts.JKS" /opt/site/myClass.class
私が行う方法(おそらく最善ではないでしょうか?):アップグレードの前にcacertsを保存し、後で復元します。更新スクリプトで次のようにスクリプト化しました。
1)保存:
javaexe=`readlink -f /usr/bin/Java`
jredir=`dirname $javaexe`
cacertsfile=${jredir}/../lib/security/cacerts
[ -f $cacertsfile ] && cp -p $cacertsfile /tmp/cacerts
2)アップデートをインストールします(yumアップデートまたはその他の方法)。
3)復元:
[ -f /tmp/cacerts ] && cp -p /tmp/cacerts $cacertsfile