Umsetzung von 2-Wege-SSL-mit spring boot
Ich bin momentan dabei, einige restful-web-services und bin mit Spring-Boot zum erstellen eines eingebetteten tomcat-container.
Einer der Anforderungen ist, dass diese realisiert 2-Wege-SSL. Ich habe auf der Suche im HttpSecurity Objekt und können es nur die webservices über einen SSL-Kanal mit diesem:-
@Override
protected void configure(HttpSecurity http) throws Exception {
System.out.println("CONFIGURED");
http
//...
.requiresChannel()
.anyRequest().requiresSecure();
}
Was ich kann nicht scheinen zu finden ein Weg, um die webservice-Zugang nur für Anwendungen, die eine gültige client-cert.
Ich habe nur grundlegende Kenntnisse von SSL so auch in einen Allgemeinen Zeiger in die richtige Richtung wäre zu schätzen.
Server bereitgestellt wird, wird auf einen mix von Anwendungen - dies ist der einzige, der muss gesperrt werden mit 2-Wege-SSL. Was ich wirklich Suche, ist eine Möglichkeit, die Sperrung einer einzelnen Anwendung nur Clientzertifikate akzeptieren.
- Danke für die Antwort. Der link scheint zu sein, für die komplette Sperrung des tomcat 7 jedoch server bereitgestellt werden, die auf eine gemeinsame Ressource ist, so wird eine Mischung von gesicherten und ungesicherten Gegenstände auf Sie. Was ich wirklich Suche, ist eine Möglichkeit, durch das sperren einer einzigen web-Anwendung mit Spring Security und client-certs.
- Also vielleicht der eingebettete tomcat-container von Spring Boot, die ich brauche, zu schauen, mehr.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie konfigurieren
clientAuth=want
finden Sie Apache Tomcat 8 Konfiguration Und Referenz:und dann Lesen Sie das client-Zertifikat mit Spring Security - X. 509-Authentifizierung:
und
Stieß ich auf ein ähnliches problem, und dachte, ich würde teilen die Lösung, die ich kam mit.
Zuerst müssen Sie verstehen, dass das SSL-Zertifikat wird für die Authentifizierung behandelt werden, die auf Ihren web-server die Seite (cfr. dur die Erklärung, mit der "clientAuth=wollen" - Einstellung).
Dann, Ihre web-app muss konfiguriert werden, um die bereitgestellten (und zulässig) Zertifikat anzeigen an einen Benutzer usw.
Dem leichten Unterschied, den ich mit Euch habe, ist, dass ich die Verpackung meiner spring-boot-Anwendung in ein KRIEGS-Archiv, das ist dann bereitgestellt, die auf einem vorhandenen Tomcat application server.
Mein Tomcat server.xml Konfigurations-Datei definiert, eine HTTPS-connector wie folgt:
Kleine Anmerkung um Verwirrung zu vermeiden: Attribute keystoreFile enthält das Zertifikat/private key pair verwendet für SSL (nur), während truststoreFile enthält die erlaubten CA-Zertifikate für SSL-client-Authentifizierung (Hinweis: Sie können auch fügen Sie die client Zertifikate direkt in das trust-store).
Wenn Sie über einen embedded tomcat-container mit spring-boot-Anwendung, sollten Sie in der Lage sein, um diese Einstellungen zu konfigurieren, die in Ihrer Anwendung-Eigenschaften-Datei, mit der folgenden Eigenschaft-Schlüssel/- Werte:
Dann, auf meiner web-app, ich erkläre ein bestimmtes SSL-Konfiguration wie folgt:
Ich dann erklären müssen das UserDetailsService bean (z.B. in meiner Anwendung die main-Klasse):
... Und das ist es! Ich kann dann fügen Sie @PreAuthorize("hasRole('ROLE_SSL_USER')") Anmerkungen zu den Methoden, die ich sichern will.
Summe die Dinge ein wenig, die Authentifizierung wie folgt: