Encaminhamento de sigilo em Nginx (CentOS6)

3

Estou tentando ativar o sigilo Encaminhamento no CentOS com o servidor nginx.

O que tentei
Eu li alguns tutoriais e parece que devemos ter nginx, openssl versões mais recentes para habilitá-lo. Então eu tinha instalado o openssl mais recente a partir da fonte.

sudo wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
sudo tar  -xvzf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
sudo ./config --prefix=/usr/local
sudo make 
sudo make install

Agora o OpenSSL suporta as cifras Eliptic Curve (ECDHE). Eu testei isso com o openssl s_server também. Funcionou bem.

Em seguida, substituí o Nginx pelo mais recente.

sudo wget  http://nginx.org/packages/centos/6/x86_64/RPMS/nginx-1.4.2-1.el6.ngx.x86_64.rpm
sudo rpm -e nginx
sudo rpm -ivh  nginx-1.4.2-1.el6.ngx.x86_64.rpm

e Nginx configurado conforme descrito neste link

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+RC4:EDH+aRSA:EECDH:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

link

Mas agora o Nginx não suporta cifras de ECDHE. Suporta cifras DHE. Eu tentei apenas habilitando a codificação ECDHE no nginx ainda não funciona. Estou usando o navegador mais recente (chrome 29 e ele suporta essa cifra)

Estou faltando alguma coisa? Ou tendo problemas com o CentOS ou o Nginx? Eu li em algum lugar que os problemas de patente ECC com o CentOS, isso está causando problema?

    
por Anil 24.10.2013 / 07:31

3 respostas

5

Você está certo que o ECC no% deopenssl do RedHat (e, portanto, do CentOS) está desativado, devido a preocupações com patentes; veja (por exemplo) esta entrada do bugzilla para mais detalhes. Note como toda vez que alguém abre um novo rastreador para compilar, ele é fechado como uma duplicata deste, então não se deixe enganar pela idade do rastreador em pensar que é um problema (nota lateral: embora a maior parte desse bugzilla seja más notícias, eu gostei do comentário do RH ' Por favor note: "O Ubuntu faz isso" nunca é um argumento legal viável. ').

Você adivinhou corretamente que arredondar isso significa compilar seu próprio openssl , o que é bom. Mas, ao fazer isso, você não pode simplesmente instalar binários empacotados e esperar que eles capturem magicamente suas novas bibliotecas, porque eles não o farão.

Você precisará recompilar o openssl, por exemplo, com --prefix=/usr/local/openssl-custom , e então make install para o novo local, depois compilar nginx da fonte tomando cuidado para informá-lo a compilar e vincular as novas bibliotecas (eu posso não lhe dá um encantamento padrão para isso, porque varia de pacote para pacote, mas -with-ssl=/usr/local/openssl-custom às vezes pode ser a coisa certa).

Se você precisar de outras ferramentas para trabalhar com nginx , e qualquer uma delas tiver openssl dependencies (e atualmente, o que não tem?), você provavelmente precisará compilá-las também.

Por favor, deixe-me acabar por desencorajá-lo com isso. É um monte de trabalho; a compilação é a menor, você tem que ficar por dentro de todas as novas versões dos pacotes que você construiu, e reconstruí-los sempre que eles mudarem. Eu não sei por que você decidiu que precisa do Forward Secrecy, mas eu suspeito strongmente que você causará a si mesmo mais problemas de segurança com os pacotes que estão fora do patch do que você jamais consertará ativando-o.

A nota também comenta 43 e 90 na entrada do bugzilla vinculada acima; Se pelo Forward Sigurity, você quer dizer Perfect Forward Secrecy (PFS), então habilitar o PFS não parece precisar de ECC. Ou apenas espere, já que parece que estamos recebendo ECC a partir de RHEL6.5 (C6.5) .

    
por 24.10.2013 / 09:07
0

como um dr para o que MadHatter sugeriu:

existe uma opção para ter o nginx rodando com o ssl moderno se o seu openssl estiver um pouco desatualizado:

  • faça o download e extraia fontes de openssl
  • configure o nginx para usar seus openssl-sources baixados:

    ./configure ... --with-openssl=/path/to/openssl_source/ ... 
    
  • construa seus pacotes

então você terá um nginx atualizado com ssl moderno, compilado estaticamente e sem interferir com o pacote openssl da sua distribuição.

para mais informações sobre nginx + ssl veja este guia para nginx e ssl

    
por 25.10.2013 / 08:42
0

eu uso

yum --enablerepo=axivo install nginx

e

yum --enablerepo=axivo update openssl

Instruções para o Nginx aqui e para o OpenSSL aqui .

Isso instala (no momento desta resposta) Nginx 1.4.4 e OpenSSL 1.0.1e

O Apache (httpd) me deu problemas e eu tive que recompilar, mas outros, então, está tudo bem com essa configuração.

Eu também passei muito tempo aperfeiçoando essa preferência de cifra (para mim) - inspirada pelo Google:

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:RC4-SHA:RC4-MD5:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA256:AES128-SHA;

Use a seu próprio risco.

Você pode usar ssllabs.com para testar.

    
por 10.01.2014 / 10:41