我在一个关于 FTPS 的网站上读到这个:
当连接到 FTPS 服务器时,FTPS 客户端首先会验证服务器证书的可信度。
当 FTP 客户端被配置为使用带有隐式TLS 的 FTPS 时,它如何获取 FTP 服务器的证书?有人可以逐步说明那里发生的事情吗?
我在一个关于 FTPS 的网站上读到这个:
当连接到 FTPS 服务器时,FTPS 客户端首先会验证服务器证书的可信度。
当 FTP 客户端被配置为使用带有隐式TLS 的 FTPS 时,它如何获取 FTP 服务器的证书?有人可以逐步说明那里发生的事情吗?
FTPS 中的“隐式 TLS”的工作方式与 HTTPS 中的 TLS 完全相同,并且使用与浏览器处理 Web 服务器相同的握手,其步骤在各种文章中进行了说明:
从 Cloudflare 借用的 TLS 1.2 握手图:
TLS 1.2 和 TLS 1.3 之间的确切步骤不同,但两者的共同点是,客户端实际所做的第一件事是发送问候语“ClientHello”消息。服务器对该消息的响应包括整个证书(连同选择的密码和其他参数,以及由证书的私钥生成的签名作为证明)。
所以验证证书并不是客户端做的第一件事。它相当接近,但您的网站仍然简化了一些事情。
TLS 中的这些初始消息大多没有加密;它们用于使用 Diffie-Hellman 协议协商加密密钥。服务器的证书不用于加密,而只是将 DH 密钥交换消息“绑定”到服务器的身份,并确保它们没有被篡改。
(然而,在 TLS 1.3 中,握手已被更改为以更少的步骤完成,并且服务器发送给客户端的“证书”消息实际上是加密的。这意味着客户端只有在处理完证书后才能验证证书DH 密钥交换。)
在“显式 TLS”模式下,实际的 TLS 交换也与隐式模式中使用的相同,只是延迟了。显式模式首先使用明文FTP 连接,然后发出
AUTH TLS
命令请求切换到 TLS 模式。这样做之后,客户端会发送一个 TLS ClientHello,然后一切都会像“隐式 TLS”一样继续进行。