HTTPS

# HTTPS

http的问题:HTTP 报文传输过程中是明文的,可以通过抓包的方式查看到,所以有安全问题,容易被劫持篡改

为了解决这个问题,就有了 TLShttps = http + TLS

# TLS

TLS:安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性

该协议由两层组成:

  1. TLS 记录协议(TLS Record)
  2. TLS 握手协议(TLS Handshake)

TLS 利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)

https 分为两个阶段

  1. 通过非对称加解密确认对方身份是否合法,若合法生成会话密钥。(这一步是核心)
  2. 报文的在发送前,先用会话密钥进行对称加密,在传输。

非对称加密算法需要两个密钥:公开密钥(public key:简称公钥)和私有密钥(private key:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥

# TLS 记录协议(TLS Record)

# TLS 握手协议(TLS Handshake)

步骤:

  1. 客户端请求建立TLS链接,服务端向客户端发送一个随机数random ACA证书
  2. 客户端对证书验证,通过后生成一个随机数 random B,用公钥对 B 加密,同时用 B生成一段签名发送给服务端
  3. 服务端用私钥解密,用解密后的 key 生成签名,并与客户端传来的签名进行比较,通过后生成一个随机数random C,并用私钥加密,还有随机数生成的hash 值,一并发给客户端
  4. 客户端用公钥解密,并校验 hash 值通过后,两端利用 A B C 通过一定的算法生成 session key,后续的报文将通过 session key 对称加密进行传输。

# CA 证书

假如没有证书验证这一环节,那么公钥在传输过程极有可能被中间人拦截,将服务端的公钥换成它自己的公钥,返回给客户端,这样就起不到加密的作用了,这就是中间人攻击

CA证书,是由 CA 机构颁发的一个凭证,里面关键的信息有,签名算法、签名hash算法、颁发者、有效期、公钥、指纹,这个两个算法就表示对称阶段和非对称阶段采用的算法,公钥就是服务端的公钥,在申请的时候,企业需要上传公钥给CA机构,重点是这个指纹,这个指纹是由 CA 机构通过私钥对一段签名加密生成的。

最后更新时间: 3/11/2021, 10:58:11 PM