• HTTP与HTTPS


    HTTP

    HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol)。顾名思义,HTTP 协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消,具体来说,主要是来规范浏览器和服务器端的行为的。
    并且,HTTP 是一个无状态(stateless)协议, 无状态是指客户机(Web 浏览器)和服务器之间不需要建立持久的连接 。

    HTTP优点:

    • 扩展性强、速度快、跨平台支持性好。

    传输流程:

    1. 地址解析:会先从地址栏中解析出协议名、主机名、 端口、对象路径等部分 。在这一步,需要域名系统DNS 解析域名 ,得到主机的 IP 地址。
    2. 封装HTTP请求数据包,交付运输层
    3. 封装TCP包,建立TCP连接(三次握手)
    4. 浏览器发送请求命令
    5. 服务器响应
    6. 关闭TCP连接
    • 服务器关闭 TCP 连接:一般情况下,一旦 Web 服务器向浏览器发送了请求数据,它就要关闭 TCP 连 接,然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive,TCP 连接在发送 后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求 建立新连接所需的时间,还节约了网络带宽。

    HTTPS

    HTTP 有以下安全性问题:

    • 使用明文进行通信,内容可能会被窃听;
    • 不验证通信方的身份,通信方的身份有可能遭遇伪装;
    • 无法证明报文的完整性,报文有可能遭篡改。

    HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,SSL所用端口为 443 ,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。
    通过使用 SSL,HTTPs 具有了加密(防窃听)认证(防伪装)完整性保护(防篡改)
    在这里插入图片描述

    传输流程:
    1. 建立连接获取证书(包含服务器端公钥)

    • SSL 客户端通过 TCP 和服务器建立连接之后(443 端口),并且在一般的 tcp 连接协商(握 手)过程中请求证书。即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL 的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书 的公司,公共秘钥)。

    2. 证书验证

    • Client 在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。

    3. 数据加密和传输(使用非对称加密传输对称秘钥)

    • 如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信。

    HTTPS的缺点:

    • 因为需要进行加密解密等过程,因此速度会更慢;
    • 需要支付证书授权的高额费用。

    对称加密和非对称加密

    对称加密

    对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。

    • 优点: 运算速度快;
    • 缺点: 无法安全地将密钥传输给通信方。

    在这里插入图片描述

    非对称加密

    非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥
    公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密
    非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

    • 优点: 可以更安全地将公开密钥传输给通信发送方;
    • 缺点: 运算速度慢。
      在这里插入图片描述

    HTTPS使用加密方式

    HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥)

    认证

    通过使用 证书 来对通信方进行认证。
    数字证书认证机构(CA,Certificate Authority) 是客户端与服务器双方都可信赖的第三方机构。

    服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

    进行 HTTPs 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

    通信开始时,客户端需要使用服务器的公开密钥将对称秘钥传输给服务器,之后再进行对称密钥加密。

    用户申请SSL证书,CA机构签发后,会在证书中提供公钥和私钥,用户在服务器上安装部署就可以了

    总结:两者区别

    • 端口号 :HTTP 默认是 80,HTTPS 默认是 443。
    • URL 前缀 :HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
    • 安全性和资源消耗 : HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源
  • 相关阅读:
    Docker容器搭建本地私有仓库
    8、MySQL——数据的完整性
    Redis集群模式和常用数据结构
    什么是微服务?
    分布式下使用雪花算法生成全局ID及解决时钟回拨问题
    排查log4j不输出日志到文件的问题
    计算机网络---应用层概述
    记一次centos磁盘扩容
    K最邻近法KNN分类算法(多点分类预测)
    C# --- 坦克大战项目(1)--- 类型转换与多线程
  • 原文地址:https://blog.csdn.net/weixin_52797128/article/details/126313218