nginx handshake de certificado de cliente SSL muito lento para domínio e caminhos

1

Eu tenho um servidor com alguns subdomínios acessíveis publicamente, enquanto em um subdomínio é necessário um certificado do lado do cliente. Não só isso, caminhos nesse subdomínio apontam para aplicativos diferentes. Ou seja, esse subdomínio protege uma carga de diferentes aplicativos da Web da acessibilidade pública. Cada um desses domínios tem sua própria configuração nginx. aqui está o meu arquivo de configuração nginx para os aplicativos protegidos pelo certificado de cliente.

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
server {
    listen 80;
    server_name private.domain.com;

    location / {
        rewrite ^(.*) https://private.domain.com$1 permanent;
    }
}
server {
    listen 443;
    ssl on;
    server_name private.domain.com

    ### Disable ssl v.3 ###
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache shared:SSL:10m;

    ### SSL cert files ###
    ssl_certificate         /srv/ssl/wildcard.domain.com.crt.combined;
    ssl_certificate_key     /srv/ssl/wildcard.domain.com.key;

    ssl_client_certificate  /etc/nginx/certs/domain.pem;
    ssl_verify_client       on;

    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

    ssl_prefer_server_ciphers on;
    ssl_dhparam  /srv/ssl/dhparams.pem;

    rewrite ^([^.]*[^/])$ $1/ permanent;
    include /home/user/labs/current/config/private/*.conf;
}

Isso carrega os arquivos nginx corretos no caminho mencionado na última linha dessa configuração. Existem cerca de 20 ou mais, e eles se parecem com isso:

location /some/app {
  rewrite ^/some/app/?(.*)$ /$1 break;
  proxy_pass https://subdomain.anotherDomain.com;
}

Então, quando o nginx compila e executa, há vários blocos de localização, dependendo do caminho especificado.

O usuário então deve fornecer um certificado de cliente e, uma vez autenticado, o local correto é passado de volta ao usuário.

Esse processo é extremamente lento, em primeiro lugar, quanto tempo leva para o servidor nginx solicitar o certificado e quanto tempo leva para retornar a página.

Qualquer ajuda seria amada!  Abaixo está uma imagem dos tempos de carregamento da página. Isso é consistente em todos os dispositivos e nas redes. Às vezes, levou mais de 3 segundos. Por favor, veja:

horários do Chrome

    
por amlwwalker 05.04.2016 / 17:19

0 respostas