HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议)并不是一种全新的协议,而是 HTTP 协议与 SSL/TLS 协议的组合。简单来说,它就是在 HTTP 的基础上增加了一层加密、认证和完整性保护的机制。

一,HTTPS 通讯的详细流程

HTTPS 的通讯过程主要分为两个阶段:握手阶段数据传输阶段

第一阶段:TLS 握手(建立安全连接)

这一阶段主要使用非对称加密数字证书来协商一个临时的对称密钥。

  1. 客户端发起请求(Client Hello):

    • 客户端(浏览器)向服务器发起加密通信请求,告诉服务器它支持的 TLS 版本、加密算法列表以及一个随机数。

  2. 服务器回应(Server Hello):

    • 服务器收到请求后,从客户端支持的列表中选出一组双方都支持的加密算法和协议版本,并生成一个随机数返回给客户端。

    • 关键步骤: 服务器会将它的数字证书发送给客户端。这个证书里包含了服务器的公钥、域名、颁发机构等信息。

    • 客户端验证证书(身份验证):

      • 浏览器收到证书后,会检查这个证书是不是受信任的 CA 颁发的,有没有被吊销,域名是否匹配,以及证书是否过期。

      • 如果证书可信: 客户端生成一个新的随机数(预主密钥),并使用证书中的公钥对其进行加密,然后发送给服务器。

      • 如果证书不可信,浏览器通常会弹出“您的连接不是私密连接”的警告。

    • 服务器解密(拿到密钥):

      • 服务器使用自己的私钥解密客户端发来的密文,得到预主密钥。

    • 生成会话密钥:

      • 此时,客户端和服务器都拥有了三个随机数(客户端的、服务器的、预主密钥)。双方使用事先商定的算法,利用这三个随机数独立计算出相同的对称加密密钥(也叫会话密钥)。

    • 结束握手:

      • 双方互相通知后续通讯将使用对称加密,并结束握手过程。

第二阶段:加密数据传输
  • 握手完成后,双方使用刚刚协商好的会话密钥进行对称加密通讯。

  • 这个阶段速度很快,适合传输大量的网页数据。

二,HTTPS 的两个核心作用

  • 加密(防窃听): 传输的数据是密文,即使被拦截,黑客也无法直接阅读内容。

  • 身份验证(防冒充): 确保你访问的网站(如 www.baidu.com)确实是真正的百度服务器,而不是钓鱼网站。

  • 数据完整性(防篡改): 防止数据在传输过程中被恶意修改。

三,核心参与者

  • 客户端: 通常是浏览器或 App。

  • 服务器: 存储网页数据的后端服务器。

  • CA(证书颁发机构): 一个双方都信任的第三方机构,负责给服务器颁发数字证书。

四, 为什么 HTTPS 要混合使用两种加密?

  • 非对称加密(如 RSA): 安全,但计算复杂、速度慢。主要用于握手阶段的身份验证和安全传输对称密钥。

  • 对称加密(如 AES): 速度快,加解密效率高,但密钥如何安全传输是个问题。主要用于实际的数据传输。

HTTPS 巧妙地将两者结合:用非对称加密传输对称密钥,再用对称密钥加密传输的数据,既保证了安全性,又保证了传输效率。

五, 常见误区

  • HTTPS 不等于绝对安全: HTTPS 只保护传输过程中的数据安全。如果电脑本身中了木马,或者网站服务器有漏洞,数据依然可能泄露。

  • SSL 与 TLS: SSL 是 TLS 的前身。现在常说的 HTTPS 加密,其实大多指的是 TLS 协议(通常写作 SSL/TLS)。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