2つまたは3つのアプリケーションを実行するシステムにJavaの単一インストールがあります。
すべてのアプリケーションが同じランタイムを使用します。
Java_home/jre/lib/securityにあるものとは異なるCA証明書に異なるキーストアを指定する方法はありますか?つまり、読み込まれ、Java_home/jre/lib/security/cacertsから読み込まれた証明書に追加される「追加の」キーストアを指定するオプションはありますか?
回避したいのは、ボックス内のjdkをアップグレードするたびにローカルcaを再インポートする必要があることです。
トラストストアを指定したいと思います。
Java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ...
または、JSSEを介して証明書を使用している場合(おそらくそうです)、トラストストアを$Java_HOME/jre/lib/security/
ディレクトリのjssecacerts
にコピーできます(ただし、JDKがインストールされるたびに行う必要があります) /再インストール)。 SunのJSSEは、$Java_HOME/jre/lib/security/jssecacerts
の前に$Java_HOME/jre/lib/security/cacerts
を検索します。
http://Java.Sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#X509TrustManager を参照してください
これらの両方のjvmオプションは、カスタムトラストストアとそのパスワードを見つけるために使用されます。
Java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit
アプリケーションによって読み込まれるtrustStoreを確認するには、次の引数も追加します。
-Djavax.net.debug=ssl:handshake
JVMに複数のアプリケーションが含まれている場合、デフォルトでは、すべてのアプリケーションが$ Java_HOME/jre/lib/security/locationにあるデフォルトのcacertsストアを使用します。ただし、アプリケーションで別の証明書ストアを使用する必要がある場合は、カスタム証明書ストアを定義して、それを指す必要があります。このようにして、独自の証明書ストアを作成できます。 System.setProperty( "javax.net.ssl.trustStore"、 "C:/ certStore/cusomtcacerts");-http/httpsセッションを作成する前にこの行を使用します。 keytoolを使用して、証明書をcusomtcacertsにインポートすることもできます。