likes
comments
collection
share

HTTPS 通信过程个人理解

作者站长头像
站长
· 阅读数 50

常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS加密数据包。

通常,HTTP 直接和 TCP 通信。当使用 SSL 或 TLS 时,HTTP 和 SSL 通信,再由 SSL 和 TCP 通信。

基础知识:加密手段

加密方法的算法是公开的,但是密钥是保密的。加密解密都通过密钥。

共享密钥加密

加密和解密都用同一个密钥称为共享密钥加密,也称为对称密钥加密

发送端通过密钥加密报文,也必须把该密钥发送给对方,在互联网上发送密钥,密钥就有可能泄漏。如不发送密钥,对方就不能解密。密钥如果能确保安全发送,那报文也可以,那还加密干啥。

公开密钥加密

公开密钥加密使用一对非对称密钥。其一是私有密钥,和公有密钥。

公钥可以被任何人知道,配对的私有只有自己知道。

发送方通过对方的公钥进行数据加密,接收方收到被自己的公钥加密后的信息,用自己的私钥进行解密。(根据密文和公钥进行解密应该是困难的,有解密的可能性,但是成本高)

存在“中间人攻击”的问题,如何保证传输的公钥确实是目标的公钥。

数字证书认证

使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。

认证流程

服务器方向第三方认证机构提出公开密钥认证申请。机构认证服务器的身份,后对申请的公开密钥做数字签名(用机构自己的私钥进行加密,其中包括了服务器方申请的公钥),绑定,发放公钥证书。

HTTPS 通信步骤

HTTPS 通信过程个人理解

HTTPS 通信过程个人理解

图片摘自《图解 HTTP》,强烈建议读一下这本书,小巧生动。

关键步骤个人理解:

步骤 3 中:报文中的公开密钥证书,客户端可以使用数字认证机构的公开密钥,对证书中的数字签名进行验证,若验证通过,则可以证实

1,报文中的服务器的公开密钥确实是目标服务器的。

2,认证服务器证书的是真实有效的认证机构。

这里客户端使用的数字认证机构的公开密钥,需要提前安全的转交给客户端(避免中间人)。如何安全转交?多数浏览器开发商,操作系统等会事先在内部植入常用认证机构的公开密钥,确保其正确性。

步骤 5 :客户端发送报文 1,包含随机密码串,该报文通过验证过的服务器的公钥加密。

步骤 6 :客户端继续发送报文 2 ,提示服务器,在报文 2 以后的通信采用 报文 1 中的通过随机密码串(相当于在验证当前通信的对象能不能解密报文 1(要有那个唯一对应的私钥才行,这样就验证了通信对象的身份))等生成的新密钥加密(共享密钥加密)。

步骤 7:中的 Finished 报文是通过新密钥加密过的报文。

在此,服务器使用自己的私钥解密报文 1,获得随机密码串,生成新密钥。之后通过该 新密钥 加密 Finished 报文,进行回复。

各自的通过 新密钥 加密的 Finished 报文交换验证完毕,即 SSL 连接完成,自此后进行 受保护的,安全 的 HTTP 通信。

转载自:https://juejin.cn/post/6844904069698437127
评论
请登录