Angeben von Trust Store-Informationen in Spring Boot application.properties
Ich bin mit springBootVersion 1.2.0.RELEASE.
Ich bin versucht zu haben, meine keystore-und truststore-konfiguriert durch die Anwendung.Eigenschaften.
Wenn ich fügen Sie die folgenden Einstellungen, kann ich den keystore zu arbeiten, aber nicht den truststore.
server.ssl.key-store=classpath:foo.jks
server.ssl.key-store-password=password
server.ssl.key-password=password
server.ssl.trust-store=classpath:foo.jks
server.ssl.trust-store-password=password
Jedoch, wenn ich die truststore-obwohl
bootRun {
jvmArgs = [ "-Djavax.net.ssl.trustStore=c://foo.jks", "-Djavax.net.ssl.trustStorePassword=password"]
}
funktioniert es Prima.
Hat jemand verwendet die Anwendung.Eigenschaften für den trust-stores?
InformationsquelleAutor der Frage user4408912 | 2014-12-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Falle dass, wenn Sie brauchen, um einen REST-Aufruf können Sie der nächste Weg.
Das funktioniert für ausgehende Anrufe über
RestTemplate
.Erklären
RestTemplate
Bohne wie diese.Wo
http.client.ssl.trust-store
undhttp.client.ssl.trust-store-password
Punkte zu truststore inJKS
format und das Kennwort für den angegebenen truststore.Dies überschreibt die
RestTemplate
bean mit Spring-Boot und machen es mit dem trust store, die Sie benötigen.InformationsquelleAutor der Antwort Oleksandr Shpota
Ich habe das gleiche problem, ich werde versuchen zu erklären, es ein bisschen mehr im detail.
Bin ich mit spring-boot-1.2.2-RELEASE und versuchte es auf Tomcat und Sog mit dem gleichen Ergebnis.
Definition der trust-store-Anwendung.yml wie:
Nicht funktioniert, während:
funktioniert einwandfrei.
Der einfachste Weg, um den Unterschied zu sehen bei rutime ist zum aktivieren von ssl-debug-im-client. Bei der Arbeit (D. H. -D-flags) so etwas wie das folgende in die Konsole geschrieben wird (während der Bearbeitung der ersten Anfrage):
Ohne die -D-flags, den ich bekommen:
...und wenn der Durchführung einer Anfrage, bekomme ich die exception:
Hoffe es hilft zu verstehen, das Thema besser!
InformationsquelleAutor der Antwort Magnus Larsson
Ich hatte das gleiche problem mit Spring Boot, Spring Cloud (microservices) und ein selbst-signiertes SSL-Zertifikat. Keystore funktionierte out of the box von der Anwendung-Eigenschaften und Truststore nicht.
Landete ich halten beide keystore und trustore-Konfiguration in der Anwendung.Eigenschaften und das hinzufügen einer separaten Konfigurations-bean für die Konfiguration der truststore-Eigenschaften mit dem System.
InformationsquelleAutor der Antwort Mate Šimović
War ich auch und habe das gleiche Problem mit Spring Boot-und embedded Tomcat.
Aus, was ich verstehe diese Eigenschaften stellen nur die Tomcat-Konfiguration Parameter. Nach der Tomcat-Dokumentation dies ist nur für die Client-Authentifizierung (D. H. für zwei-Wege-SSL) und nicht die für die überprüfung der remote-Zertifikate:
https://tomcat.apache.org/tomcat-8.0-doc/config/http.html
Zur Konfiguration des trust store für HttpClient es hängt weitgehend von der HttpClient-Implementierung, die Sie verwenden. Zum Beispiel für das RestTemplate von Standard-Spring-Boot verwendet eine SimpleClientHttpRequestFactory basierend auf standard-J2SE-Klassen wie java.net.HttpURLConnection.
Habe ich kommen mit einer Lösung auf Basis des Apache-HttpClient-docs und solche posts:
http://vincentdevillers.blogspot.pt/2013/02/configure-best-spring-resttemplate.html
http://literatejava.com/networks/ignore-ssl-certificate-errors-apache-httpclient-4-4/
Grundsätzlich dies ermöglicht eine RestTemplate bean, die nur vertraut Zertifikate von der root-CA in den konfigurierten truststore.
Und dann Sie können verwenden Sie diese benutzerdefinierten Rest-client, wenn Sie benötigen, z.B.:
Diese nimmt an, dass Ihr Versuch, eine Verbindung zu einem Rest-Endpunkt, aber Sie können auch die oben HttpClient bean für das, was Sie wollen.
InformationsquelleAutor der Antwort jpt
Hier meine extended version von Oleksandr Shpota Antworteinschließlich der Einfuhren. Das Paket
org.apache.http.*
finden Sie inorg.apache.httpcomponents:httpclient
. Ich habe kommentiert die Veränderungen:InformationsquelleAutor der Antwort crusy
java-Eigenschaften "javax.net.ssl.trustStore" und "javax.net.ssl.trustStorePassword", entsprechen nicht der "server.ssl.trust-store" und "server.ssl.trust-store-password" von Spring boot "Anwendung.Eigenschaften" ("Anwendung.yml")
so können Sie nicht von "javax.net.ssl.trustStore" und "javax.net.ssl.trustStorePassword" einfach durch die Einstellung "server.ssl.trust-store" und "server.ssl.trust-store-password" in " - Anwendung.Eigenschaften" ("Anwendung.yml")
alternative der Einstellung "javax.net.ssl.trustStore" und "javax.net.ssl.trustStorePassword", die von Spring boot Externalisiert Konfiguration
unten sind Auszüge meiner Umsetzung :
Params-Klasse enthält die externe Einstellungen
KeyStoreUtil Klasse verpflichtet sich, die Einstellungen von "javax.net.ssl.trustStore" und "javax.net.ssl.trustStorePassword"
erhalten Sie die Set-Methoden ausgeführt, die innerhalb der Start-Funktion
Anwendung.yml
schließlich, innerhalb der Laufenden Umgebung(deployment server), erstellen Sie einen Ordner namens "config" unter dem gleichen Ordner, wo sich das jar-Archiv gespeichert .
in der "config" - Ordner, die Sie speichern " - Anwendung.yml", "client-truststore.jks" und "wso2carbon.jks". fertig!
InformationsquelleAutor der Antwort George Wang
Diese Frage auf Spring-boot - Gitter Seite:
InformationsquelleAutor der Antwort yeralin
Wenn Sie ausführen, Spring-Boot-Anwendung als linux-service (z.B. init.d script oder ähnliches), dann haben Sie die folgende option:
Erstellen Sie eine Datei namens yourApplication.conf und legen Sie es neben Ihrer ausführbaren Datei war/jar-Datei. Der Inhalt sollte etwas sein, das ähnlich:
InformationsquelleAutor der Antwort SaWo
Ich weiß, das ist ziemlich alt, aber wenn jemand auf das, was ich Tat, war fügen Sie eine weitere Eigenschaft, um meine properties-Datei.
Also zuerst Sie erstellen Sie die trust store und legen Sie die Eigenschaften in der properties-Datei. Dann, nach diesefügen Sie
server.ssl.client-auth=need
um zu Kraft Feder nur für die Annahme von Anfragen Durchführung ein Zertifikat akzeptiert, von denen, in Ihren trust store.Diese Methode mein Problem gelöst.
InformationsquelleAutor der Antwort Guy Grin
In einer microservice-Infrastruktur (passt nicht das problem, ich weiß ;)) dürfen Sie nicht verwenden:
Anstelle der ribbon-load-Balancer kann configuered:
Hier https://github.com/rajaramkushwaha/https-zuul-proxy-spring-boot-app finden Sie ein funktionierendes Beispiel. Es gab auch einen github-Diskussion, aber ich fand es nicht mehr.
InformationsquelleAutor der Antwort KLHauser