个人主页:小韩学长yyds-CSDN博客
⛺️ 欢迎关注:点赞 留言 收藏
箴言:拥有耐心才是生活的关键
目录
HTTP 与 HTTPS 基础概念
HTTP 与 HTTPS 的区别
安全性
端口号
性能
部署成本
搜索引擎和浏览器偏好
HTTP 与 HTTPS 工作原理对比
HTTP 工作原理
HTTPS 工作原理
应用场景与案例分析
适用场景
案例分析
HTTP,即超文本传输协议(Hypertext Transfer Protocol) ,是一种用于分布式、协作式和超媒体信息系统的应用层协议,也是万维网的数据通信的基础。它采用请求 - 响应模型,由客户端发起请求,服务器作出响应 。比如我们在浏览器中输入网址访问网页,浏览器就是客户端,向服务器发送 HTTP 请求,服务器收到请求后,将对应的网页内容返回给浏览器,这就是一次 HTTP 通信过程。HTTP 协议在设计上较为简单,它允许将超文本标记语言(HTML)文档在 Web 服务器之间传输,使得我们能够方便地浏览网页、获取信息,其包含的命令和传输信息不仅可用于 Web 访问,也可用于其他因特网 / 局域网应用系统之间的通信,实现各类应用资源超媒体访问的集成 。不过,HTTP 协议有一个比较明显的缺点,就是它以明文形式传输数据,在数据传输过程中,如果被第三方截获,数据内容就会暴露无遗,存在安全风险。
HTTPS,即超文本传输安全协议(Hypertext Transfer Protocol Secure) ,是在 HTTP 的基础上加入了 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议,用于对数据进行加密传输,确保数据的机密性、完整性和身份验证。简单来说,HTTPS 就像是给 HTTP 通信穿上了一层 “安全铠甲”,让数据在传输过程中更加安全可靠。例如在网上购物时,当我们输入银行卡号、密码等敏感信息进行支付操作时,使用 HTTPS 协议可以防止这些信息被黑客窃取或篡改,保障我们的财产安全 。它通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护,被广泛用于万维网上安全敏感的通讯,如交易支付、登录验证等场景 。
HTTP 协议以明文形式传输数据,这就好比在一个透明的管道中传递信息,数据在传输过程中完全暴露在外。如果网络中存在恶意攻击者,他们可以轻松地通过抓包工具拦截传输的数据包,读取其中的内容,比如用户的登录账号、密码、银行卡信息等,这就导致了信息泄露的风险 。此外,攻击者还可以篡改传输的数据,比如修改商品价格、订单信息等,从而造成用户和网站的损失。
而 HTTPS 协议则通过 SSL/TLS 协议对数据进行加密传输。在建立连接时,客户端和服务器会进行一系列的握手过程,协商出加密算法和密钥。之后,数据在传输过程中会被加密成密文,即使被第三方截获,由于没有正确的密钥,攻击者也无法解密出原始数据,从而保障了数据的机密性 。同时,SSL/TLS 协议还使用数字证书来验证服务器的身份,防止中间人攻击,确保通信双方的身份真实可靠 。例如,当我们访问淘宝、支付宝等涉及重要信息的网站时,浏览器地址栏会显示一个小锁图标,表示当前连接是安全的,这就是 HTTPS 在发挥作用。
HTTP 协议默认使用 80 端口进行通信,这个端口号就像是 HTTP 协议的 “门牌号”,当客户端向服务器发送 HTTP 请求时,默认会通过 80 端口与服务器建立连接。这是因为在早期的互联网发展中,80 端口被分配给 HTTP 协议,成为了一种约定俗成的标准 ,使得 Web 浏览器和 Web 服务器能够直接进行通信,无需额外的端口号指定,为用户在输入网址时提供了便利性 。
HTTPS 协议默认使用 443 端口,这个端口的分配也是由互联网号码分配机构(IANA)进行管理和规定的 。与 HTTP 不同,HTTPS 使用 443 端口是为了与 HTTP 进行区分,同时也因为 SSL/TLS 协议需要在特定的端口上进行通信,以实现数据的加密传输和安全验证。在服务器配置中,需要专门为 443 端口设置监听,以处理 HTTPS 请求。例如,当我们在浏览器中输入 “https://www.baidu.com” 时,浏览器会自动通过 443 端口与百度服务器建立 HTTPS 连接,确保数据传输的安全。
由于 HTTP 协议不需要进行加密和解密操作,其通信过程相对简单,所以在性能方面,HTTP 的传输速度通常比 HTTPS 快,开销也较小。例如,在访问一些静态页面时,HTTP 协议可以快速地将页面内容传输给客户端,用户能够迅速看到网页的内容。
然而,HTTPS 协议在数据传输前需要进行加密操作,在接收数据后需要进行解密操作,这些加密和解密过程会消耗一定的计算资源和时间,导致 HTTPS 的握手过程比 HTTP 更复杂,可能会增加一些传输延迟 。特别是在处理大量数据或服务器性能有限的情况下,这种性能差异可能会更加明显。不过,随着硬件性能的不断提升和加密算法的优化,现代 HTTPS 的性能已经有了显著提升,与 HTTP 之间的性能差距也越来越小。例如,现在许多服务器都配备了高性能的 CPU 和专门的加密加速硬件,能够快速地处理 HTTPS 的加密和解密任务,使得用户在访问 HTTPS 网站时几乎感受不到性能上的差异。
HTTP 协议的部署相对简单,它不需要额外的证书支持,只需要配置好服务器相关参数,就可以正常提供服务,成本较低。这使得一些小型网站或对安全性要求不高的网站更倾向于使用 HTTP 协议,因为这样可以降低运营成本,快速搭建网站并上线服务。
而 HTTPS 协议为了实现数据的加密传输和身份验证,需要购买 SSL/TLS 证书。SSL/TLS 证书通常由第三方证书颁发机构(CA)颁发,这些机构会对申请证书的网站进行严格的身份验证,确保证书的真实性和安全性。购买证书的费用因证书的类型、品牌和有效期而异,一般来说,知名 CA 颁发的证书价格相对较高,而一些免费的 CA(如 Let’s Encrypt)也可以提供基本的证书服务,但在功能和信任度上可能会有所差异 。除了购买证书的费用,部署 HTTPS 还需要对服务器进行相应的配置和维护,以确保证书的有效性和安全性,这也增加了一定的技术成本和管理成本。例如,企业网站如果要使用高级的通配符 SSL 证书,每年可能需要支付数千元的证书费用,同时还需要安排专业人员进行证书的管理和服务器的维护。
在当今的互联网环境下,搜索引擎和浏览器对 HTTPS 协议都表现出了明显的偏好。以 Google 为代表的搜索引擎,已经明确将 HTTPS 作为网站排名的一个重要因素 。这意味着,使用 HTTPS 协议的网站在搜索结果中往往会获得更高的排名,从而更容易被用户发现和访问。这是因为搜索引擎认为 HTTPS 协议能够提供更安全的浏览体验,保护用户的数据隐私,符合用户的利益和需求 。例如,当用户在 Google 上搜索关键词时,使用 HTTPS 的网站可能会优先展示在搜索结果的前列,而 HTTP 网站的排名可能会相对靠后。
同时,现代浏览器对于 HTTPS 网站也给予了更多的信任和优化。当用户访问 HTTP 网站时,一些浏览器(如 Chrome、Firefox 等)会在地址栏中显示 “不安全” 的标识,这会让用户对网站的安全性产生担忧,从而降低用户对网站的信任度 。而访问 HTTPS 网站时,浏览器会显示安全锁图标等信任标记,让用户能够直观地感受到网站的安全性,提升用户体验和信任度 。此外,浏览器还会对 HTTPS 网站的加载速度、资源加载等方面进行优化,进一步提高用户访问 HTTPS 网站的体验。
HTTP 的工作原理基于客户端 - 服务器模型,其通信流程可以大致分为以下几个步骤:
- 建立 TCP 连接:客户端(如 Web 浏览器)与服务器之间需要先建立 TCP 连接。这是基于 TCP/IP 协议进行的,HTTP 协议默认使用 80 端口。建立连接时会经历 TCP 的三次握手过程,通过三次握手,客户端和服务器双方确认彼此的发送和接收能力,确保双方都已准备好进行数据传输 。例如,当我们在浏览器中输入一个 HTTP 网址时,浏览器首先会与目标服务器的 80 端口建立 TCP 连接。
- 客户端发送请求:一旦 TCP 连接建立成功,客户端就会向服务器发送 HTTP 请求。这个请求包含请求行、请求头部和可选的请求体。请求行中包含请求方法(如 GET、POST、PUT、DELETE 等,其中 GET 用于获取资源,POST 常用于提交数据 )、请求的 URL 以及 HTTP 协议版本(如 HTTP/1.1 )。请求头部则包含了许多附加信息,例如 User - Agent(用于标识客户端的类型和版本,如 Chrome 浏览器的 User - Agent 可能是 “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36”,服务器可以根据这个信息来为不同类型的客户端提供适配的内容 )、Accept(告诉服务器客户端能够接受的响应内容类型,如 text/html 表示接受 HTML 格式的文本 )等。如果是 POST 请求,还会有请求体,请求体中可以包含用户提交的表单数据、JSON 数据等 。比如,当我们在电商网站上搜索商品时,浏览器会向服务器发送一个 GET 请求,请求行中包含搜索的 URL,请求头部包含浏览器信息等,服务器根据这些信息来返回搜索结果。
- 服务器处理请求:服务器接收到客户端的请求后,会对请求进行解析和处理。服务器首先解析请求行和请求头部,了解客户端的需求和相关信息。然后根据请求的 URL,服务器在其资源空间中查找对应的资源。如果是动态资源(如 JSP、PHP 页面等),服务器可能需要执行相关的脚本代码,查询数据库等操作来生成最终的响应内容 。例如,在一个论坛网站中,当服务器接收到查看某个帖子详情的请求时,它会根据请求中的 URL 找到对应的帖子数据,可能从数据库中查询帖子的标题、内容、作者等信息,然后进行相应的处理和组装。
- 服务器发送响应:服务器处理完请求后,会向客户端发送 HTTP 响应。响应同样包含响应行、响应头部和响应体。响应行中包含 HTTP 协议版本、状态码(如 200 表示请求成功,404 表示未找到资源,500 表示服务器内部错误等 )和状态消息。响应头部包含了关于服务器和响应内容的一些信息,如 Content - Type(指示响应体的内容类型,若为 “text/html” 则表示是 HTML 文档 )、Content - Length(表示响应体的长度,以字节为单位 )等。响应体则是服务器返回给客户端的实际数据,可能是 HTML 页面、JSON 数据、图片、文件等 。比如,当我们访问一个新闻网站的文章页面时,服务器返回的响应体就是该文章的 HTML 内容,客户端浏览器接收到后就可以解析并显示出文章。
- 关闭 TCP 连接:一般情况下,当服务器发送完响应数据后,就会关闭 TCP 连接。不过在 HTTP/1.1 及以上版本中,如果请求和响应头中包含 “Connection: keep - alive” 字段,TCP 连接会保持打开状态,这样客户端可以通过同一个连接发送多个请求,减少了建立连接的开销,提高了传输效率 。例如,在浏览一个包含多个图片和资源的网页时,如果使用了持久连接,浏览器可以通过同一个 TCP 连接依次请求这些资源,而不需要每次都重新建立连接。
需要注意的是,HTTP 是一种无状态协议,这意味着服务器不会记住客户端之前的请求信息 。每次请求都是独立的,服务器无法区分这是同一个客户端的连续请求还是不同客户端的请求。例如,用户在电商网站上添加商品到购物车,当用户再次发送请求查看购物车时,服务器不会自动识别出这是之前添加商品的同一个用户,需要通过其他机制(如 Cookie、Session 等)来跟踪用户的状态 。
HTTPS 的工作原理基于 HTTP 协议,并引入了 SSL/TLS 协议来实现数据的加密传输和身份验证,其过程相对复杂,主要包括以下几个关键阶段:
- 客户端发起 HTTPS 请求:客户端(通常是浏览器)通过输入以 “https://” 开头的网址,向服务器发起 HTTPS 请求 。这个请求和 HTTP 请求类似,但它使用的是 HTTPS 协议,默认会尝试连接到服务器的 443 端口。例如,当我们在浏览器中访问 “https://www.taobao.com” 时,浏览器就会向淘宝服务器的 443 端口发送 HTTPS 请求。
- 服务器发送 SSL 证书:服务器在接收到客户端的 HTTPS 请求后,会向客户端发送一个 SSL 证书(也可以是 TLS 证书 )。这个证书是由第三方证书颁发机构(CA,Certificate Authority)颁发的,它包含了服务器的公钥、证书颁发机构的信息、证书的有效期、服务器的域名等关键信息 。公钥将用于后续的加密过程中的密钥交换。例如,淘宝服务器会将其从知名 CA 机构(如 Symantec、Comodo 等)申请到的 SSL 证书发送给浏览器,证书中包含了淘宝服务器的公钥以及 CA 机构对该证书的数字签名。
- 客户端验证 SSL 证书:客户端收到服务器发送的 SSL 证书后,会进行一系列严格的验证操作。首先,客户端会检查证书的颁发机构是否在其信任列表中,这个信任列表通常是由操作系统或浏览器预先设置好的,包含了一些知名且被信任的 CA 机构 。例如,主流浏览器会内置一些大型 CA 机构的根证书,如 DigiCert、GlobalSign 等,如果证书是由这些被信任的 CA 颁发的,那么第一步验证就初步通过。其次,客户端会检查证书是否过期,证书的有效期在证书信息中明确标注,如果证书已经过期,客户端会提示用户证书存在风险 。然后,客户端会验证证书中的域名是否与自己请求的域名一致,这是为了防止中间人攻击,确保证书确实是属于目标服务器的。如果证书中的域名是 “www.baidu.com”,而客户端请求的是 “www.google.com”,那么证书验证就会失败 。只有当所有这些验证步骤都通过后,客户端才会信任这个证书,继续后续的通信。
- 密钥交换,建立非对称加密会话:如果 SSL 证书验证通过,客户端会生成一个随机的对称密钥,也称为会话密钥(Session Key) 。这个会话密钥将用于后续的数据传输过程中的对称加密,因为对称加密算法的加密和解密速度快,适合大量数据的加密传输 。然后,客户端使用服务器证书中的公钥对这个对称密钥进行加密。由于公钥是公开的,任何人都可以获取,但只有拥有对应的私钥(服务器持有)才能解密,所以这种方式确保了对称密钥在传输过程中的安全性 。客户端将加密后的对称密钥发送给服务器。服务器收到加密后的对称密钥后,使用自己的私钥进行解密,从而获取到这个对称密钥。至此,客户端和服务器都拥有了相同的对称密钥,为后续的数据加密传输做好了准备 。例如,浏览器生成一个随机的 128 位对称密钥,使用淘宝服务器证书中的公钥对其加密后发送给淘宝服务器,淘宝服务器用自己的私钥解密得到这个对称密钥。
- 数据传输:在密钥交换完成后,客户端和服务器之间将使用这个对称密钥对传输的数据进行加密和解密 。当客户端向服务器发送数据时,会使用对称密钥对数据进行加密,然后将密文发送给服务器。服务器接收到密文后,使用相同的对称密钥进行解密,得到原始数据 。反之,服务器向客户端发送数据时也是同样的过程。由于对称加密的速度远快于非对称加密,因此这种方式可以大大提高数据传输的效率 。同时,为了确保数据的完整性,HTTPS 还使用消息认证码(MAC,Message Authentication Code)等机制。MAC 是基于密钥的哈希函数,它对传输的数据进行计算,生成一个固定长度的摘要。发送方将数据和摘要一起发送给接收方,接收方使用相同的密钥和哈希函数对收到的数据进行计算,得到一个新的摘要,并与发送方发送的摘要进行对比 。如果两个摘要一致,说明数据在传输过程中没有被篡改,保证了数据的完整性 。例如,在网上银行进行转账操作时,用户输入的转账金额、账号等信息会被浏览器使用对称密钥加密后发送给银行服务器,服务器解密后进行处理,然后将处理结果加密返回给浏览器,同时双方都会使用 MAC 机制来验证数据的完整性。
- 连接关闭:当数据传输完成后,客户端和服务器可以根据需要关闭连接 。与 HTTP 类似,如果在通信过程中使用了持久连接(通过设置相关的头部字段),连接可以保持一段时间,以便进行后续的请求和响应 。
由于 HTTP 协议具有传输速度快、开销小、部署简单等特点,使其在一些对数据安全性要求不高的场景中表现出色。例如,新闻资讯类网站,其主要目的是向用户快速传递新闻内容,这些新闻信息大多是公开的,不涉及用户的敏感隐私,使用 HTTP 协议能够快速地将新闻页面加载到用户的浏览器中,提升用户获取信息的效率 。再如一些简单的企业宣传网站,主要展示企业的基本信息、产品介绍等内容,采用 HTTP 协议即可满足需求,并且可以降低网站的建设和运营成本 。
而 HTTPS 协议凭借其强大的加密和身份验证功能,成为了处理敏感信息场景的首选。在网上银行系统中,用户进行登录、转账、查询账户余额等操作时,会涉及大量的个人敏感信息,如银行卡号、密码、身份证号等,使用 HTTPS 协议可以确保这些信息在传输过程中不被窃取或篡改,保障用户的资金安全和个人隐私 。同样,在电商购物平台上,用户在进行商品购买、支付订单等操作时,需要提交个人收货地址、支付密码等重要信息,HTTPS 协议能够为这些交易过程提供安全保障,增强用户对平台的信任度 。另外,像电子邮件服务,当用户发送包含重要商业机密或个人隐私内容的邮件时,使用 HTTPS 协议进行传输,可以防止邮件内容被第三方截取,确保通信的安全性 。
以百度为例,百度曾经主要使用 HTTP 协议,但随着网络安全的重要性日益凸显,百度逐步将网站迁移到 HTTPS 协议 。百度迁移到 HTTPS 主要有以下几个原因:一是出于对用户数据安全的保护,百度拥有庞大的用户群体,用户在使用百度搜索、百度网盘等服务时,会产生大量的个人数据和搜索记录等信息,采用 HTTPS 可以有效防止这些数据在传输过程中被泄露或篡改 。二是为了提升用户体验和信任度,现代用户对网络安全越来越重视,当用户看到浏览器地址栏显示的 “不安全” 标识时,可能会对网站产生不信任感,而迁移到 HTTPS 后,浏览器会显示安全锁图标,增强了用户对百度的信任,有助于提升用户的留存率和使用频率 。三是搜索引擎排名的因素,百度自身作为搜索引擎,深知 HTTPS 协议对网站排名的积极影响,使用 HTTPS 可以在搜索结果中获得更好的展示位置,吸引更多用户访问 。
百度迁移到 HTTPS 后,带来了诸多积极影响。从用户角度来看,用户的数据得到了更好的保护,在使用百度服务时更加放心,提升了用户的满意度和忠诚度 。从百度自身来看,迁移到 HTTPS 有助于提升百度的品牌形象,使其在用户心中树立起更加安全可靠的品牌形象,同时也符合行业发展的趋势,增强了百度在搜索引擎市场的竞争力 。此外,百度的安全性提升也减少了因数据泄露等安全问题可能带来的法律风险和经济损失 。
再看淘宝,淘宝作为全球知名的电商平台,涉及海量的用户交易数据和敏感信息,早已全面采用 HTTPS 协议 。淘宝迁移到 HTTPS 的原因主要是为了保障用户的购物安全,在电商交易中,用户的个人信息、支付信息等至关重要,一旦泄露可能会给用户带来严重的经济损失 。通过 HTTPS 协议,淘宝确保了这些信息在传输过程中的机密性、完整性和身份验证,有效防止了黑客攻击、中间人攻击等安全威胁 。同时,随着电商行业竞争的日益激烈,用户对购物安全的要求越来越高,采用 HTTPS 也是淘宝提升自身竞争力的重要举措,能够吸引更多用户选择在淘宝平台购物 。
淘宝全面采用 HTTPS 后,取得了显著的成效。一方面,极大地提高了用户在购物过程中的安全感,促进了用户的消费行为,推动了淘宝业务的持续增长 。另一方面,减少了因安全问题导致的交易纠纷和用户投诉,降低了运营成本,提升了平台的运营效率 。并且,HTTPS 的使用也有助于淘宝在国际市场上拓展业务,提升其在全球电商领域的影响力和声誉 。
结语
如果此文对你有帮助的话,欢迎关注、点赞、⭐收藏、✍️评论,支持一下博主~