HTTPS并非是新协议,而是 HTTP + SSL = HTTPS。
SSL/TLS 的握手过程
1、TLS是什么?
为 Internet 提供通信安全的加密协议。
2、什么是TLS握手?
TLS握手启动和使用TLS加密通信会话的过程。在TLS握手期间,Internet中的通信双方会彼此交换信息,验证密码套件,交换会话秘钥。
3、什么时候进行TLS握手?
每当用户通过HTTPS导航到具体的网站发送请求时,就会进行TLS握手。
4、具体的TLS握手过程是怎样的?
具体的TLS握手过程会根据使用的密钥交换算法的类型 和双方支持的密码套件 不同而不同。
RSA 非对称加密
- 通信前会进行HTTP的三次握手,握手完成后,在进行TLS握手。
- ClientHello:客户端通过向服务器发送 hello 消息(客户端支持的TLS版本号+客户端支持的加密方法+客户端的随机数+支持的压缩方法)发起握手过程。
- ServerHello:在客户端发送hello消息后,服务器也会发送一条消息(服务器的SSL证书+服务器选择的加密方法+服务器生成的随机数+服务器选择的TLS版本)。
- 客户端认证证书:客户端的证书颁发机构会认证SSL证书(是否可信机构颁发、证书域名与实际域名是否相符、证书是否已过期),然后发送 Certificate 报文(包含公钥证书)。
- SeverHelloDone:服务器发送ServerHelloDone作为hello请求的响应,第一部分握手阶段结束。
-
客户端加密过程:
- 客户端发送 ClientKeyExchange (包含了使用公钥加密的字符串)响应服务器。
- 客户端发送 ChangeCiepherSpec告诉服务端使用私钥解密以上字符串。
- 发送 Finished 告诉服务器我已经发送完成。
-
服务端加密过程:
- 服务端发送ChangeCipherSpec。
- 服务端发送Fnished。
以上总结参考:https://mp.weixin.qq.com/s/qetBsYmDqwi_nJVnKmBw8Q、https://www.cnblogs.com/jjzd/p/9346260.html