Eu tenho um cenário em que alguns clientes mais antigos só podem dar suporte a assinaturas MD5 e SHA1. Obviamente, estes são geralmente considerados obsoletos, mas ainda preciso apoiá-los. Atualizar esses clientes não é algo que pode ser feito (atualizações de firmware não estão mais sendo publicadas, idealmente eu gostaria de eliminar todos esses dispositivos, mas isso também não é viável).
Suponha que eu ainda possa obter um certificado assinado MD5 ou SHA1.
É possível em qualquer servidor (https) servir certificados diferentes com base na versão TLS de entrada contida no bloco ClientHello enviado pelo cliente na primeira conexão?
Acredito que seja possível escrever um pequeno "proxy" que apenas leia os primeiros bytes recebidos do cliente e, em seguida, splicing a conexão para portas alternativas que atendem a solicitações diferentes no pior caso, mas, se possível, prefiro evite isso se houver servidores da Web existentes que suportem algo assim.
À parte: Pelo que entendi, o protocolo SSL/TLS contém proteção contra ataques de downgrade, portanto, se o servidor suportar 1.2 e o cliente também suportar 1.2, se ocorrer um downgrade para 1.0, a conexão deverá terminar (no caso de um man-in ativo -ataque do meio). Acredito que isso deve mitigar o risco de servir certificados assinados MD5 ou SHA1 pelo menos tanto quanto pode ser feito enquanto ainda oferece suporte a versões SSL/TLS mais antigas.