一文彻底搞懂HTTPS

简介

今天我们要聊一聊HTTPS——一种保护我们在线通信安全的协议。或许你已经注意到,许多网站都在其URL中使用了“https://”,而不是传统的“http://”。这个“s”代表的是“安全”,意味着所有通过这些网站传输的数据都被加密,从而保护它们不被未授权的第三方窃取。

HTTPS是现代网络安全的一个标准,尤其在处理敏感数据时。与HTTP相比,HTTPS提供了加密传输和身份验证,这意味着它可以保护我们的数据免受中间人攻击,确保我们正在与真正的服务器通信,而不是被欺骗的假网站。

在接下来的内容中,我们将会深度了解HTTPS它如何工作,为什么它是网络安全的重要组成部分。

第一部分:HTTP与HTTPS的基本概念

1. HTTP的基本工作原理

在深入HTTPS之前,相信小伙伴们已经了解了HTTP(超文本传输协议)。HTTP是一种用于传输超文本(如网页)的协议。它基于请求-响应模式,客户端(通常是浏览器)向服务器发送请求,然后服务器回应请求,发送回网页的内容。如果对HTTP还不太了解的小伙伴可以自行查阅HTTP相关基础知识。

但是,HTTP有一个大问题——它是不安全的。在HTTP中,数据以明文形式传输,这意味着任何在客户端和服务器之间的节点都可以查看或修改这些数据。

2. HTTPS作为HTTP的安全版本

为了解决这个问题,HTTPS(安全超文本传输协议)应运而生。HTTPS实际上是HTTP的一个扩展,它通过将TLS(传输层安全性)或SSL(安全套接层)协议整合到HTTP中,来提供数据加密、服务器认证和数据完整性保护。

3. HTTP和HTTPS的主要区别

  • 加密:HTTPS使用TLS/SSL对数据进行加密,这意味着即使数据在传输过程中被拦截,攻击者也无法轻易解读这些数据。
  • 端口:HTTP通常使用80端口,而HTTPS使用443端口。
  • 性能:由于加密过程需要额外的计算,HTTPS可能比HTTP稍慢,但随着技术的发展,这种差异越来越小。
  • 安全性:最关键的区别在于安全性。HTTPS显著提高了数据传输的安全性,是现代网络通信中的首选方式。

第二部分:HTTPS的工作原理

1. HTTPS的加密机制

在HTTPS中,加密是保护数据的关键。这里涉及两种类型的加密方法:对称加密和非对称加密。

  • 对称加密:在这种方法中,加密和解密都使用相同的密钥。其优点是速度快,但缺点在于密钥的分发和管理。
  • 非对称加密:使用一对密钥,一个用于加密(公钥),另一个用于解密(私钥)。非对称加密更安全,但速度较慢。

HTTPS巧妙地结合了这两种方法:使用非对称加密进行初始的密钥交换,然后转而使用对称加密进行数据传输,平衡了安全性和性能。

2. 使用TLS/SSL协议

TLS(传输层安全性)和SSL(安全套接层)是加密协议,用于在网络中的两个端点之间建立加密连接。它们保证了在客户端和服务器之间传输的数据的机密性和完整性。

什么是SSL和TLS?

  • SSL(安全套接层):最初由Netscape开发,SSL是一种为网络通信提供安全和数据完整性的标准安全技术。它包括几个版本,从SSL 1.0到SSL 3.0,但由于早期版本存在安全漏洞,现已不再使用。
  • TLS(传输层安全):作为SSL的后继者,TLS引入了更强的加密算法和安全措施,从而提升了通信的安全性。TLS从1.0版本开始,直到目前广泛使用的TLS 1.2和TLS 1.3,它在安全性、效率和兼容性方面都有显著的提升。

简而言之,SSL和TLS都是用于保护网络通信的协议,但TLS是更加现代、安全的版本,已成为互联网上标准的安全技术。

3. SSL/TLS握手过程

SSL/TLS握手是是客户端和服务器之间建立安全连接之前发生,类似于TCP握手,TCP握手是建立网络连接的基础,而SSL/TLS握手是在这种连接的基础上增加安全层,简单来说SSL/TLS握手实现以下过程:

  • 密钥交换:首先,客户端和服务器交换密钥信息。客户端发送它支持的加密方法的列表,服务器从中选择一个共同的加密方法,并发送回它的证书,其中包含了服务器的公钥。
  • 证书认证:客户端验证服务器的证书是否由可信的证书颁发机构(CA)签发,以及证书是否有效。
  • 加密数据传输:一旦密钥交换和证书验证成功,客户端和服务器之间的所有通信都将被加密。

