Como posso obter suporte a TLSv1.2 no Apache no RHEL6 / CentOS / SL6?

7

Eu gostaria de ter suporte ao TLSv1.2 no Apache no meu servidor Scientific Linux 6 (reconstrução do RHEL6).

Existe algum caminho semi-suportado para fazer com que isso funcione? De preferência, com o mínimo de reconstrução personalizada. Neste momento estou usando mod_ssl com open_ssl, conforme fornecido nos repositórios do SL6.

Editar: Quando o suporte a TLSv1.2 estiver disponível, a configuração do Apache é bem documentada e não é muito difícil. O problema é que o RHEL6 vem com o OpenSSL 1.0.0, que suporta apenas TLS através de 1.0 ou 1.1.

    
por Michael Ekstrand 24.07.2013 / 17:46

3 respostas

10

Eu escrevi um guia rápido sobre backporting do OpenSSL 1.0.1 RPM do Fedora Core para suportar o RHEL6 e as variantes, substituindo a versão 1.0.0 incluída para adicionar suporte a TLSv1.2 e ECC. Construído e testado contra o CentOS 6.4 em setembro de 2013:

Guia para o OpenSSL 1.0.1 RPM para o CentOS 6

Por favor, note: Esse é o lugar onde eu mantenho minha cópia do OpenSSL e OpenSSH atualizados. Melhorias no CentOS 6.5 mitigaram a demanda por TLS1.2 e falhas como Heartbleed são abordadas lá, enquanto esta resposta será para sempre presa em 2013. Não siga os passos abaixo, literalmente, é imperativo que você execute 1.0.1g ou mais recente .

Agora com o github: github / ptudor / centos6-openssl

Eu disponibilizei um patch que mencionarei neste guia: openssl-spec-patricktudor-latest.diff

Primeiro, prepare seu ambiente de criação. (Se você instalou o EPEL, use o mock. Mantenha-o simples aqui ...)

yum -y groupinstall "Development tools" 
yum -y install rpm-build zlib-devel krb5-devel
mkdir -p $HOME/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir $HOME/redhat/" > ~/.rpmmacros

Em seguida, pegue o Fedora Core 20 SRPM para OpenSSL e a fonte OpenSSL completa.

rpm -Uvh http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/o/openssl-1.0.1e-42.fc21.src.rpm
cd ~/redhat/SOURCES/
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.sha1
openssl dgst -sha1 openssl-1.0.1g.tar.gz ; cat openssl-1.0.1g.tar.gz.sha1

Agora, aplique a antiga sintaxe secure_getenv e aplique o patch:

cd ~/redhat/SOURCES/
sed -i -e "s/secure_getenv/__secure_getenv/g" openssl-1.0.1e-env-zlib.patch
cd ~/redhat/SPECS/
wget http://www.ptudor.net/linux/openssl/resources/openssl-spec-patricktudor-fc20-19.diff
patch -p1 < openssl-spec-patricktudor-latest.diff

Execute a construção:

time rpmbuild -ba openssl.spec

Tudo correu bem, então vamos instalar os novos RPMs:

cd ~/redhat/RPMS/x86_64/
sudo rpm -Fvh openssl-1.0.1g-*.rpm openssl-libs-1.0.1g-*.rpm openssl-devel-1.0.1g-*.rpm

Certifique-se de que realmente funcionou:

openssl ciphers -v 'TLSv1.2' | head -4

O link acima no meu site tem mais detalhes, mas isso deve ser um bom ponto de partida.

Obrigado, aproveite.

20130819: a revisão de couro cru caiu de 14 para 15.

20130831: a revisão do fc20 aumentou de 15 para 18.

20130906: a revisão fc20 pulou de 18 para 19.

20140408: basta ir ao meu site para qualquer coisa depois da 1.0.1g.

    
por 08.04.2014 / 15:12
0

Eu encontrei este link no ServerFault, que abrange a configuração do TLSv1.2. O Q & A é intitulado: SSL / TLS 1.2 no Apache com o openssl 1.0.1 .

Esses links abrangem informações de TLSv1.2:

Incluir o seguinte no seu httpd.conf deve ativar o TLSv1.2, supondo que você tenha o httpd v2.2 ou superior e o openssl 1.0.1c ou superior.

SSLProtocol all -SSLv2

Você ainda precisa configurar seus CipherSuites. É aqui que pode ficar confuso. De acordo com os documentos acima, o único pacote de criptografia obrigatório para o TLS 1.2 é TLS_RSA_WITH_AES_128_CBC_SHA :

Appendix C. Cipher Suite Definitions
Cipher Suite                            Key        Cipher         Mac
                                        Exchange
TLS_RSA_WITH_AES_128_CBC_SHA            RSA          AES_128_CBC  SHA

Isso diz que o servidor deve fornecer um certificado RSA para troca de chaves, e que o código deve ser AES_128_CBC e o Mac SHA.

A partir dos documentos do httpd mod_ssl, isso se traduz em:

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

Você pode ler sobre SSLCipherSuites no httpd, aqui .

No passado, usei minha postagem no blog intitulada: Bloqueando o SSLv2 no Apache para fazer isso no TLSv1.1. Tudo nessa página ainda deve ser relevante, tudo o que você precisa fazer é trocar as CipherSuites + as versões openssl .

    
por 25.07.2013 / 15:57
0

Eu estava investigando recentemente esse mesmo problema para um amigo, no contexto do POODLE.

Se você usar a compilação httpd24 mais recente (AORN) a partir de outubro de 2013 na epel, você obterá TLSv1.0 e TLSv1.1 por padrão. No entanto, assim que você definir SSLProtocol no apache para qualquer outra coisa sensata, você perderá esses protocolos por causa dos cabeçalhos openssl que o httpd24 aparentemente construiu.

Na prática, isso significa que, se você tentar desativar SSlv2 ou SSlv3 explicitamente, desabilitará implicitamente o TLSv11 e um TLSv12.

Esta é uma peculiaridade do mod_ssl quando você desce para exatamente 1 protocolo que ele conhece.

O httpd24 nas "colecções de software" RedHat é construído mais recentemente e não sofre deste problema, presumivelmente é construído contra um openssl posterior (ou tem um patch personalizado trivial)

    
por 26.10.2014 / 02:02