目录
0.HTTPS
HTTPS与HTTP的区别就是基于SSL层,而不是直接基于TCP,
HTTPS VS HTTP区别
- 建立连接过程,HTTP的话几乎在TCP建连(3次握手)之后就可以传输应用数据了,但是HTTPS在TCP建连后,需要在SSL层经历SSL握手才能建立好SSL连接!
- 传输过程中,HTTP的报文就直接转字节流传递给TCP去发送了,而HTTPS的报文经过了SSL层的加密,对端经过解密才能到达对方的http层,才能根据http协议去解析字节流。
好奇SSL握手过程的请见https://mp.csdn.net/postedit/89333536
下面是JAVA的服务端和客户端实现
1.单向认证
使用一个最简单的say hello 的SpringBoot项目,修改配置文件application.properties支持https,
1.1 服务端
开启ssl,握手服务端发送sslTestServer.jks证书库中的名为www.server.com的服务端证书,证书库的密码是123456,证书类型为JKS
server.port=8085
# 私钥证书库 服务端证书
server.ssl.key-store=sslTestServer.jks
# 指定服务端证书 别名
server.ssl.key-alias=www.server.com
# 开启ssl
server.ssl.enabled=true
# 证书库密码
server.ssl.key-store-password=123456
# 证书库类型
server.ssl.key-store-type=JKS
并将sslTestServer.jks服务端证书库放在SpringBoot根目录下 ,证书文件有一个私钥www.server.com和一个公钥信任证书