Hinzufügen eines ausländischen server selbst signiertes Zertifikat zu den vertrauenswürdigen Zertifikaten von meinem Tomcat
Mein Tomcat verbinden muss anderen web-server (bei https://foreign.example.com) mit SSL (TLS).
foreign.example.com hat ein selbst-signiertes Zertifikat, dem ich vertraue. Natürlich, mein Tomcat nicht standardmäßig - also ich muss es sagen. Ein Weg dies zu tun ist:
$JRE/bin/keytool -import -alias my -file ssl-cert-myselfsigned.cer -keystore
$JRE/lib/security/cacerts
Dies funktioniert: Mein Tomcat ermöglicht die SSL-Verbindung.
Aber ich nicht, wie zu tun es auf diese Weise: Es importiert das Zertifikat in den vertrauenswürdigen Schlüssel von meiner Java-installation. Ich will nicht sagen: "Jede Anwendung, die läuft Java auf meinem Rechner sollten darauf Vertrauen, dass Zertifikat". Nur Tomcat (oder der Benutzer, der Tomcat läuft) sollte ihm Vertrauen.
So, ich habe versucht Sie zu importieren in das tomcat-Benutzer-keystore zu ~/.keystore
und einrichten des Tomcat <Connector>
mit diesen Parametern:
keystoreFile="${user.home}/.keystore"
keystorePass="thePassphraseICreatedTheKeystoreWith"
Jedoch, dass überhaupt nicht funktioniert (ich glaube, das ist nur für das server-Zertifikat von meinem Kater, nicht für die server-Zertifikate von ausländischen Servern, richtig?)
Habe ich versucht, das gleiche mit den truststoreFile
/truststorePass
Attribute, aber Sie hat nicht funktioniert. (Die Attribute sind dokumentiert bei http://tomcat.apache.org/tomcat-6.0-doc/config/http.html)
Gibt es eine Möglichkeit zum einrichten der Tomcat mit dem fremden server die server-cert, oder vielleicht fügen Sie einige Kommandozeilen-Parameter, um java
was macht mein keystore (und keystore passphrase) zur Verfügung, um die JVM-Instanz?
- Können Sie näher erläutern, was funktioniert nicht, wenn Sie eine Kopie von "$JRE/lib/security/cacerts", importieren Sie Ihre spezifischen cert in es und verwenden Sie die truststoreFile/truststorePass Attribute? Es sollte funktionieren. (Und ja, der "keystore keystore" für Ihre Anmeldeinformationen, nicht so, wie du Vertrauen remote-Zertifikate.)
- Ah, Blick in die (sehr umfangreiche) logs sehe ich, dass ich bin immer
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must not be empty
- was bedeutet, dass es nicht das finden die truststore-Datei... ich Frage mich, ob vielleicht${user.home}
nicht an diesem Ort arbeiten? - Tut mir Leid, ich sollte haben erkannt, dass dies früher, aber die
truststore
Parameter nur diktieren das Verhalten des connectors (d.h. für den client-certs). Wenn Sie sagen, "Mein Tomcat benötigt, um eine Verbindung zu einem anderen web-server", ich denke mal, deine webapp ist der client, nicht der Behälter (und definitiv nicht der Stecker). Das Vertrauen config ändern sich, je nachdem die client-lib. Die Standard -SSLContext
(die es wahrscheinlich zu verwenden, wenn nichts anderes angegeben ist) konfiguriert ist, über diejavax.net.ssl.trustStore
system-Eigenschaft. Wenn Sie wollen, dass eine lokale Konfiguration, die wir brauchen, um zu wissen, welche client-Bibliothek, die Sie verwenden. - Vielen Dank! Dieser geklärt - der trustStore kann nicht konfiguriert werden, in den Stecker. Mit dem Kommandozeilen-Parameter - zusammen mit Ihrer Methode der cacerts kopieren und fügen Sie den Schlüssel, es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
JBoss (basierend auf Tomcat) ausgeführt werden können mit dem folgenden cmd-Argumente. Die cacerts-Datei (oder wie auch immer Sie möchten, es zu benennen) enthalten muss, das cert des Endpunktes.
-Djavax.net.ssl.trustStore=C:\Anwendungen\jboss-as\server\default\conf\cacerts
-Djavax.net.ssl.trustStorePassword=changeit
Deshalb sollten auch diese arbeiten für Tomcat.
ps ax
(auf einem Unix-system).)keytool
(zumindest standardmäßig) nicht zulässt, um einen Schlüsselspeicher zu erstellen, ohne ein Passwort. In der Tat, es erfordert, dass es mindestens 6 chars lang. Ich bin mir nicht sicher: Vielleicht gibt es einen Weg, Sie zu überzeugen, die es sonst?Ein alternativer Ansatz ist, um es in den SSL-connector im tomcat in tomcat server.xml Datei. Insbesondere müssen Sie die truststoreFile Eigenschaften zu aktivieren, Vertrauen in Zertifikate von anderen Servern.