Entendo agora que há uma negociação entre o cliente e o servidor... Mas o que determina como umservidorescolhe a versão TLS que usará ao responder a uma solicitação https? Como poderia, por exemplo, restringir as conexões a uma versão mínima do TLS? Além disso, existe uma relação entre o certificado de segurança usado por um servidor e a versão do TLS que o servidor usa? Eu estava lendo alguns documentos da AWS e parecia sugerir isso.
Totalmente novato aqui; desculpe se isso é errado por perguntar. Não me importo de ter um link para ler, como resposta.
Responder1
Mas o que determina como um servidor escolhe a versão TLS que usará ao responder a uma solicitação https?
No handshake TLS o cliente anuncia a melhor versão que pode fazer para o servidor. Se o servidor suportar versões de protocolo iguais ou inferiores à versão do cliente, ele responderá com a melhor delas. Se o servidor não suportar nada disso, o handshake falhará. Se o servidor responder com uma versão que não é suportada pelo cliente, o handshake também falhará.
Além disso, existe uma relação entre o certificado de segurança usado por um servidor e a versão do TLS que o servidor usa?
Quase não há relação entre a versão do protocolo TLS e o certificado utilizado. Há uma pequena diferença entre as versões obsoletas SSLv3 e TLS 1.x do protocolo, pois apenas o TLS 1.x suporta extensões. Uma extensão importante é server_name
(SNI - Indicação do Nome do Servidor) onde o cliente especifica o domínio que deseja alcançar. No caso de vários certificados no mesmo endereço IP, o servidor pode escolher o apropriado.
Responder2
Eu não sou um especialista em negociação de handshake do protocolo TLS, então aqui está uma resposta ''aproximada'' (Especialistas, corrijam-me se eu estiver errado) * Estou falando apenas da versão TLS aqui. Não as cifras.
Cenário 1: seu cliente tentará a versão mais recente do TLS possível. Digamos que você suporte ao cliente 1.1 (OLD) e 1.2. Então, o servidor conectará você usando a versão mais alta possível. Esperando que seja 1.2.
Cenário 2: Seu cliente suporta 1.2 ou posterior e seu servidor é uma máquina antiga e não atualizada que conhece apenas 1.1.
Cenário 3: Igual ao 2, mas ao contrário. A conexão também não funcionará.
Seu cliente não poderá negociar a conexão. Isso vai parar por aí.
Cenário 4: Seu cliente suporta as versões 1.1 e 1.2, bem como o servidor, mas digamos que o administrador do servidor configurou (digamos Apache HTTPD) para forçar a conexão apenas usando 1.2, então seu cliente usará 1.2.
Além disso, existe o TLS 1.3.... Mas essa seria a mesma mentalidade.(ideia)