美文网首页
http请求

http请求

作者: flovm | 来源:发表于2017-03-03 20:18 被阅读0次

    http和https区别

    1、什么是http协议?

    http协议就是超文本传输协议,它完成客户端到服务端等一系列运作流程

    1.1 与http关系密切的协议: IP, TCP和DNS

    负责传输的IP协议

    ip协议是数据网络层协议,IP协议的作用就是把各种数据包传输给对方,而要把数据包传输给指定地址需要有各种限制,其中最重要的就是IP地址和MAC地址。

    IP地址指明了节点被分配到的地址, MAC地址是指网卡所指的固定地址. IP地
    址和MAC地址进行配对, IP地址可以变换, 但是MAC地址基本不会更改.

    确保可靠性的TCP协议

    TCP位于传输层, 提供可靠的字节流服务

    字节流服务: 为了方便传输, 将大块数据分割成以报文段为单位的数据包进行管理.

    为了确保无误将数据送达目标处, TCP协议采用了三次握手策略.当然除了三次握手策略, 还有很多其他的手段保证通讯的可靠性

    负责域名解析的DNS服务

    DNS协议和http协议一样是应用层的协议,提供了IP地址和域名之间的解析服务。

    因为记住一组纯数字太难了, 而字母加数字才是人类习惯的方式,为了解决这个问题, DNS服务营运而生.

    2. HTTP的缺点

    • 通信使用明文(不加密), 内容可能会被窃听
    • 不验证通信方的身份, 因此有可能遭遇伪装
    • 无法证明报文的完整性, 所有有可能已遭篡改

    3.HTTP+加密+认证+完整性保护 = HTTPS

    HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分用SLL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代而已.

    通常, HTTP直接和TCP通信, 当使用SSL时, 演变成了先和SSL通信, 再由SSL和TCP通信了, 简而言之, 所谓HTTPS, 其实就是身披SSL协议的这层外壳的HTTP.

    在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性的保护这些功能.

    SSL是独立于HTTP的协议, 所有不光是HTTP协议, 其他运行在应用层的SMTP(邮件协议)和Telnet等协议均可配合SSL协议使用. 可以说SSL是当今世界上应用最广泛的网络安全技术.(也就是说https协议只是对http协议进行了一次ssl协议加密的过程)

    4.SSL是如何加密的

    SSL采用一种叫做公开密钥加密(Public-key cryptography)的加密方式.

    近代的加密方法中, 加密算法是公开的, 而秘钥是保密的, 通过这种方式得以保持加密方法的安全性.

    加密和解密同用一个密钥的方式称为共享密钥加密, 也被叫做对称密钥加密.

    公开密钥加密使用一对非对称的密钥. 一把叫做私有密钥, 另一把叫做公开密钥

    使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 在使用自己的私有密钥进行解密. 利用这种方式, 不需要发送用来解密的私有密钥, 也不用担心密钥被攻击者窃听而盗走.

    另外, 要想根据密文和公开密钥, 恢复到信息原文是异常困难的, 因为解密过程就是在对离散对数进行求值, 这并非轻而易举就能办到的. 退一步讲, 如果能对一个非常大的整数做到快速地因式分解, 那么密码还是在存在希望的, 但就目前的技术来看是不太现实的.

    HTTPS采用混合加密机制

    HTTPS采用对称加密 和 非对称加密两者并用的混合加密机制. 若密钥能够实现安全交换, 那么有可能会考虑仅适用非对称加密来通信. 但是非对称加密和对称加密算法相比, 其处理速度要慢.

    所以应充分利用两者各自优势, 将多种方法组合起来用于通信. 在交换密钥环节适用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密方式.


    https加密原理:
    由于非对称加密和对称加密相比,处理速度要慢一些,https加密时候使用对称加密对内容进行加密,然后使用服务端给的非对称加密的公钥对对称加密的秘钥进行加密然后将加密后的秘钥和加密后的数据一起传给服务器。服务器可以使用私钥解密对称加密的秘钥后吧内容解密,就完成了一次加解密过程。


    5.证明公开密钥的正确性的证书(用来保证非对称加密的秘钥就是服务器给的秘钥)

    遗憾的是, 公开密钥加密方式还是存在一些问题的, 那就是无法证明公开密钥本身就是货真价实的公开密钥. 比如, 正准备和某台服务器建立公开密钥加密方式下的通信时, 如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥. 或许在公开密钥传输途中, 真正的公开密钥已经被攻击者替换了.

    为了解决上述问题, 可以使用有数字证书认证机构和其他相关机关颁发的公开密钥证书

    基本流程为:

    1. 服务器把自己的公开密钥登录至数字证书认证机构
    2. 数字证书认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书
    3. 客户端拿到服务器的公钥证书后, 使用数字证书认证机构的公开密钥, 向数字证书认证机构验证公钥证书上的数字签名, 以确认服务器的公开密钥的真实性
    4. 使用服务器的公开密钥对报文加密后发送
    5. 服务器用私有密钥对报文解密

    6.SSL速度慢吗?

    由于HTTPS还需要做服务器,客户端双方加密及解密处理, 因此会消耗CPU和内存等硬件资源, 和HTTP通信相比, SSL通信部分消耗网络资源. 而SSL通信部分, 有因为要对通信进行处理, 所有时间上又延长了.

    针对速度慢这样一个问题, 并没有根本性的解决方案, 我们会使用SSL加速器这种(专用服务器)硬件来改善该问题. 相对软件来讲, 能够提高数倍SSL计算速度.

    7.为什么不一直使用HTTPS

    既然HTTPS那么的可靠安全, 那为何不所有的Web网站不一直使用HTTPS?

    其中的一个原因是, 因为与纯文本通信相比, 加密通信会消耗更多的CPU资源以及内存资源, 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定会随之减少.

    因此, 如果是非敏感信息则使用HTTP通信, 只有在包括个人信息等敏感数据时, 才利用HTTPS加密通信, 以节省资源. 除此之外, 想要节约购买证书的开销也原因之一.

    相关文章

      网友评论

          本文标题:http请求

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