web-dev-qa-db-ja.com

Java_home / jre / lib / securityフォルダーで指定されたものとは異なるcacertsをロードする方法はありますか?

2つまたは3つのアプリケーションを実行するシステムにJavaの単一インストールがあります。

すべてのアプリケーションが同じランタイムを使用します。

Java_home/jre/lib/securityにあるものとは異なるCA証明書に異なるキーストアを指定する方法はありますか?つまり、読み込まれ、Java_home/jre/lib/security/cacertsから読み込まれた証明書に追加される「追加の」キーストアを指定するオプションはありますか?

回避したいのは、ボックス内のjdkをアップグレードするたびにローカルcaを再インポートする必要があることです。

31
feniix

トラストストアを指定したいと思います。

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 を参照してください

56
CoverosGene

これらの両方のjvmオプションは、カスタムトラストストアとそのパスワードを見つけるために使用されます。

Java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit

アプリケーションによって読み込まれるtrustStoreを確認するには、次の引数も追加します。

-Djavax.net.debug=ssl:handshake
7
rogue lad

JVMに複数のアプリケーションが含まれている場合、デフォルトでは、すべてのアプリケーションが$ Java_HOME/jre/lib/security/locationにあるデフォルトのcacertsストアを使用します。ただし、アプリケーションで別の証明書ストアを使用する必要がある場合は、カスタム証明書ストアを定義して、それを指す必要があります。このようにして、独自の証明書ストアを作成できます。 System.setProperty( "javax.net.ssl.trustStore"、 "C:/ certStore/cusomtcacerts");-http/httpsセッションを作成する前にこの行を使用します。 keytoolを使用して、証明書をcusomtcacertsにインポートすることもできます。

0
JitenS