zoukankan      html  css  js  c++  java
  • https 原理

    https 是在http协议基础上用ssl协议封装加密。ssl协议目前发展到了3.0。根据ssl3.0的升级版,出现了TSL协议。实际上https用的是TSL。
    https协议的通信过程用到了对称加密,非对称加密和哈希算法。

    假设有客户端c和网站w。 那么https的交流过程大致如下:

    c: 我想和你安全的通话,我这里的对称加密算法有DES,RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA (浏览器告诉网站自己支持的加密方式)
    
    w: 我们用DES-RSA-SHA这对组合好了, 这是我的证书请查验。(网站选出一组加密方法,并且把证书发给客户端)
    
    c:(证书的验证过程随后再说,证书包含了网站地址,加密公钥,以及证书的颁发机构等信息。 所以验证证书可信后,浏览器要做以下事情:
        1. 生产对称加密用的密钥 m1 。并把该密钥用网站的公钥加密。 该对称加密密钥m1以后用来加密双方通话内容。
        2. 生成一个随机消息,用hash算法 SHA 生成一个哈希值,并且把消息加密。
        3. 把加密后的m1 , 哈希值,及加密后的消息发送给网站)
    
    w: (网站要做如下事情:
        1. 用自己的私钥解密出浏览器使用的对称密钥 m1。
        2. 用m1解密浏览器发送的消息,并且计算hash值,跟浏览器发送的hash值比较。
        3. 使用密码m1加密一段握手消息,发送给浏览器)
    
    c: (浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致 则握手结束)
    

    整个握手过程主要为了让双方都获得一个可以使用的对称加密密钥。并且真正的尝试通讯一次。

  • 相关阅读:
    32/64位平台printf uint64的方法
    [Linux 安装]centos安装vmware tools
    【Linux】fg bg ctrl + z jobs & 等命令
    让我们慢慢地彼此遗忘
    ctrl+c,ctrl+d,ctrl+z在linux中意义
    Windows 7 右键菜单 添加命令
    修改vs2010所有工程的include目录和lib目录
    Vmware虚拟机的linux与主机共享
    防止atoi函数内存越界
    JavaScriptSerializer使用条件
  • 原文地址:https://www.cnblogs.com/kramer/p/5976556.html
Copyright © 2011-2022 走看看