配置SpringBoot项目支持https与http双协议(微信小程序只支持https协议)

一. 配置双协议的原因?

1. SpringBoot项目,默认支持的是http协议。

2. 微信小程序开发中,对网络数据请求做出了限制(只支持https协议)

(1)出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:

        ①只能请求 HTTPS 类型的接口

        ②必须将 接口的域名 添加到 信任列表
(2)在开发过程中,我们可以先勾选不校验合法域名,先使用http请求,来进行测试。但在上线后,必须支持https协议的请求。
 

二 . 开始配置

1. 证书生成

(1)我们可以使用用jdk自带的keytool生成一个.pfx的文件

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048  -keystore D:\httpsKey.pfx  -validity 3600

(2)参数:

 -genkey                生成key
-validity  3600       有效期限3600天
-alias                    别名
-keyalg RSA         指定生成key的算法RSA
-keystore D:\httpsKey.pfx        指定生成的pfx文件和路径 在D盘下

2. 然后将生成的证书, 放在项目的resources目录下

3.  在application.yml中配置相关信息,使项目支持https协议的请求

在yml文件中配置:支持双协议。yml文件中配置https协议。http协议在另一个文件中配置,下面会讲。

#这里配置的时支持https协议,8080是https协议服务的端口号。http协议服务端口号为9201在配置文件中配置
server:
  port: 8080
  servlet:
    context-path: /bm
  ssl:
    enabled: true      #true表示开启https请求协议。false代表关闭https协议(当前协议就是http协议)   
    protocol: TLS                        #加密通信的规范
    key-store: classpath:httpsKey.pfx    #生成的证书
    key-store-password: admin123      #执行证书的密码
    key-store-type: PKCS12            ##执行证书的类型,需要与证书后缀所属类型相符

 4. 自定义一个config配置类,在该类中配置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(9201);
        factory.addAdditionalTomcatConnectors(connector);
    }
}

 三. 验证配置是否成功

1. 启动SpringBoot项目,查看日志是否出现以下结果

2. 访问接口验证协议是否配置成功(我这里通过Swagger接口文档验证不同的协议请求)

(1)http协议,我配置的端口号是9201

(2)https协议,我配置的端口号是8080

 通过以上结果:SpringBoot配置双协议成功!!!

四. 证书类型与后缀辨别

证书主要的文件类型和协议有: PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL 、OCSP、SCEP等。

证书类型常见的后缀
PKCS7.P7B .P7C .SPC
PKCS12.P12 .PFX
X.509 DER编码(ASCII).DER .CER .CRT
X.509 PAM编码(Base64).PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值