SpringBoot2配置ssl,实现HTTP访问自动转HTTPS访问

版权声明:欢迎转载分享,只求注明出处! https://blog.csdn.net/Pagegle/article/details/89092338

1、生成证书,可以使用自签名证书或者从SSL证书授权中心获得

JDK中keytool是一个证书管理工具,可以生成自签名证书,这里使用JDK自带的keytool创建证书测试

打开cmd窗口,输入命令

keytool -genkey -alias tomcat -keyalg RSA -keystore ./https.keystore

按照提示操作

2、创建完成后,在用户根目录下查看生成的keystore文件,将它复制到项目的根目录下

3、在yml文件中添加配置

4、再建一个配置类


import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpsConfig {

    @Bean
    public Connector connector(){
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8443);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){
        TomcatServletWebServerFactory tomcat=new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint=new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection=new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(connector);
        return tomcat;
    }

}

5、运行原地址,自动跳转

猜你喜欢

转载自blog.csdn.net/Pagegle/article/details/89092338
今日推荐