# Https 加密握手的过程

# Https 的由来

https 是在 http 基础上加了 SSL,而 SSL 是在 TCP 基础上做了安全加强。

# http 有啥不好,才产生的 HTTPS

  1. HTTP 采用明文传输,没有隐私
  2. HTTP 不验证通信双方身份,容易被三方截取
  3. HTTP 无法验证报文的完整性,报文可以被篡改

# 那什么是 HTTPS 呢

HTTP+加密+认证+完整性保护 = HTTPS

# SSL 协议

SSL 是在不安全的 TCP 上做了安全加强,因此不能说 SSL 是新的传输层协议,同样有不能说 HTTPS 是新的应用层协议,他们只是在不安全的基础上做了安全加强。

# HTTP 协议通信

传统的 HTTP 报文是直接将报文信息传输到 TCP,然后 TCP 在通过 TCP 套接字发送到目的主机上。

# HTTPS 协议通信

HTTP 报文信息 -》 SSL 套接字加密-》SSL 加密后的报文发送给 TCP 套接字-》TCP 套接字将加密后的报文发送到目的主机-》目的主机把加密后的报文给 SSL 套接字,SSL 解密后交给对应进程。

# 这也是一次握手过程
 Client                                          Server
  ---——————----------------请求网址----------> 证书公钥 证书私钥
  <--------------------------返回证书公钥------
验证证书是否有效
  |--无效---> 弹出警告框
  |
 有效
  |
生成一个随机值
  |
用证书的公钥加密随机值【密钥】------将加密后的密钥发送给服务端---->用私钥解密密钥
                                                      |
                                                     密钥
                                                      |
用密钥解密信息   <-----将加密后的内容发送给客户端---- 用密钥加密要发送的内容

# 共享密钥加密【对称密钥加密】

用相同密钥对报文加密解密,那个解决如何把密钥安全的交给解密方

# 公开密钥加密【非对称加密】

有两个密钥,一个公钥,一个私钥,公钥加密的只能私钥解开,私钥加密的只能公钥解开

# 证书

共有密钥不是服务器随便产生的,而是服务器的运维人员向数字证书认证机构申请的。 客户端向服务器要共有秘钥,服务器把公钥证书发送给客户,客户获取到密钥得到签名,然后向数字认证机构进行确认,数字认证机构确认该签名无误后,客户采用共有秘钥进行加密