SSL-client-CERT mit Docker-container?
Ich bin neu in Docker und versuchen, es zu lernen. Ich bin mit Docker Quickstart-Terminal auf Windows 7.
Ich habe eine einfache Anforderung, wo ich bin mit Tomcat in einem Docker-container. Meine DockerFile ist wie folgt:
FROM tomcat:8.0.47-jre7
RUN cd /usr/local/tomcat/webapps
COPY test.war /usr/local/tomcat/webapps/test.war
Dann ich Frage einfach erstellen und ausführen von Befehlen im Andockfenster Konsole.
test.Krieg ist ein Java-web-service. Dieser web-service ruft intern andere web-Dienste auf entfernten hosts über HTTPS.
Ich habe die certs für die remote-hosts.
Ich habe versucht, mehrere Möglichkeiten zur Verfügung, auf dem internet zu importieren oder kopieren Sie die CERT an verschiedenen Orten, wie erwähnt auf verschiedenen Foren/blogs, aber vergeblich. Immer wenn ich mit HTTPS aufrufen, die externe web-service aus testen.Krieg, es gibt mir die SSL-Handshake-Fehler.
Ich habe auch einen Java-keystore. Ich habe Java auch in meiner Docker-Datei und versucht, den keystore, aber wieder vergeblich.
Wenn ich den gleichen test.Krieg auf dem tomcat installiert direkt auf meiner Maschine, es funktioniert absolut in Ordnung.
Kann mir jemand helfen, indem Sie die Schritte zum importieren/verwenden von SSL certs/keystore in diesem Szenario. Auch, wie kann ich den import von mehr als einer certs?
- Welche Schritte haben Sie ausgeführt haben, um den import-certs?
- Von dem, was Sie beschrieben haben, müssen Sie den certs zu truststore (nicht zu verwechseln mit keystore). Es gibt verschiedene Möglichkeiten, abhängig von den Technologien, die Sie verwenden, um einen Anruf zu tätigen. Zum Beispiel, für das Frühjahr starten es könnte sein, wie dieses stackoverflow.com/a/43235569/2065796 können Sie das update auch die jvm innerhalb des Containers mit der trusted-certs, etc. Weitere Informationen, wie Sie einen Anruf tätigen, damit wir in der Lage sein, um Ihnen zu helfen.
- Unabhängigen Kommentar zu deinem problem, aber statt
RUN cd /usr/local/tomcat/webapps
Sie kann/sollte man verwendenWORKDIR /usr/local/tomcat/webapps
zu halten leichte und best-practice-freundlich 🙂 - Ich habe versucht, die folgenden: AUS registry.access.redhat.com/rhel7.1 ENV JAVA_HOME=/usr/lib/jvm/jre KOPIEREN ./certs/My_Root_CA.cer /etc/ssl/certs/ KOPIEREN ./certs/My_Issuing_CA.cer /etc/ssl/certs/ RUN $JAVA_HOME/bin/keytool -storepasswd -neue mysecretpassword -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit ...
- habe auch versucht, die folgenden: HINZUFÜGEN your_ca_root.crt /usr/local/share/ca-certificates/foo.crt-update-ca-certificates Schritte an folgenden Standorten: docs.docker.com/engine/security/https/... docs.docker.com/engine/security/https/#secure-by-default
- Können Sie bitte zeigen Sie mir das hinzufügen von trusted-certs, um die jvm-option...ich mache alle diese Anrufe durch den jeweiligen web-service-urls - sowohl meine web-service sowie die interne web-Dienste, die Sie fordert,...bitte lassen Sie mich wissen, wenn Sie sind auf der Suche nach spezifischen Informationen darüber, wie ich die Aufrufe.
- Ich habe auch die Base64-certs in der Datei /usr/ssl/certs/ca-bundle.crt; ich habe auch versucht: KOPIEREN certs/xyz.cer /usr/ssl/certs/xyz.cer-update-ca-certificates
- Ich habe es als Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, importieren Sie das Zertifikat in den jvm trusted-Shop innerhalb des andockfensters.
Können Sie diese Zertifikate verwenden, aber in der Tat brauchen Sie nicht, brauchen Sie nur das root-Zertifikat der Behörde, die die Zertifikate ausgestellt. Sie können laden Sie es aus dem internet.
In der Regel sind Sie in
pem
- format, aber Sie benötigender
für die jvm.Müssen Sie zuerst konvertieren Sie das Zertifikat:
Installieren Sie dann es in den jvm-keystore:
Dieser Befehl fragt, ob Sie wirklich wollen, um das Zertifikat hinzufügen, Sie sollte geben Sie "ja".
Alle zusammen, könnte es sein, verwandelt sich in eine
Dockerfile
wie diese:Hinweis: wenn Sie bereits über Zertifikat in
der
- format, die Sie nicht brauchenopenssl
rufen, einfach kopieren Sie das Zertifikat direkt.Um zu überprüfen, dass das Zertifikat wirklich ist, angewendet, führen Sie die in container -, ssh hinein
und überprüfen Sie die keystore:
keytool
(genauerCertificateFactory
) in der Lage war, zu Lesen PEM certs seit mindestens j6 im Jahr 2008, obwohl die PEM-mit nebensächlichen text (wie die 'Kommentare' OpenSSL oft versetzt) nicht bis j7 in 2012. Auch FWIW können Sie vermeiden, dieecho yes |
mit-noprompt
Für Java-apps in RHEL/Centos Bilder, die Sie verwenden können,
update-ca-trust
, die aktualisiert Ihre trust-stores für Sie, die von Dateien, die Sie in/etc/pki/ca-trust
. Es akzeptiert auch.pem
- Dateien direkt:Aktualisieren
/etc/pki/java/cacerts
für Sie automatisch, so dass Java-trust das neue Zertifikat.Oder, wenn Ihr Zertifikat auf einem Webserver gehostet wird, dann können Sie
curl
um es herunterzuladen, anstatt Sie zu kopieren die Datei - zum Beispiel:classpath:/some/location/cerkey.jks
im Falle von Docker Ort finden Sie die docker-Instanz.file:/some/location/cerkey.jks
im Falle des Gastgeber-Ortes, wo sich die docker läuft.Hinweis: der Wert von server.ssl.- Taste-speichern