Eu li isso em um site sobre FTPS:
Ao se conectar a um servidor FTPS, um cliente FTPS primeiro verificará a confiabilidade do certificado do servidor.
Quando um cliente FTP é configurado para usar FTPS com TLS implícito , como ele obtém o certificado do servidor FTP? Alguém poderia dar um passo a passo do que está acontecendo lá?
O "TLS implícito" no FTPS funciona exatamente como o TLS no HTTPS e usa o mesmo handshake que os navegadores fazem com os servidores da Web, para os quais as etapas são explicadas em vários artigos:
Diagrama de um handshake TLS 1.2 emprestado da Cloudflare:
As etapas exatas diferem entre o TLS 1.2 e o TLS 1.3, mas em comum a ambos, a primeira coisa real feita pelo cliente é enviar uma mensagem de saudação "ClientHello". A resposta do servidor a essa mensagem inclui todo o certificado (junto com as cifras escolhidas e outros parâmetros, além de uma assinatura feita pela chave privada do certificado como prova).
Portanto, verificar o certificado não é exatamente a primeira coisa que o cliente faz; é bastante próximo, mas seu site ainda simplifica um pouco as coisas.
Essas mensagens iniciais em TLS geralmente não são criptografadas; eles são usados para negociar as chaves de criptografia usando o protocolo Diffie-Hellman. O certificado do servidor não é usado para criptografia, mas apenas para "vincular" as mensagens de troca de chave DH à identidade do servidor e garantir que elas não tenham sido adulteradas.
(No TLS 1.3, no entanto, o handshake foi alterado para terminar em menos etapas, e a mensagem "Certificado" enviada pelo servidor ao cliente é realmente criptografada. Isso significa que o cliente só pode verificar o certificado depois de processar o Troca de chave DH.)
No modo "Explicit TLS", a troca real de TLS também é idêntica à usada no modo implícito, apenas atrasada. O modo explícito começa conectando-se primeiro usando FTP de texto simples e, em seguida, emitindo um
AUTH TLS
comando para solicitar a mudança para o modo TLS. Depois de fazer isso, o cliente envia um TLS ClientHello e tudo continua como o "TLS implícito".