1. 我画了一个简单的图来了解一下HTTPS请求的交互过程,附图如下: 这里简单解释一下:当前流行的操作系统都预装了权威证书颁发机构的证书和支持网络传输加解密安全的SSL协议模块。SSL层介于应用层和传输层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。 SSL主要有3个子协议,分别如下: * 握手协议(Handshake protocol) 该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。 * 记录协议(Record protocol) 记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议 * 警报协议(Alert protocol) 客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。 SSL详细的介绍请参考:SSL协议详解
  2. 解释一些用到的一些概念和术语 * 非对称加密算法:加密使用的密钥和解密使用的密钥是不相同的。公钥加密的密文只能用私钥来解密;同理私钥加密的密文只能通过公钥解密。 * 对称加密算法:加密使用的密钥和解密使用的密钥是相同的,不区分公钥和私钥。 * 加密:指对某个内容进行加密,加密后的内容还可以通过解密进行还原。 * 签名:就是再信息后面加上一段内容来证明信息没有被篡改过。
  3. 模拟HTTPS请求过程: C--->:你好 S--->:你好,我是服务器,我的证书是... C--->:收到证书校验是否合法(校验证书的合法性),如果合法就发送一个随机字符串发给服务器 S--->:服务器用私钥加密收到的字符串之后返回给客户端 C--->:客服端用公钥解密跟之前的字符串对比校验(确认服务器合法性),通过公钥加密生成一个对称加密算法和秘钥发给服务端(因为只有私钥才可以解密,所以不怕其他方截获) S--->:私钥解密得到对称加密算法和秘钥,返回客户端收到信息 . . . 后面交互都是通过对称加密算法来实现... 具体信息可以参考:Https 建立安全连接的过程(SSL原理)