SpringBoot项目Http转Https配置

SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问

1、 使用JDK自带的keytools创建证书

打开cmd,输入如下命令:

keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore
复制代码

一切按照提示进行操作:

操作完成后,会在用户打开cmd的窗口生成server.keystore文件

2、 拷贝证书文件到工程根目录

将生成的server.keystore拷贝到需要支持HTTPS访问服务的根目录,然后进行配置。

在application.properties,加入下列配置:

server.port=443

server.ssl.key-store=server.keystore

server.ssl.key-alias=tomcat

server.ssl.enabled=true

server.ssl.key-store-password=123456

server.ssl.key-store-type=JKS
复制代码

注:这里将服务器端口号设置成443端口,即https的默认访问端口,那么在进行https访问的时候可以不带端口号直接访问,如果端口被占用使用,则需要解决端口占用问题了。

3、 Http访问自动转Https

在Spring Boot启动类中注入下面两个Bean,提供Https服务。

 @Bean

    public Connector connector(){

        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");

        connector.setScheme("http");

        connector.setPort(80);

        connector.setSecure(false);

        connector.setRedirectPort(443);

        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;

}
复制代码

在这里设置http的监听端口为80端口,http默认端口,这样在访问的时候也可以不用带上端口号了,直接访问http://localhost,自动转向https://localhost

转载于:https://juejin.im/post/5bacfaecf265da0ae8012022

你可能感兴趣的:(SpringBoot项目Http转Https配置)