HTTPS的实现原理

作者:陈劲灿 编辑日期: 2017年10月22日 16:57 阅读量: 311 分类: django

HTTPS的实现过程

先上图: HTTPS实现原理

比较简单的理解:

  1. 客户端先通过服务器的443端口和服务器进行连接,并且发送客户端支持的加密方式列表(客户端支持的加密算法和Hash算法)等,并且加上一个客户端的28字节随机数。

  2. 服务器端需要有一套数字证书(也就是有一对公钥和私钥 可以自己生成也可以向组织申请).

  3. 服务器通过客户端上传的加密方式列表选取一套加密算法和Hash算法,将其和服务器生成的28字节随机数、以及SSL证书(包含公钥)一并返回给客户端。

  4. 客户端收到信息后先检查证书是否有效、然后通过服务器发送的随机值生成一个随机值premaster_secret 和 master_secret。

其中master_secret需要服务器的随机值和客户端的随机值作为种子: master_secret = PRF(pre_master_secret, "master secret", client_random + server_random)

然后通过master_secret生成会话中所需要使用的密钥块(密钥块由一系列的Hash值组成, 它们分别是校验一致性的密钥,用于对称内容加解密的密钥,以及初始化向量,客户端和服务器端各一份).

  1. 客户端发送公钥 public_key 加密的 premaster secret。让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  2. 服务器通过private_key解密获得 premaster secret,用第一步获取到的客户端随机值,以及服务器自己生成的随机值 通过与客户端相同的算法即可生成与客户端一样的master_secret 。

  3. 使用premaster_key 对信息进行加密,然后返还给客户端。

  4. 客户端对服务器发过来的消息进行解密。

HTTPS下使用的算法

  1. 非对称加密算法:RSA,DSA/DSS
  2. 对称加密算法:AES,RC4,3DES
  3. HASH算法:MD5,SHA1,SHA256

上一篇
下一篇
TensorFlow的深度学习文章->_->Tensorflow windows环境搭建
TensorFlow的深度学习文章->_->基础API的熟悉与使用