2010-06-29 1 views
8

Ich spielte mit Sicherheit in Java und Tomcat und ich kam zu dem Punkt, wo ich neugierig war, welcher Keystore/Truststore von der JVM am Ende geladen wurde. Obwohl ich meinen eigenen Keystore erstellt hatte und in der Tomcat-Konfiguration sowohl als Keystore als auch als Trustore verwendet wurde, war die Standard-cacerts-Datei als Truststore geladen (als Keystore wurde meine Datei korrekt verwendet).Get Instanz von Keystore, die JVM standardmäßig lädt

Ich habe versucht, den Namen der Datei zu erhalten, die JVM lädt, aber ich habe die Lösung nicht gefunden. Meine Idee war, System.getProperty ("javax.net.ssl.keyStore") zu bekommen, aber das gab mir null. Ich habe versucht, dies sowohl in Tomcat's server.xml via Connector als auch als Kommandozeilenparameter -Djavax.net.ssl.keyStore = "file" einzustellen. Ich bin sicher, dass der Befehlszeilenparameter korrekt angegeben wurde, da ich JMX-Parameter an der gleichen Stelle setze.

br, Martin

+0

Es gibt keinen standardmäßigen KeyStore. Es gibt einen Standard-Truststore, dessen Name jedoch nicht verfügbar ist. – EJP

Antwort

1

Sind Sie auf Tomcat 6?

Ich habe versucht Einstellung dies in catalina.bat als

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -Djavax.net.ssl.keyStore="path-to-file" 

und es spiegelt sich in meinem Code verwendet als System.getProperty("javax.net.ssl.keyStore")

Auch für Ihre Info, es gab eine Bugzilla on andere SSL-Attribute ignoriert was in 6.0.16 behoben wurde. Keystor sind nicht besonders erwähnt werden, aber meine Version ist 6.0.20 und es funktioniert

+0

Die Version, die ich ausprobiert habe, war 6.0.26. Die Art und Weise, wie ich die Parameter einstelle, besteht darin, JAVA_OPTS in setenv. (Sh | bat) zu setzen. – Martin

4

Sie unbedingt nicht in der Lage sein, genau zu bekommen, was Sie aus dem Dateinamen wollen selbst die Art und die keystore im Anschluss Einstellung haben absolut keinen Einfluss auf die Systemeigenschaft.

Darüber hinaus ist die Schlüsselspeicher, ob aus der javax.net.ssl.keyStore Eigenschaft angegeben oder explizit instanziiert sind nur ein Teil der Einrichtung der KeyManager und die SSLContext. (Standardmäßig verwendet Apache Tomcat Dateien und einen relativ einfachen Lademechanismus, aber es ist auch möglich, dies mit Tomcat SSLImplementation anzupassen.) Wenn Sie wirklich sehen wollen, was geladen wird, würde ich auf die JSSE debugging flags, genauer gesagt, etwas suchen wie folgt aus:

-Djavax.net.debug=SSL,keymanager,trustmanager 

EDIT: ich sollte hinzufügen, dass es in der Regel keine Standardschlüsselspeicher zu sprechen ist (außerhalb des Kontextes von Tomcat), nur ein Standard-Vertrauens. Tomcat's JSSEImplementation verwendet System.getProperty("user.home") + "/.keystore" standardmäßig.

+0

Eine Sache, die in Tomcat verwirrend sein kann, ist, dass die Keystore-Datei mit dem Attribut 'keystore' konfiguriert wird, während die Truststore-Datei mit dem Attribut' truststoreFile' konfiguriert wird. – Bruno

+0

Ich hatte die unten aufgelistete Konfiguration, aber vertrauenswürdige Zertifikate wurden von cacerts in JRE/lib/security geladen. keystoreFile = "conf/keystore.jks" truststoreFile = "conf/keystore.jks" – Martin

+0

Versuchen Sie, 'keystore =' anstelle von 'keystoreFile =' zu verwenden (aber 'truststoreFile'). – Bruno

Verwandte Themen