在 TLS/SSL 握手过程中,客户端和服务器交换 SSL 证书、密码套件要求以及为创建会话密钥而随机生成的数据。
TLS 是旨在保护 Internet 通信安全的加密协议。TLS 握手是启动使用 TLS 加密的通信会话的过程。在 TLS 握手期间,两个通信方交换消息以相互确认,彼此验证,确立它们将使用的加密算法,并就会话密钥达成共识。TLS 握手是 HTTPS 工作原理的基础部分。
SSL 或安全套接字层是为 HTTP 开发的原始加密协议。不久前,SSL 被 TLS 或传输层安全性所取代。SSL 握手现在称为 TLS 握手,尽管“SSL”这个名称仍在广泛使用。
每当用户通过 HTTPS 导航到网站,并且浏览器首先开始查询网站的源站服务器时,都会进行 TLS 握手。每当其他任何通信使用 HTTPS(包括 API 调用和 HTTPS 上的 DNS 查询)时,也会发生 TLS 握手。
通过 TCP 握手打开 TCP 连接后,将发生 TLS 握手。
在 TLS 握手过程中,客户端和服务器一同执行以下操作:
TLS 握手是由客户端和服务器交换的一系列数据报或消息。TLS 握手涉及多个步骤,因为客户端和服务器要交换完成握手和进行进一步对话所需的信息。
TLS 握手的确切步骤将根据所使用的密钥交换算法的类型以及双方支持的密码套件而有所不同。RSA 密钥交换算法最为常用。具体如下:
所有 TLS 握手均使用非对称加密(公钥和私钥),但并非全都会在生成会话密钥的过程中使用私钥。例如,短暂的 Diffie-Hellman 握手过程如下:
*DH 参数:DH 代表 Diffie-Hellman。Diffie-Hellman 算法使用指数计算得出相同的预主机密。服务器和客户端各自提供用于计算的参数,并且组合后在每一端产生不同的计算,但得出相等的结果。
要详细了解短暂 Diffie-Hellman 握手与其他种类的握手之间的区别,以及它们如何实现前向保密,请参阅什么是 Keyless SSL?
密码套件是一组用于建立安全通信连接的加密算法。(加密算法是对数据执行的一组数学运算,以使数据显得随机。)广泛使用的密码套件有多种,而且 TLS 握手的一个重要组成部分就是对这个握手使用哪一密码套件达成一致意见。
要了解有关 TLS/SSL 的更多信息,请参阅 SSL 如何工作?要测试网站是否正确使用 TLS,请访问 Cloudflare 诊断中心。
阅读本文后,您将能够:
什么是 SSL 证书?
无密钥 SSL
什么是 SSL?
什么是混合内容?
什么是 HTTPS?
为了在我们的网站上为您提供所能达到的最佳体验,我们可能使用 cookie,如此处所述。通过单击“接受”、关闭此横幅或继续浏览我们的网站,即表示您同意使用此类 cookie。