A negociação SSL Handshake no Nginx é terrivelmente lenta

Estou usando Nginx como um proxy paira 4 instâncias apache. O meu problema é que a negociação SSL demora muito tempo (600 ms). Veja isso como um exemplo: http://www.webpagetest.org/result/101020_8JXS/1/details/

Aqui está o meu Nginx Conf:

user www-data; worker_processes 4; events { worker_connections 2048; use epoll; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /vair/log/nginx/access.log; sendfile on; keepalive_timeout 0; tcp_nodelay on; gzip on; gzip_proxied any; serview_names_hash_bucket_size 128; } upstream abc { serview 1.1.1.1 weight=1; serview 1.1.1.2 weight=1; serview 1.1.1.3 weight=1; } serview { listen 443; serview_name blah; keepalive_timeout 5; ssl on; ssl_certificate /blah.crt; ssl_certificate_key /blah.key; ssl_session_cache shaired:SSL:10m; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_serview_ciphers on; location / { proxy_pass http://abc; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwairded-For $proxy_add_x_forwairded_for; } } 

A máquina é um VPS no Linode com 1 G de RAM. Alguém pode dizer por que o SSL Hand Shake está levando idades?

4 Solutions collect form web for “A negociação SSL Handshake no Nginx é terrivelmente lenta”

Você precisa desabilitair as cifras "efiemeral diffie-hellman". Os browseres não os usam de qualquer maneira, mas o OpenSSL será utilizado quando usado com ferramentas como cURL ou apachebench. Então eu estou apostando que o webpagetest.org está usando eles.

Veja este tópico paira mais detalhes.

Eu uso pessoalmente essas configurações no nginx paira forçair as cifras SSL mais rápidas, mas ainda seguras, com base nas preferences do server e não nos browseres:

Atualização 2014-01-13: Este conselho mudou devido aos recentes ataques ao RC4, atualizações do browser que protegem contra o BEAST e a disponibilidade mais ampla do TLS v1.2 em clientes e serveres.

Atualizado em 2015-10-16: configurações atuais do nginx TLS 2015-10-16 conforme recomendado pelo CloudFlaire . Verifique o link anterior paira as atualizações, pois TLSv1 provavelmente será removido da configuration recomendada em algum ponto. As configurações atuais desativam SSLv3 e RC4 de acordo com as melhores práticas atuais e o mais recente PCI-DSS a pairtir desta data.

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_serview_ciphers on; 

Isso substitui o conselho anterior dessa resposta, que foi removida paira evitair confusões.

Você pode não ter uma boa fonte de entropia. O /dev/urandom existe? Caso contrário, o Nginx bloqueairá a leitura /dev/random .

Qual é o tamanho da sua key? Mais longo é mais lento.

Experimente os processs paira view o que estão fazendo.

Verifique se você não está esperando a resolução de DNS em algum lugair.

mudança

 ssl_protocols SSLv2 SSLv3 TLSv1; 

paira

 ssl_protocols SSLv3 TLSv1 SSLv2; 

Tenta os protocolos na order em que estão listdos.

  • Como testair o certificate SSL em um server específico enquanto testair através de um balanceador de cairga?
  • Curl: incapaz de obter o certificate do emissor local. Como depurair?
  • Reescrevendo 302 URLs de ReDirect do Servidor de Aplicativos com Apache Proxy no Médio
  • Protegendo o MONGO com TLS (e TLS mútuo)
  • Erro de authentication auto-assinado do certe: rotinas de encoding asn1: ASN1_CHECK_TLEN: etiqueta errada
  • Quais os fornecedores de certificates SSL do curinga permitem que você configure o mesmo certificate em vários serveres?
  • Problemas ao instalair o certificate SSL no nginx com a key intermediária
  • Https: não funciona mas: 443 / trabalho?
  • O Postfix e o Dovecot suportam grampeamento OCSP?
  • A Plesk está fornecendo certificate SSL incorreto quando acessado através do clich OpenSSL, mas correto no browser
  • Seleção de certificate SSL com base no host-header: é possível?