Https安全协议

前提

由于 HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,就想出来对传输通道进行加密的方式 https。

介绍

https 是一种加密的超文本传输协议,它与 HTTP 在协议差异在于对数据传输的过程中,https对数据做了完全加密。由于 http 协议或者 https 协议都是处于 TCP 传输层之上,同时网络协议又是一个分层的结构,所以在 tcp 协议层之上增加了一层 SSL(Secure Socket Layer,安全层)或者 TLS(Transport Layer Security) 安全层传输协议组合使用用于构造加密通道;

申请过程

我这边是在阿里云上申请的免费证书,直接下载下来部署到web服务器即可!

客户端请求交互过程

1、客户端发起请求

1、建立TCP连接
2、支持的协议版本(TLS/SSl)
3、客户端申城随机数client.random
4、客户端支持的加密算法
5、SESSIONID,用于保持同一个会话

2、服务器收到请求响应

1、确认加密通道协议版本
2、服务器生成随机数server.random
3、确认使用的加密算法
4、服务器证书(部署到web服务器证书)

3、客户端收到证书进行验证

1、验证证书是否是上级 CA 签发的, 在验证证书的时候,浏览器会调用系统的证书管理器
接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,
整个验证的结果才是受信
2、服务端返回的证书中会包含证书的有效期,可以通过失效日期来验证 证书是否过期
3、验证证书是否被吊销了
4、验证通过后,客户端会征程一个随机数client.random2,客户端根据之前的:client.random+server.random+client.random2生成堆成密钥然后使用证书中的
公钥进行加密,同时根据协商好的HASH算法,取出握手消息中的HASH值,然后用随机数加密:握手消息+握手消息Hash值(签名)一起发送给服务端

4、服务端接收随机数

1、服务端收到客户端的加密数据后,用自己的私钥对密文进行解密,然后得到
client.random+server.random+client.random2、HASH值,并与传过来的HASH值做对比确认是否一致
2、随机密码加密一段握手信息(握手消息+握手消息Hash值)给客户端

5、客户端接收消息

1、解密握手信息的HASH值,如果与服务端一致,握手过程结束
2、之后所有的通信数据将由之前交互过程中生成的client.random、server.random、client.random2
通过算法得出session key,作为后续交互过程的密钥。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>