下面来详细说一下SSL/TLS握手过程。

大家熟知HTTP协议的“三次握手”过程,也就是TCP连接的标准方法。而在HTTPS中,SSL/TLS“握手”过程更为复杂,这个过程通常涉及至少九个主要的网络包交换:

  1. 客户端Hello:客户端发送一个握手开始的信号,包括支持的TLS版本、加密方法和一个客户端生成的随机数。

  2. 服务器Hello:服务器响应客户端,选择一个共同的TLS版本和加密方法,并发送一个服务器生成的随机数。

  3. 服务器证书:服务器向客户端发送其数字证书,这是验证服务器身份的关键步骤。

  4. 服务器Hello完成:这个包标志着服务器已经发送了所有必要的握手信息。

  5. 客户端密钥交换:客户端生成一个预主密钥,并将其加密后发送给服务器。

  6. 客户端更改密码规范:客户端通知服务器,它将开始使用新的加密参数来加密消息。

  7. 客户端握手完成:这个加密消息表明客户端端的握手过程已完成。

  8. 服务器更改密码规范:服务器通知客户端,它将开始使用新的加密参数来加密消息。

  9. 服务器握手完成:这个加密消息表明服务器端的握手过程已完成。

加上HTTP使用TCP交换的3个包,使用HTTPS协议进行通信时,客户端和服务器建立连接总共需要交换12个包,如下图所示:
请添加图片描述

第三部分:数字证书和CA

1. 数字证书的作用和内容

数字证书是一种电子文档,用来证明网络实体的身份,类似于网络世界的身份证。它包含了实体的公钥以及由CA签发的签名。

证书颁发机构(CA)是一个可信赖的第三方机构,负责颁发和管理数字证书。CA的作用是验证实体的身份,然后用CA的私钥对证书进行签名。这样,任何人都可以使用CA的公钥来验证证书的真实性。

2.如何放防止数字证书被篡改

我们把证书原本的内容生成一份“签名”,比对证书内容和签名是否一致就能判别是否被篡改。这就是数字证书的“防伪技术”,这里的“签名”就叫数字签名:

3.数字签名

这部分内容建议看下图并结合后面的文字理解,图中左侧是数字签名的制作过程,右侧是验证过程:

在这里插入图片描述

制造过程
  1. 创建哈希值:首先,使用哈希函数(如SHA-256)对原始数据(如文档、软件、消息)生成一个唯一的哈希值。哈希值是一种固定长度的字符串,即使原始数据只发生了微小的变化,哈希值也会大幅改变。

  2. 加密哈希值:然后,发送者使用自己的私钥对这个哈希值进行加密。加密后的哈希值就是数字签名。

  3. 附加数字签名:数字签名被附加到原始数据上,一起发送给接收者。

验证过程
  1. 提取和解密:接收者收到数据后,使用发送者的公钥对数字签名进行解密,恢复出哈希值。

  2. 重新计算哈希值:接收者对收到的原始数据使用相同的哈希函数重新计算哈希值。

  3. 比较哈希值:接收者比较解密得到的哈希值和重新计算的哈希值。如果两个哈希值相同,则证明数据未被篡改且确实是由拥有相应私钥的发送者发送的。

通过这个过程,数字签名不仅确保了数据的完整性,也提供了发送者身份的认证。这在HTTPS协议中尤其重要,因为它帮助确保网站的身份并保护数据不被篡改。

4. 案例分析:浏览器如何通过证书验证网站的身份

当浏览器连接到一个HTTPS网站时,它会检查该网站的证书是否有效。这包括检查证书是否由已知的、可信赖的CA签发,证书是否针对正确的网站,以及证书是否过期。如果这些检查通过,浏览器会显示一个锁形图标,表示与该网站的连接是安全的。

第四部分:HTTPS总体过程

① 证书验证阶段:

1)浏览器发起 HTTPS 请求;
2) 服务端返回 HTTPS CA证书(含公钥);
3)客户端验证证书是否合法,如果不合法则提示告警。

② 数据传输阶段:

1)当证书验证合法后,在本地生成随机数(随机数相当于对称加密密钥);
2)通过公钥加密随机数,并把加密后的随机数传输到服务端;
3)服务端通过私钥对随机数进行解密;
4)服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输,而客户端收到加密后的数据会用随机数进行解密(随机数相当于对称加密密钥)。

结语

通过本文的学习,我们对HTTPS有了更深入的了解。从基本概念到深入的技术细节,希望能够对大家有所帮助!

  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值