2010-06-29 12 views
8

Java ve Tomcat'ta güvenlik ile oynuyordum ve sonunda hangi anahtar deposunun/güven deposunun JVM tarafından yüklendiğini merak ettiğim noktaya geldim. Kendi anahtar depomuzun oluşturulmasına ve Tomcat konfigürasyonuna sahip olmama rağmen, bu hem anahtar deposu hem de trustore olarak kullanıldı, gerçekteyse, varsayılan cacerts dosyası truststore olarak yüklenmişti (anahtar deposu olarak, dosyam düzgün bir şekilde kullanıldı).JVM'nin varsayılan olarak yüklediği anahtar deposu örneğini alın

JVM'nin yüklediği dosyanın adını almaya çalışıyordum, ancak çözümü bulamadım. Benim fikrim System.getProperty ("javax.net.ssl.keyStore") almaktı ama bu bana null verdi. Bunu hem Tomcat'in server.xml'i Bağlayıcı üzerinden hem de bir komut satırı parametresi olan -Djavax.net.ssl.keyStore = "file" olarak ayarlamaya çalıştım. JMX paramnetlerini aynı yerde ayarlarken komut satırı parametresinin doğru bir şekilde verildiğinden eminim.

br, Martin

+0

Varsayılan bir KeyStore yok. Varsayılan bir güvenilir mağaza var, ancak adı mevcut değil. – EJP

cevap

1

Tomcat 6'da mısın?

Ben

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

olarak catalina.bat bu ayarı denedim ve sizin bilgi için,

Ayrıca System.getProperty("javax.net.ssl.keyStore") olarak kullanılan benim kodda yansıtan bir Bugzilla on diğer SSL göz ardı ediliyor niteliklerini oldu 6.0.16'da düzeltildi. keyStore özellikle orada belirtilmemiş, ancak benim sürümüm 6.0.20 ve

+0

Denediğim sürüm 6.0.26 idi. Parametreleri ayarladığım yol, JAVA_OPTS değerini setenv olarak ayarlamaktır (sh | bat). – Martin

4

Çalışıyorsa, dosya türünden tam olarak istediğinizi tam olarak elde edemezsiniz ve konektörde keystore ayarını yapamazsınız sistem özelliği üzerinde kesinlikle bir etkisi yoktur. Ayrıca, anahtar deposu, javax.net.ssl.keyStore özelliğinden belirtilmiş veya açık olarak oluşturulmuş olsun, KeyManager ve SSLContext'un kurulumunun yalnızca bir parçasıdır. (Varsayılan olarak, Apache Tomcat dosyaları ve nispeten basit bir yükleme mekanizması kullanacaktır, ancak Tomcat'in SSLImplementation'u kullanarak bunu özelleştirmek da mümkündür.) Yüklenmekte olan şeyi görmek istiyorsanız, JSSE debugging flags, özellikle böyle:

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

DÜZENLEME: genellikle (Tomcat bağlamında dışında) konuşan varsayılan anahtar deposu, yalnızca bir varsayılan truststore olduğunu eklemek gerekir. Tomcat'in JSSEImplementation, varsayılan olarak System.getProperty("user.home") + "/.keystore" kullanır.

+0

Tomcat'ta kafa karıştırıcı olabilecek bir şey, anahtar deposu dosyasının 'keystore' özniteliği kullanılarak yapılandırılmasıdır, buna karşın truststore dosyası' truststoreFile' özniteliği kullanılarak yapılandırılır. – Bruno

+0

Körüklü listeleme yapılandırmam vardı, ancak güvenilir sertifikalar JRE/lib/security'daki cacerts'ten yüklendi. keystoreFile = "conf/keystore.jks" truststoreFile = "conf/keystore.jks" – Martin

+0

'keystoreFile =' yerine ('truststoreFile' yerine) 'keystore =' kullanmayı deneyin. – Bruno

İlgili konular