我有一个没有HTTPS的Spring Boot应用程序运行得非常好。现在,我获得了我的SSL证书以便在prod环境中使用,我现在想要默认使所有端点都是HTTPS。
我一直在使用Spring Security配置我的网页'访问,这就是我所拥有的:
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");
我读到你可以将它添加到我上面的配置中以强制所有请求加入HTTPS,但我想确定它应该去哪里,所以我不打破生产:
.requiresChannel().anyRequest().requiresSecure();
我正在通过AWS Elastic Beanstalk运行我的应用程序,并且SSL证书已经存在 已成功在AWS上正确安装(准备就绪)。 只是为了澄清,SSL / HTTPS在负载平衡而非EC2实例处终止,因此这可能会改变Spring Boot中的配置吗?
另外,如果我能在我的机器上本地测试使用Spring的https会很棒,但我不知道如何继续。很多在线示例看起来都很复杂。
大家对此有什么建议?感谢
答案 0 :(得分:0)
是强制执行HTTPS,您需要添加以下代码行
box_id, sequence_number
要在本地进行测试,您需要在本地安装cert并配置以下配置
在Spring Boot中启用HTTPS:
在您的application.properties中定义以下属性:
http.requiresChannel().anyRequest().requiresSecure();
启用HSTS
HTTP严格传输安全(HSTS)是一种Web安全策略机制,可帮助保护网站免受协议降级攻击和cookie劫持。它允许Web服务器声明Web浏览器(或其他符合要求的用户代理)应该只使用安全的HTTPS连接[1]与之交互,而不是通过不安全的HTTP协议。
# 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