Ich versuche, eine Anwendung auf Tomcat 6 zu erhalten, um eine Verbindung zu einem LDAP-Server über SSL herzustellen.Importiertes Zertifikat in Java-Keystore, JVM ignoriert das neue Zertifikat
Ich importierte Zertifikat des Servers mit bis zu Keys:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
Wenn ich Tomcat starten mit SSL-Debugging eingeschaltet wird, nach Protokollen Tomcat die richtige Zertifikat-Datei verwendet:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
jedoch , Tomcat fügt das gerade importierte Zertifikat nicht hinzu - alle anderen Zertifikate in der Datei cacerts werden in das Protokoll gedruckt - und die Verbindung schlägt fehl:
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Neustart von Tomcat hilft nicht. Ich habe mit keytool -list-Befehl verifiziert, dass das neue Zertifikat tatsächlich in der Datei vorhanden ist.
Warum Tomcat ignoriert mein neues cert?
EDIT:
Es scheint, dass das Problem von Windows 7 Virtuals verursacht wurde. Keytool erstellte eine neue Kopie der cacert-Datei, und Tomcat verwendete die ursprüngliche Datei.
Enthält die Datei 'mycert' die gesamte Zertifikatskette? Java möchte, dass der gesamte Vertrauensweg im Speicher ist. – Romain
Nur ein einfacher Vorschlag, gehen Sie zu Ihrem 'C: \ Users \ YourAccountName', ein Dateiname' .keystore' wird dort sein, öffnen Sie es und entfernen Sie Ihre vorherige, und dann machen Sie, was Sie wieder getan haben.Hoffentlich wird das die Dinge für Sie regeln :-) –
@Romain Nein, ein vertrauenswürdiges Zertifikat hat nichts mit der Kette zu tun. Jedes Zertifikat, das als vertrauenswürdiges Zertifikat importiert wird, wird wie ein vertrauenswürdiges Stammzertifikat behandelt. – emboss