• HTTPS和SSL握手过程(转载)


    https介绍

    HTTPS = HTTP + 一组对称、非对称和基于证书的加密技术 
    HTTPS是最常见的HTTP安全版本。它得到了很广泛的应用,所有主要的商业浏览器和服务器都提供HTTPS。HTTPS将HTTP协议与一组强大的对称、非对称和基于证书的加密技术结合在一起,使得HTTPS不仅很安全,而且很灵活,很容易在出于无序状态的、分散的全球互联网上进行管理

    https与http连接过程区别

    https与http连接过程区别 
    这里写图片描述

    https的优势:

    1. 通讯过程的hash生成的摘要,保证数据完整性
    2. 握手过程的非对称加密,传输过程的对称加密,保证数据私密性
    3. 证书保证双方身份的真实性

    https大致过程

    1. 建立服务器443端口连接
    2. SSL握手:随机数,证书,密钥,加密算法
    3. 发送加密请求
    4. 发送加密响应
    5. 关闭SSL
    6. 关闭TCP

    SSL握手大致过程:

    1. 客户端发送随机数1,支持的加密方法(如RSA公钥加密)
    2. 服务端发送随机数2,和服务器公钥,并确认加密方法
    3. 客户端发送用服务器公钥加密的随机数3
    4. 服务器用私钥解密这个随机数3,用加密方法计算生成对称加密的密钥给客户端,
    5. 接下来的报文都用双方协定好的加密方法和密钥,进行加密

    SSL握手详细过程:

    一、客户端发出加密通信请求ClientHello

    提供: 
    1,协议版本(如TSL1.0) 
    2,随机数1(用于生成对话密钥) 
    3,支持的加密方法(如RSA公钥加密) 
    4,支持的压缩方法

    二、服务器回应SeverHello

    回应内容: 
    1,确认使用的加密通信协议版本(TSL1.0) 
    2,随机数2(用于生成对话密钥) 
    3,确认加密方法(RSA) 
    4,服务器证书(包含非对称加密的公钥) 
    5,(可选)要求客户端提供证书的请求

    三、客户端验证证书

    如果证书不是可信机构颁布,或证书域名与实际域名不符,或者证书已经过期,就会向访问者显示一个警告,是否继续通信

    四、客户端回应

    证书没有问题,就会取出证书中的服务器公钥 
    然后发送: 
    1,随机数3(pre-master key,此随机数用服务器公钥加密,防止被窃听) 
    2,编码改变通知(表示随后的信息都将用双方商定的方法和密钥发送) 
    3,客户端握手结束通知

    五、双方生成会话密钥

    双方同时有了三个随机数,接着就用事先商定的加密方法,各自生成同一把“会话密钥” 
    服务器端用自己的私钥(非对称加密的)获取第三个随机数,会计算生成本次所用的会话密钥(对称加密的密钥),如果前一步要求客户端证书,会在这一步验证

    六、服务器最后响应

    服务器生成会话密钥后,向客户端发送: 
    1,编码改变通知(后面的信息都用双方的加密方法和密钥来发送) 
    2,服务器握手结束通知

    至此,握手阶段全部结束,接下来客户端与服务器进入加密通信,用会话密钥加密内容

  • 相关阅读:
    【PHP框架CodeIgniter学习】使用辅助函数—建立自己的JSONHelper
    mysql将字符转换成数字
    ***微信浏览器禁止app下载链接怎么办
    十分钟帮你拿到500万天使轮!手把手教你写商业计划书【干货】
    ***PHP各种编码的汉字字符串截取
    Nginx与Redis解决高并发问题
    hrtimer的简单使用 + 原理和实现【转】
    2.6 内核中的计时器和列表【转】
    Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt【转】
    kthread_create与kernel_thread的区别【栈】
  • 原文地址:https://www.cnblogs.com/jjzd/p/9346260.html
Copyright © 2020-2023  润新知