https 基本概念学习

概念

协议

1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

加密算法

1、对称加密

有流式、分组两种,加密和解密都是使用的同一个密钥。

2、非对称加密

加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。

3、哈希算法

将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。例如:MD5、SHA-1、SHA-2、SHA-256 等

4、数字签名

签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

https 流程

数字证书和数字签名

数字证书是由权威机构颁发给服务器方,通常包含名称,过期时间,发布者等信息,服务器通过提供证书证明自己身份,就像人出示身份证一样

为了证明证书的可靠性,需要用到数字签名技术。证书颁发方将证书中的版本号,序列号,签名算法描述,颁发机构,对象名称,对象公钥等通过颁发者的私钥加密后生成数字签名

当客户端(浏览器)接收到服务器发来的证书后,根据颁发方的公钥(通常已预装在浏览器,对于非权威证书颁发者会出现警告),解密签名与证书对照,确认证书没有变化。

通常 SSL 证书中包含的具体内容有:

-(1)证书的发布机构CA
-(2)证书的有效期
-(3)公钥
-(4)证书所有者
-(5)签名

SSL握手通过4次完成

1.ClientHello

客户端向服务器提供

  1. 支持的协议版本, TLS1.0-1.3/SSL
  2. 一个用于生成对称加密的随机数
  3. 支持的加密方法
  4. 压缩算法

ServerHello

服务器回复

  1. 确认使用的协议版本
  2. 第二个用于生成对称加密的随机数
  3. 确认使用的加密方法,比如RSA公钥加密
  4. 服务器证书

客户端响应

客户端回复

  1. 最后一个用于生成对称加密的随机数
  2. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
  3. 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验

服务器响应

  1. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
  2. 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验

之后所有内容就交由SSL层使用对称密钥加密后传递