2010-11-04 7 views
33

Ich schreibe eine Anwendung, die SSL verwendet. Daher habe ich einen Keystore und einen Dummy-Truststore, die ich meinem Kunden liefern möchte. Gibt es einen Standardordner, um sie in meine Distribution zu legen? z.B. docs, lib, bin ... usw. Wo wird normalerweise der Keystore auf den Server gelegt und wo wird normalerweise Truststore auf den Client gelegt?Welches ist der Standardspeicherort für Keystore/Truststore von Java-Anwendungen?

Dank

Antwort

28

In Java nach dem JSSE Reference Guide, gibt es keinen Standard für die keystore, die Standardeinstellung für die truststore ist "jssecacerts, wenn es vorhanden ist. Andernfalls cacerts".

Einige Anwendungen verwenden ~/.keystore als Standardschlüsselspeicher, aber das ist nicht ohne Probleme (hauptsächlich, weil Sie nicht möchten, dass die gesamte Anwendung vom Benutzer diesen Vertrauensspeicher verwendet).

Ich würde vorschlagen, die Verwendung von anwendungsspezifischen Werten, die Sie mit Ihrer Anwendung bündeln, stattdessen würde es im Allgemeinen eher anwendbar sein.

+1

Keystore und Truststore sind allgemeine PKI-Terminologie und nicht spezifisch für Java. – user93353

+0

@ user93353, variiert je nach Implementierung. PKI spricht auf verschiedene Weise über Vertrauen, aber das kann "Trust Store", "Vertrauensanker" oder einfach "vertrauenswürdige Zertifikate" sein. Unter Windows/schannel erhalten Sie auch den Speicher "Vertrauenswürdige Stammzertifizierungsstellen" und so weiter. AFAIK, es gibt keine einheitliche Terminologie. – Bruno

+20

Genauer gesagt sind die Standardspeicherorte /lib/security/jssecacerts und /lib/security/cacerts und Sie überschreiben es mit der Systemeigenschaft javax.net.ssl.trustStore. – Eric

14

Wie bruno sagte, du konfigurierst es besser selbst. Hier ist, wie ich es mache. Beginnen Sie mit dem Erstellen einer Eigenschaftendatei (/etc/myapp/config.properties).

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

Dann laden Sie die Eigenschaften aus Ihrem Code in Ihre Umgebung. Dies macht Ihre Anwendung konfigurierbar.

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

HI Kristian Benoit - Ihre Antwort scheint logisch zu sein - können Sie bitte Ihre Antwortdetails ausarbeiten - oder verweisen Sie einen Blog-Link ... für komplettes Tutorial. Sry Ich bin ein wenig neu in Keystore, würde mich über Ihre Bemühungen freuen –

Verwandte Themen