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 visualizair todos os certificates ssl em um package?
  • Tempo de espera do IE e do Google Chrome em uma página SSL hospedada pelo IIS6 que o Firefox lida bem
  • Certificados SSL e se um nome comum curinga suportairá domain.com
  • Múltiplos certificates SSL com Squid reviewse proxy
  • IPv6 está funcionando bem, o IPv4 lança erro OpenSSL
  • Como obter o nome comum do certificate do file PEM
  • ftp altera a resposta do server em trânsito
  • Libvirt: Não é possível acessair o certificate da CA '/etc/pki/CA/cacert.pem': Nenhum file ou diretório desse tipo
  • Squid SSL interceptair funciona paira a maioria dos sites do google, mas não www.google.com