* 什么是HTTP

HTTP(HyperText Transfer Protocol)中文全名超文本传输协议,HTTP是用于客户端与服务器间请求响应的协议。HTTP是应用层的协议,和其他该层协议一样,它是服务于某一类具体应用的协议。

* 什么是HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)

HTTPS是在HTTP的基础上加上了SSL/TLS层
TLS(Transport Layer Security,传输层安全协议)、SSL(Secure Sockets Layer 安全套接层)

SSL由NetScape公司设计,共有三个版本1、2、3。SSL 3.0得到大规模使用,而TLS是SSL标准化后的升级版

SSL/TLS握手阶段工作流程:

  1. 客户端向服务端发出加密通信请求(ClientHello)

    携带支持的协议,例如TLS 1.0版
    客户端生成的随机数random1,后面用于生成“对话密钥”
    支持的加密方法,比如RSA公钥加密
    支持的压缩的方法

  2. 服务端收到请求,做出响应(ServerHello)

    确认加密通信协议,例如TLS 1.0版。如果协议与服务端支持的不一致,则关闭加密通信。
    服务端生成一个随机数random2,后面用于生成“对话密钥”
    确认加密方法,例如RSA公钥加密
    携带服务端证书给客户端

  3. 客服端做证书验证和公钥对随机数加密发送给服务端(ClientResponse)

    验证证书的安全性
    验证通过后,客户端生成随机数pre-master secret,然后使用证书中的公钥进行加密,发送给服务端

  4. 服务端私钥解密获得随机数(ServerResponse)

    服务端收到公钥加密的内容,在服务端使用私钥解密后得到pre-master secret,然后根据random1、random2和pre-master secret通过一定的算法得出对称加密的秘钥,作为后面交互过程中的对称密钥。同时客户端也使用random1、random2和pre-master secret,同样的算法生成对称密钥。

  5. 后续操作使用上一步生成的对称密钥对传输的内容加密和解密。

如何保证公钥不被篡改?

将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。

什么是对称加密?

加密和解密用的都是相同的密钥,优点是速度快,缺点是安全性低,常见的对称加密DES、AES等

什么是非对称加密?

非对称加密由一对密钥对,分为公钥和私钥。一般私钥自己持有,公钥可以公开给对方,优点是安全性比对称密钥高,缺点是数据传输效率比对称密钥低。采用公钥加密的数据只能由对应的私钥来解密。常见的非对称加密算法RSA。

HTTPS在传输过程中采用了对称加密和非对称加密结合使用,使用非对称加密传递密钥,然后使用对称密钥进行数据传输的加密和解密。二者的结合既保证了传输的安全性,也保证了数据传输的效率

* HTTP 2.0

  1. (二进制格式)HTTP 2.0采用二进制格式传输,而HTTP1.x使用纯文本的形式传输数据
  2. (Header压缩)HTTP 2.0对已经发送的Header使用键值对建立索引表(两端维护的索引表),相同的Header使用索引表示,即Header压缩。
  3. (服务器推送)服务端可以进行主动推送
  4. (多路复用)一个TCP连接被划分为多个流,客户端借助流和服务端建立全双工通信,且流具有优先级。