SpringBoot2.1(7)HTTP/2,及自签名HTTPS

《回顾》

上一篇,说了一个超简单的定时任务处理方案。还说到了怎么编译War包,把项目运行在Tomcat中。

 

 

这篇,依旧不难,而且很短,介绍怎么给自己的项目,开启HTTP/2,并使用HTTPS协议。

短,不一定都是缺陷。

 

一、简单了解HTTP/2

HTTP/2 (原名HTTP/2.0)即超文本传输协议 2.0,是下一代HTTP协议

HTTP/2 更高效、更简单、更强大,它在传输层解决了以前我们HTTP1.x中一直存在的问题。

新的二进制格式

    HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性需要考虑的场景必然很多,二进制则不同,只认0和1的组合。

多路复用

    即连接共享,即每一个request都是连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

header压缩

    HTTP2.0使用HPACK 压缩格式,压缩请求和响应表头源数据,来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

服务器推送

    服务器可以对一个客户端请求发送多个响应。 换句话说,除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确地请求。

 

二、生成HTTPS证书

虽然,HTTP/2支持使用明文的HTTP协议,但是SpringBoot开启HTTP/2必须使用HTTPS。

1、进入Java安装目录

执行命令:

bin/keytool -genkey -alias localhost -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -dname "CN=localhost, OU=zhoudong, O=zhoudong, L=bj, ST=bj, C=CN"

 

查看证书是否生成:(就在执行命令的路径下)

SpringBoot2.1(7)HTTP/2,及自签名HTTPS_第1张图片

 

三、为项目配置HTTP/2、HTTPS

1、将已经生成的证书,复制到项目resources 目录

SpringBoot2.1(7)HTTP/2,及自签名HTTPS_第2张图片

 

2、配置文件增加配置

#端口号
server.port=8443


#配置ssl (https)
# keystore.p12的路径
server.ssl.key-store=classpath:keystore.p12
# 之前输入的口令
server.ssl.key-password=mypassword
# 之前输入的口令
server.ssl.key-store-password=mypassword
#配置ssl (https) end


#使用http2
server.http2.enabled=true


3、编写一个用于测试的接口

@GetMapping("/index")
public Map index(){
   log.info("访问index....");
   return Map.of("msg","hello.");
}

 

4、启动应用

访问:

https://localhost:8443/index

 

SpringBoot2.1(7)HTTP/2,及自签名HTTPS_第3张图片

 

5、关于提示"不安全连接"问题

因为属于自签名证书,所以不被浏览器信任,忽略掉就可以。工作中,公司会花钱去买证书。

 

博客内所有文章,每周从公众号同步一次。

文章源码均可从公众号获取。

如果您可以关注下,那就好了。

SpringBoot2.1(7)HTTP/2,及自签名HTTPS_第4张图片

你可能感兴趣的:(Springboot)