web-dev-qa-db-ja.com

Javaアプリケーションのキーストア/トラストストアのデフォルトの場所はどれですか?

SSLを使用するアプリケーションを作成しています。したがって、顧客に提供するダミーのキーストアとダミーのトラストストアがあります。ディストリビューション内に配置するデフォルトのフォルダーはありますか?例えばdocs、lib、bin ...など通常、キーストアはサーバーのどこに置かれ、トラストストアは通常クライアントのどこに置かれますか?

ありがとう

40
yura

Javaでは、 JSSE Reference Guide によると、keystoreのデフォルトはありません。truststoreのデフォルトは "jssecacerts(存在する場合)。そうでない場合、cacerts "。

いくつかのアプリケーションでは~/.keystoreをデフォルトのキーストアとして使用しますが、これは問題がないわけではありません(主に、ユーザーが実行するすべてのアプリケーションがそのトラストストアを使用したくない場合があるため)。

代わりに、アプリケーションにバンドルするアプリケーション固有の値を使用することをお勧めします。これは一般的に適用される傾向があります。

33
Bruno

ブルーノが言ったように、自分で設定したほうがいい。ここに私がそれをする方法があります。プロパティファイル(/etc/myapp/config.properties)を作成することから始めます。

javax.net.ssl.keyStore = /etc/myapp/keyStore
javax.net.ssl.keyStorePassword = 123456

次に、コードから環境にプロパティをロードします。これにより、アプリケーションが構成可能になります。

FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties");
Properties p = new Properties(System.getProperties());
p.load(propFile);
System.setProperties(p);
14
Kristian Benoit