Falha aleatória de handshake SSL

1

Estou vendo algumas falhas estranhas de handshake SSL no lado do cliente. Estamos tendo um aplicativo web customizado js que é acessado apenas por navegadores com Webkit antigo (como encontrado no Epiphany). Todas as solicitações vindas do cliente são feitas no mesmo navegador (versão e tipo).

Aqui estão os sintomas:

a.) O navegador do cliente exibe falha de handshake SSL:

  • Se a página da web for recarregada, o erro permanecerá
  • Se a sessão do navegador for eliminada e a nova sessão for carregada, o erro desaparece

b.) Nenhum erro SSL é encontrado no erro nginx, syslog ou log de abertura

c.) No tcp dump, estou vendo alguns erros ocasionais de SSL Handshake:

  • Item da lista Resposta do status do certificado inválido
  • Nenhum certificado
  • Erro interno

d.) estamos usando Vamos criptografar certificados SSL

e.) nginx.conf:

  • ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Eliminando SSLv3, ref: POODLE
  • ssl_prefer_server_ciphers em;

  • O nginx funciona como proxy que redireciona todo o tráfego HTTP para https

  • ativado para sites:

server {

    listen 80;

    server_name srv_name;
    return 301 https://$host$request_uri;  

}

server {

    listen 443;
    server_name srv_name;


    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;

    ssl on;
    ssl_certificate fullchain.pem_path;
    ssl_certificate_key privkey.pem_path;
    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;

    location /robots.txt {
            alias /opt/robots.txt;
    }

    location /.well-known/ {
            alias /usr/share/nginx/html/.well-known/;
    }

    location / {
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_pass http://localhost:8000/;
            break;
    }

}

f.) Fluxo básico:

  • o navegador do cliente abre o URL http e obtém o redirecionamento 301 para https
  • O aplicativo js faz chamadas periódicas do ajax (suspeito que essas chamadas também falharão aleatoriamente devido à falha do handshake SSL, pois o código de resposta HTTP é igual a 0)
  • se a chamada ajax retornar código de resposta http 0, a página será recarregada (location.reload ()), geralmente resultando em mensagem de falha de handshake SSL no navegador do cliente.

g.) As coisas começaram a acontecer após a migração para novos servidores (do Ubuntu 14.04 lts (openssl 1.0.1f 6 jan 2014) para o Ubuntu 16.04 lts (1.0.2g 1 mar 2016) A versão do aplicativo e do navegador do cliente permaneceu a mesma.

Você tem alguma idéia de onde procurar em seguida? Por que isso não está acontecendo sempre quando o cliente abre o URL, mas muito esporadicamente.

    
por user2011328 10.10.2016 / 09:47

0 respostas