SpringBoot配置HTTPS SSL

2022-07-22 08:36:38

前提

  • 云服务器已经购买并配置好了安全组。
  • 域名已经购买并配置好了SSL。

腾讯云或阿里云的官方文档有很详细的介绍。

SpringBoot配置

我是购买的腾讯云的域名和SSL免费证书(一年有效期),

下载SSL证书

在这里插入图片描述

.txt 是密码, .jks 是我们需要的证书配置

配置.yml 文件

server:
    port: 443
    ssl:
        key-store: classpath:wuwufq.asia.jks
        key-store-password: 41aaaaaa
        key-store-type: JKS
        enabled: true

配置HTTP重定向HTTPS

在启动类Application (有@SpringBootApplication注解的类)里

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.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class FreerideApplication {

    public static void main(String[] args) {
        SpringApplication.run(FreerideApplication.class, args);
    }


    /**
     * http重定向到https
     * @return
     */
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        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(httpConnector());
        return tomcat;
    }
    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的默认端口号
        connector.setPort(80);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号,也就是项目配置的port
        connector.setRedirectPort(443);
        return connector;
    }

}

我的SpringBoot是2.4.x的,1.5.x的写法有所不一样,可自行百度

配置服务器

把刚才的SSL.jks文件上传到服务器,和jar包同级目录即可。
在这里插入图片描述
现在重新打包jar包,上传服务器就可以HTTPS访问了。
在这里插入图片描述

  • 作者:wuwuFQ
  • 原文链接:https://wuwufq.blog.csdn.net/article/details/113867714
    更新时间:2022-07-22 08:36:38