美文网首页
前端笔记 — http与https

前端笔记 — http与https

作者: codingZero | 来源:发表于2020-06-13 15:32 被阅读0次

    一. 定义

    1.什么是HTTP?

    HyperText Transfer Protocol,超文本传输协议,它是TCP/IP协议的一个应用层协议,用来定义客户端与服务端通讯的格式

    2.什么是HTTPS?

    HTTPS是HTTP的安全版,即在应用层HTTP与传输层TCP之间多了一层加密层TLS/SSL。普通的HTTP通信,会直接将明文数据给到TCP进行传输,而HTTPS会先将数据给到TLS/SSL进行加密,然后将加密后的数据给到TCP进行通信

    二. HTTP与HTTPS的区别

    1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    三. HTTPS的工作原理

    1. 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
    2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
    3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
    4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
    5. Web服务器利用自己的私钥解密出会话密钥。
    6. Web服务器利用会话密钥加密与客户端之间的通信。

    四. HTTPS的优缺点

    1.优点:
    • 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
    • 由SSL+HTTP进行加密传输,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
    • HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
    2.缺点
    • HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;
    • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
    • SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;
    • SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名;

    五. SSL/TLS的协议的基本过程

    1. 客户端向服务器端索要并验证公钥。
    2. 双方协商生成"对话密钥"。
    3. 双方采用"对话密钥"进行加密通信。

    上面过程的前两步,又被称为“握手阶段”

    六. 握手阶段的详细过程

    “握手阶段”涉及四次通讯,且每次通信都是明文的

    1. 客户端发出请求(ClientHello)

    客户端向服务器发出加密通信的请求,并向服务器提供以下信息

    • 支持的加密协议版本,比如TLS 1.0版
    • 客户端生成的随机数,用于稍后生成“对话密钥”
    • 支持的加密算法,比如RSA公钥加密
    • 支持的压缩方法
    2. 服务器响应(SeverHello)

    服务器收到客户端请求后,向客户端发出回应,回应包含以下内容

    • 确认使用的加密通信协议版本,如果客户端与服务器支持的版本不一致,则关闭加密通信
    • 服务器生成的随机数,用于稍后生成“对话密钥”
    • 确认使用的加密算法,比如RSA公钥加密
    • 服务器证书
    3. 客户端回应

    客户端收到服务器回应后,首先验证证书的真实性与有效性。如果证书没有问题,客户端就会从证书中取出服务器的公钥,然后向服务器发送以下信息

    • 一个随机数,该随机数用服务器公钥加密,防止被窃听
    • 编码改变通知,表示随后的信息都将用双方协商的加密算法和密钥发送
    • 客户端握手结束通知,这一项也是前面发送的所有内容的hash值,用来供服务器校验
    4. 服务器的最后回应

    服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的“会话密钥”,然后向客户端发送下面信息

    • 编码改变通知,表示随后的信息都将用双方协商的加密算法和密钥发送
    • 服务器握手结束通知,这一项也是前面发送的所有内容的hash值,用来供客户端校验

    相关文章

      网友评论

          本文标题:前端笔记 — http与https

          本文链接:https://www.haomeiwen.com/subject/cuzatktx.html