配置Springboot支持https和http协议

记录一下关于springboot 同时支持https和http协议的问题
在网上看了关于微信小程序的教程,要发布小程序的后端必须要支持https服务的,所以在后端springboot项目中添加了支持https服务的相关配置
在网上查了一下资料,又在我本地实践了一把,it works

1.用jdk自带的keytool生成一个.keystore的文件
配置Springboot支持https和http协议_第1张图片
设置秘钥口令 key-store-password
我在此设置的是: gexiaolong
-genkey 生成key
-validity 3600 有效期限3600天
-alias 别名 这个目前我也还没有搞明白是用在哪里的
-keyalg RSA 指定生成key的算法RSA
-keystore d:\gexiaolong.keystore 指定生成的keystore文件和路径 在D盘下

然后将生成的gexiaolong.keystore 放在项目的resources目录下
配置Springboot支持https和http协议_第2张图片

2.在application.yml中配置相关信息

配置key-store
key-store-password

配置Springboot支持https和http协议_第3张图片
至此配置完成,项目支持https协议

访问项目接口正确返回数据
配置Springboot支持https和http协议_第4张图片
切换成http协议访问则不支持 报错
配置Springboot支持https和http协议_第5张图片
3.配置TomcatServletWebServerFactory 支持http协议访问

在项目中添加TomcatServerCustomer 组件,然后启动项目,再次访问就可以使用http协议访问了

@Component
public class TomcatServerCustomer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
//      final Connector connector = new Connector("HTTP/1.1");
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        factory.addAdditionalTomcatConnectors(connector);
    }
}

再次访问 则http 协议访问正常返回数据
配置Springboot支持https和http协议_第6张图片

https 协议也能正常访问的

OK,配置完成两种协议都支持了

你可能感兴趣的:(spring,boot,https,http)