Não é possível desativar o SSLv3 no Apache 2.4.9 sem perder o TLS 1.1 e 1.2

2

Eu tenho um problema interessante com dois servidores Linux com Apache 2.4.9 : estou tentando desativar o SSL v3 e RC4 para bloquear o POODLE e manter SSL Labs feliz. No entanto, sempre que desativo o SSL v3, também perco o TLS 1.1 e 1.2 (mantendo apenas o TLS 1.0).

Aqui está minha versão do Apache:

$ apachectl -v
Server version: Apache/2.4.9 (Unix)
Server built:   Mar 24 2014 10:51:20

E OpenSSL:

$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

e Linux:

$ cat /proc/version
Linux version 2.6.32-279.11.1.el6.x86_64 ([email protected]) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Sat Sep 22 07:10:26 EDT 2012

Veja o que eu tentei:

# TLS 1.0 only
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite MEDIUM:HIGH:!RC4

Este primeiro é o que eu esperaria que funcione, e eu o usei com sucesso em outras instalações do Apache. O resultado é apenas TLS 1.0.

# SSLv3, TLS1.0, 1.1, 1.2
SSLProtocol all -SSLv2
SSLCipherSuite MEDIUM:HIGH:!RC4

Isso desativa o RC4 e mantém o TLS 1.0, 1.1 e 1.2, mas o SSL v3 também está ativado.

finalmente:

# TLS 1.2 only
SSLProtocol all 
SSLCipherSuite MEDIUM:HIGH:!RC4:!SSLv3

Esta combinação resulta apenas no TLS 1.2 (sem TLS 1.0 ou 1.1, sem SSL).

Eu estou pensando que este é um bug no mod_ssl no Apache que eu tenho. Estou curioso para saber se alguém aqui viu isso e se você encontrou uma maneira de ter o TLS 1.0, 1.1 e 1.2 ativado, mas o SSL desativado.

Obrigado.

    
por theglauber 04.08.2015 / 16:01

2 respostas

1

O uso do MEDIUM está impedindo que o TLS 1.1 e 1.2 seja ativado? Abaixo está minha configuração. Não me lembro por que forcei a ordem da cifra. Acabei de conferir em Qualys e ele mostra Only TLS is enabled 1.0, 1.1, 1.2.

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK
    
por 04.08.2015 / 16:43
1

Você tem algumas coisas acontecendo aqui. Primeiro você está definindo as versões do protocolo de segurança da camada de transporte que vai suportar, em segundo lugar você está definindo cifras suportadas que serão então negociadas durante a fase hello do cliente do handshake TLS.

Com base na documentação do apache de 2.4 aqui: link

Você precisa definir suas versões de TLS com suporte, com uma linha como esta em seu contêiner vhost:

SSLProtocol TLSv1.1 TLSv1.2

Em seguida, você precisa definir suas cifras em seu contêiner vhost também (incluído abaixo como exemplo):

SSLCipherSuite AES+kRSA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
    
por 06.07.2018 / 23:26