Spring Boot 2.0 使用阿里云申请的免费SSL证书配置HTTPS

Spring Boot 2.0 配置HTTPS

1. 阿里云申请免费的SSL证书

本地测试可以用jdk自带的工具生成, 自行百度证书生成指令

证书申请下来后根据需要下载 此处下载tomcat证书

2. Spring Boot 项目Properties参数配置

将证书文件复制到resources目录下

注意证书路径要带上 classpath:

server:
  # 端口 使用HTTPS默认端口
  port: 443
  #HTTPS加密配置
  ssl:
    #证书路径
    key-store: classpath:666.pfx
    #证书密码
    key-store-password: 123456

额外说明一下 如果端口被占用

  • Windows下的解决办法

    # 查询所有端口  
    # netstat -ano
    
    #这里做个过滤
    netstat -ano | findstr "443"
    

    记住上图的PID

    tasklist | findstr "14540"
    

    进任务管理器杀死java.exe进程,也可以直接在详情查找PID为14540的进程 ,杀之

  • centos7 下杀死占用端口的进程

    # 根据端口号得到其占用的进程的详细信息
    netstat -lnp|grep 80
    
    # 查看进程的详细信息
    ps "pid"
    
    #直接杀掉占用端口的进程   -9是强制关闭
    kill -9 "pid"
    
    #一次性清除占用80端口的程序
    lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
    

3. 配置HTTP 访问自动转 HTTPS

向Spring容器中注入两个Bean

注意 1.5版本没有TomcatServletWebServerFactory类

1.5版本用EmbeddedServletContainerFactory 2.0版本已删

   /**
     * http 转 https
     */
    @Bean
    public Connector connector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        // 监听的http端口
        connector.setPort(8082);
        connector.setSecure(false);
        // 监听到http端口后跳转的https端口
        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;
    }

至此大功告成, 打包部署测试吧


猜你喜欢

转载自blog.csdn.net/qq_32096997/article/details/88838470