O upgrade do Apache leva à falha do handshake SSL com o cliente Java

0

Eu tenho um apache 2.4.10 para atualizar para o 2.4.12, subjacente ao openssl 0.9.8, com a seguinte configuração SSL:

SSLCipherSuite DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!EXPORT
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on

Com a atualização, quero alterar os conjuntos de criptografia para

SSLCipherSuite DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA:DHE-RSA-AES256-CBC-SHA:TLS_DHE_RSA_WITH_AES_256_CBC_SHA:!EXPORT 

Versões do OpenSSL e Java são:

OpenSSL 0.9.8j-fips 07 Jan 2009

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

Obviamente, tudo deve permanecer o mesmo com todos os clientes. No entanto, há um cliente Java 7 SE que se recusa a conectar-se com o novo Apache 2.4.12 e com a nova configuração, mas funciona com o antigo (erro interno do cliente após o Servidor terminar).

Alguém tem algumas ideias?

    
por rexkogitans 02.07.2015 / 13:59

2 respostas

0

Não é uma resposta completa ainda, mas algumas ideias / orientações:

Essa alteração da lista de codificação é sem sentido . O termo que você adicionou TLS_DHE_RSA_WITH_AES_256_CBC_SHA está no formato RFC padrão, também usado por Java e algumas outras coisas como o Wireshark, mas NÃO o formato usado pelo OpenSSL; o formato OpenSSL é DHE-RSA-AES256-SHA , que já estava na sua lista. Além disso, !EXPORT é inútil aqui; removeria quaisquer suítes de exportação que tivessem foi adicionado, mas nenhum foi, e evitaria qualquer especificação adicional de adicionando-os de volta, mas não há mais especificações.

Algumas das primeiras versões do Java 7 SSL (JSSE), não me lembro exatamente qual, mas provavelmente incluindo o 7.03, tem sua lista de cifras padrão na ordem errada, o que poderia resultar na seleção de um ciphersuite mais pobre do que o necessário, mas o seu SSLHonorCipherOrder on ignora a ordem do cliente, então não pode ser isso.

As versões recentes do httpd começaram a padronizar grupos DH maiores (para DHE, que você está preferindo), e isso causa problemas para o Java 7 (e anteriores), pelo menos, usando seus provedores de criptografia padrão. Mas o link diz que essas alterações foram 2.4.7 e .10, portanto, .10 para. 12 não deve fazer mais nenhuma mudança que eu saiba. Consulta: Você tem DH 1024bit configurado como link sugere?

Se não for isso, precisarei de mais dados . Existe alguma coisa escrita no (s) log (s) httpd (s) quando o problema ocorre? Você pode obter mais detalhes do cliente Java com o problema, como uma mensagem de exceção exata? (Esse cliente pode ser executado por você mesmo ou pertence a outra pessoa ou pessoas?) Você pode obter uma captura de rede de uma tentativa malsucedida com Wireshark ou tcpdump ou semelhante? Se tudo mais falhar, alguém pode executar o cliente Java com -Djavax.net.debug=ssl ou equivalente e obter a saída resultante (bastante volumosa)?

    
por 03.07.2015 / 12:52
0

O parágrafo declarando

Some early versions of Java 7 SSL

por @ dave_thompson_085 me levou à solução final. O problema e a solução estão bem descritos no site da Apache .

Existe um bloco a ser anexado ao arquivo PEM que força determinados parâmetros de sessão do TLS v1.0 necessários para o Java SE 7.

    
por 09.07.2015 / 16:53