springBoot2.X 支持http、https访问

1.第一步 生成https证书

打开cmd

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore C:\Users\TXJS\Desktop\temp\sslhttps.p12 -validity 365

2.第二步 将证书复制到项目的 resources 目录下 添加SSL配置

server:
  port: 443
  ssl:
    key-store: classpath:sslhttps.p12
    key-alias: tomcathttps
    key-store-password: 123456
    enabled: true
    key-store-type: JKS

3.如果只是想变成https访问 上面步骤已经足够 如果还需要配置http访问 新增配置文件

package com.txj.bwbd.config;

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.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Create by IntelliJ IDEA
 *
 * @author chenlei
 * @dateTime 2019/5/23 18:09
 * @description TomcatConfig
 */
@Configuration
public class TomcatConfig {

//    @Bean
//    public ServletWebServerFactory webServerFactory() {
//        TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
//        fa.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
//        return fa;
//    }


//    @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);
//            }
//        };
//        connector.setProperty("relaxedQueryChars", "[]{}");
//        tomcat.addAdditionalTomcatConnectors(connector);
//        return tomcat;
//    }

    /* --------------------请按照自己spring boot版本选择 start--------------------- */

    // 这是spring boot 2.0.X版本的 添加这个,上一个就不用添加了
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }

    /* --------------------请按照自己spring boot版本选择 end--------------------- */


    // 配置http
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(80);
        return connector;
    }

}

备注:完成以上配置就ok了 留坑:

 使用该方法 将http重定向到 https端口 会导致post请求参数丢失 原因未知! 不重定向是完全没问题的 

4. 附上测试截图

https:

 http:

 备注:这里注意使用postman测试https需要关掉 postman SSL认证

猜你喜欢

转载自www.cnblogs.com/guanxiaohe/p/12461809.html
今日推荐