Bug com o TLS 1.2 no Internet Explorer 11 / Windows 7?

1

Estou executando alguns pequenos sites que são servidos pelo Apache / Linux. Atualmente, estou tentando reduzir o máximo possível a configuração do SSL para torná-lo o mais seguro possível.

Eu configurei o Apache para que ele permita apenas o TLS 1.2 e somente cifras com troca de chaves DHE ou ECDHE. Firefox e Chrome nas versões mais recentes (até o momento da redação deste texto) conectam-se perfeitamente aos sites deste servidor.

Mas o Internet Explorer 11 (em execução no Windows 7 x64) na configuração padrão não pode se conectar a nenhum desses sites. As capturas do Wireshark mostram que o IE em seu primeiro cliente hello tenta o TLS 1.2, mostra suas cifras para o servidor e assim por diante, e que a resposta do servidor está correta, incluindo a cifra escolhida.

Então, aparentemente sem razão, o IE reinicia e envia um novo cliente hello, desta vez usando o TLS 1.0, que obviamente falha e faz o IE pensar que não pode se conectar ao site.

Poderia haver um bug no IE que faz com que ele tente o protocolo errado depois que o protocolo correto já tiver sido estabelecido com sucesso? Um bug que possivelmente só ocorre se o servidor APENAS fornece TLS 1.2 (o que provavelmente é bastante incomum)?

    
por nhahtdh 08.12.2015 / 22:28

3 respostas

1

Verifique se você está usando um certificado MD5 ou não, pois o Internet Explorer 9/10/11 e o Edge abortam a conexão se o servidor fornecer uma cadeia de certificados que usa o algoritmo MD5, conforme mencionado no final de este blog :

If the server negotiates a TLS1.2 connection with a Windows 7 or 8 schannel.dll-using client application, and it provides a certificate chain which uses the (weak) MD5 hash algorithm, the client will abort the connection (TCP/IP FIN) upon receipt of the certificate.

Pesquisando com a palavra-chave md5 tls1.2 revela essa postagem no blog Falha de handshake do TLS 1.2 , que descreve o mesmo problema em mais detalhes. Basicamente, de acordo com RFC5246 O Protocolo de Segurança da Camada de Transporte (TLS) Versão 1.2 , o MD5 não é mais considerado uma função hash segura, então schannel.dll segue o RFC e rejeita a cadeia de certificados MD5.

Embora eu entenda o raciocínio, teria sido mais fácil solucionar o problema se a mensagem de erro tivesse sido mais específica. Portanto, eu arquivei um problema no rastreador de bugs.

A troca em um certificado SHA-256 1 deve resolver o problema.

1 SHA-1 também funcionaria, mas não é mais recomendado

    
por 30.05.2016 / 13:30
1

Tivemos algumas caixas do Windows 7 que tiveram o mesmo comportamento. Acabou que precisávamos instalar o MS14-066 para ativar algumas cifras adicionais. Não tenho ideia de porque um patch do final de 2014 não foi instalado, mas você está pronto.

Sua milhagem pode variar.

    
por 18.04.2017 / 23:54
0

Eu experimentei um problema semelhante usando o IE 11 e o Apache 2.4. com autenticação de cliente (porta 843) e resolvi meu problema modificando a configuração do IE e finalmente modificando a configuração do apache ssl em "< VirtualHost ... >" seção.

1ª parte para resolver o problema: a configuração do cliente

Menu " Ferramentas - > Opções da Internet - > Avançado ", na seção " Segurança ", desmarque SSL2.0 e < strong> SSL 3.0 e, em seguida, verifique se TLS 1.0, 1.1 e 1.2 estão marcados e clique em "Aplicar".

Ao longo do mesmo Menu " Ferramentas - > Opções da Internet - > Conteúdo ", clique em " Limpar estado SSL " no final.

Feche o Internet Explorer, abra-o novamente e tente acessar o site.

Talvez, no seu caso, você precise verificar apenas o TLS 1.2 . Experimente combinações diferentes o TLS ativado, mas não ative o SSL para evitar problemas.

Por fim, tentei SSL3.0 + TLS1.0 + TLS1.1 + TLS1.2 e isso funcionou bem.

Em qualquer caso, se você usar o SSL2.0 + TLS 1.2, o acesso ao seu site falhará, porque eles são incompatíveis.

2ª parte para resolver o problema: a configuração do servidor

Veja a seção virtualhost do seu site no apache "config /" Certifique-se de que em qualquer seção como "< VirtualHost *: [port] >" você tem o nome do seu domínio no parâmetro "ServerName" e [PORT] (especialmente esta última ação, resolveu definitivamente o meu problema)

Por exemplo.

  • NomeServidor www.seudominio.com.br:80

  • NomeServidor www.seudominio.com.br:443

  • NomeServidor www.seudominio.com.br:843

Não se esqueça de olhar no arquivo http-ssl.conf no diretório "conf / extra /" (esse caminho e nome de arquivo dependem da instalação do seu servidor Apache), onde talvez você possa encontrar uma entrada para o parâmetro "ServerName" na seção do host virtual padrão.

Espero que o ajudem.

    
por 03.04.2016 / 14:42