HTTPS中SSL协议总结

SSL全称Secure Socket Layer,安全套接字层。SSL用来保证Web浏览器与Web服务器交换信息的安全性,保证传输过程中消息的加密性。

在SSL中使用到的技术:

  1. 散列算法验证数据完整性:
    传送的数据中包含经过散列算法的到的散列值。当接收到数据时,可以通过相应的散列算法再次对数据进行计算,将计算得到的散列值与接收到的散列值进行比较,若相同,则表明数据没有被篡改。数据的完整性可以保证。
  2. 非对称加密算法交换密钥
    在ssl握手的过程中使用非对称加密算法,这样可以保证中间数据即使被劫持,对方因为没有私钥而无法得知数据内容。为什么只在握手过程中使用,而不一直在传输过程中使用,这是因为非对称加密算法的相比于对称加密算法慢的多。
  3. 对称加密算法来加密数据
    对称加密算法用在当ssl连接已经建立之后,所传输数据的加密。
  4. 数字证书证明服务器或客服端身份(网银证书就是客户端证书)
    HTTPS连接建立前通常需要通过验证服务器证书来判断当前服务器是否真是拥有用户所访问的服务器(域名)。而对于银行系统来说,服务器端需要验证当前的访问者证明自己拥有当前的账户,避免用户财产损失,这里就用到了客户端证书。证书是需要第三方权威机构颁发的(即使用了该机构公钥进行签名),浏览器对于不认识的证书颁发机构会警告。

HTTPS连接建立过程

  1. 客户端发起HTTPS连接请求,发起请求的端口号为443,请求中包含一个随机数NUM1,支持的加密协议及版本。
  2. 服务器接收到连接请求,接收到了SUM1数据并存储起来。服务器返回给客户端另一个随机数NUM2,同时向客户端传输自己的数字证书(证书包含服务端公钥)以及选定的加密协议。
  3. 客户端拿到NUM2保存,同时接收到数字证书,实例上这个证书是一个证书链,包含当前服务器证书,以及颁发该证书的第三方机构的证书,甚至包含第三方机构证书的颁发者的证书。越往上,权威性越大,直至本利浏览器默认保存的证书颁发机构。网站证书1 -> 证书1的颁发者的证书2 -> 证书2的颁发者的证书3 -> ··· -> 浏览器的根证书
    浏览器会递归的验证这些证书的有效性,首先证书中域名必须包含当前访问的地址域名。
    • 使用网站证书的颁发者的公钥对网站证书的签名字段进行验证(这里用到的就是RSA非对称加密算法),因为签名是颁发者使用自己的私钥加密生成的,使用颁发这的公钥可以解密该信息,将得到的结果与证书内容,如果一致,则表明该证书确实是该证书颁发者颁发的。如果不一致,说明签名是伪造的或者内容已被篡改。
    • 递归的使用上述方法颁发者证书的是否有效直至根证书。
  4. 上面就完成了客户端对服务器的验证,接下来,客户端再次生成一个随机数NUM3,这时使用服务器提供的公钥对NUM3进行加密得到一个加密数据secret。同时使用约定好的算法对NUM1,NUM2,NUM2进行计算生成一个对称加密的密钥。
  5. 服务器接收到secret之后,使用私钥对其解码得到NUM3,这个时候服务器也知道拥有了NUM1,NUM2,NUM3三个数字,同样可以生成对称加密的密钥。
    6.SSL握手完成,后续的通信使用对称加密密钥来进行加密。
posted @ 2018-09-19 16:24  lyk_109  阅读(534)  评论(0编辑  收藏  举报