zoukankan      html  css  js  c++  java
  • springBoot2.X 支持http、https访问

    1.第一步 生成https证书

    打开cmd

    keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore C:UsersTXJSDesktop	empsslhttps.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认证

     5.购买了阿里ESC实例的可以阿里云申请免费的SSL证书 替换上面自己生成的证书即可 证书别名可以注释掉

  • 相关阅读:
    软件工程实践2017第一次作业
    mysql卸载重装总是卡在starting server这一选项
    java web出现的问题
    c#中对文件进行解压同时进行解压后的数据操作
    添加debug里面的图片进行打印
    如何创建一个button控件,进行资源选择
    使用Graphics.DrawString如何实现textBox换行打印
    很有意思的一种两个数交换的方法
    将一个字符串进行反转;获取一个字符串在另一个字符串中出现的次数;获取两个字符串中最大相同子串。
    Comparator匿名实现
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/12461809.html
Copyright © 2011-2022 走看看