尝试使用Spring Boot 4设置正确的HTTPS

时间:2017-09-26 17:17:24

标签: spring ssl spring-boot spring-security https

我有一个没有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会很棒,但我不知道如何继续。很多在线示例看起来都很复杂。

大家对此有什么建议?感谢

1 个答案:

答案 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