/ / Der Versuch, mit Spring Boot 4 das richtige HTTPS einzurichten - spring, ssl, spring-boot, spring-security, https

Richtiges HTTPS mit Spring Boot 4 einrichten - Spring, SSL, Spring Boot, Spring-Security, https

Ich habe eine Spring Boot App, die ohne HTTPS einwandfrei lief. Jetzt habe ich mein SSL-Zertifikat zur Verwendung in der Produktumgebung erhalten und möchte jetzt standardmäßig alle Endpunkte auf HTTPS setzen.

Ich habe Spring Security verwendet, um den Zugriff auf meine Seiten zu konfigurieren, und Folgendes habe ich:

protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(
"/images/**",
"/css/**",
"/js/**",
....bunch of endpoints....
"/").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/login")
.failureUrl("/login")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.clearAuthentication(true)
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID", "remember-me")
.logoutSuccessUrl("/")
.permitAll()
.and()
.exceptionHandling()
.accessDeniedPage("/error");

Ich habe gelesen, dass Sie dies zu meiner obigen Konfiguration hinzufügen können, um alle Anforderungen an HTTPS zu erzwingen, aber ich wollte sicherstellen, wohin es gehen soll, damit ich die Produktion nicht unterbreche:

.requiresChannel().anyRequest().requiresSecure();

Ich führe meine App über AWS Elastic Beanstalk aus und das SSL-Zertifikat ist bereits vorhanden ordnungsgemäß auf AWS erfolgreich installiert (betriebsbereit). Zur Verdeutlichung wird das SSL / HTTPS beim Lastausgleich und nicht bei der EC2-Instanz beendet. Dies könnte also die Konfiguration in Spring Boot ändern, denke ich.

Es wäre auch großartig, wenn ich das https mit Spring auch lokal auf meinem Computer testen könnte, aber ich bin mir nicht sicher, wie ich damit vorgehen soll. Viele der Online-Beispiele scheinen ziemlich komplex zu sein.

Was raten alle dazu? Danke

Antworten:

0 für die Antwort № 1

Ja, um HTTPS zu erzwingen, müssen Sie die folgende Codezeile hinzufügen

http.requiresChannel().anyRequest().requiresSecure();

Zum lokalen Testen müssen Sie das Zertifikat in Ihrer lokalen und folgenden Konfiguration installieren

Aktivieren Sie HTTPS im Spring Boot:

In Ihrer application.properties definieren Sie die folgenden Eigenschaften:

# Define a custom port instead of the default 8080
server.port = 8089
# Tell Spring Security to require requests over HTTPS
security.require-ssl=true
# The keystore containing the certificate keys
server.ssl.key-store=keystore.jks
# The password used to generate the keys
server.ssl.key-store-password=password
# The alias mapped to the certificate
server.ssl.keyAlias=tomcat

Aktivieren Sie HSTS

HTTP Strict Transport Security (HSTS) ist ein WebSicherheitsrichtlinienmechanismus zum Schutz von Websites vor Protokoll-Downgrade-Angriffen und Cookie-Hijacking. Es ermöglicht Webservern zu deklarieren, dass Webbrowser (oder andere konforme Benutzeragenten) nur über sichere HTTPS-Verbindungen [1] und niemals über das unsichere HTTP-Protokoll mit ihm interagieren dürfen.

Strict-Transport-Security: max-age=31536000; includeSubDomains