Apache - demora em HTTPS, mas não em HTTP

1

Eu tenho um problema com um Apache 2.4.7 no Ubuntu 14.04 (quase configurações padrão), servidor de nuvem virtual.

Em uma carga média do servidor (cerca de 2 / 3,0 cpu e toneladas de memória livre), o tempo para estabelecer uma conexão HTTPS aumenta para 5-15 segundos (às vezes mais). Aqui, um exemplo de saída de curvas, dê uma olhada no horário:

My-MBP:~ me$ curl --trace-time --trace-ascii - https://domain.tld/some.png
20:44:40.952209 == Info:   Trying 111.111.111.111...
20:45:16.046183 == Info: Connected to domain.tld (111.111.111.111) port 443 (#0)
20:45:32.371816 == Info: TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
20:45:32.371919 == Info: Server certificate: www.domain.tld
20:45:32.371946 == Info: Server certificate: GlobalSign Extended Validation CA - SHA256 - G2
20:45:32.372025 == Info: Server certificate: GlobalSign
20:45:32.372069 => Send header, 125 bytes (0x7d)
0000: GET /some.png HTTP/1.1
003c: Host: domain.tld
0055: User-Agent: curl/7.43.0
006e: Accept: */*
007b: 
20:45:32.538703 <= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
20:45:32.538747 <= Recv header, 37 bytes (0x25)
0000: Date: Wed, 09 Dec 2015 19:47:34 GMT
20:45:32.538765 <= Recv header, 16 bytes (0x10)
0000: Server: Apache
20:45:32.538778 <= Recv header, 37 bytes (0x25)
0000: X-Powered-By: PHP/5.5.9-1ubuntu4.14
20:45:32.538795 <= Recv header, 23 bytes (0x17)
0000: Cache-Control: public
20:45:32.538810 <= Recv header, 42 bytes (0x2a)
0000: ETag: "1234567890"
20:45:32.538827 <= Recv header, 40 bytes (0x28)
0000: Expires: Wed, 09 Dec 2015 19:57:34 GMT
20:45:32.538844 <= Recv header, 22 bytes (0x16)
0000: Content-Length: 7159
20:45:32.538860 <= Recv header, 25 bytes (0x19)
0000: Content-Type: image/png
20:45:32.538876 <= Recv header, 2 bytes (0x2)
0000: 
20:45:32.539541 <= Recv data, 7159 bytes (0x1bf7)
...

Além disso, a taxa de transferência do arquivo é muito boa, apenas o tempo para estabelecer a conexão é horrível.

Mas: Todo o pedido / resposta para o mesmo arquivo em HTTP funciona muito rápido (< 100 ms). Em horários com uso intenso (> 3.0), às vezes, também não há problemas com HTTP e HTTPS.

Alguma sugestão?

Editar:

<IfModule mod_ssl.c>
...
  SSLRandomSeed startup builtin
  SSLRandomSeed startup file:/dev/urandom 512
  SSLRandomSeed connect builtin
  SSLRandomSeed connect file:/dev/urandom 512
...
</IfModule>
    
por remy 09.12.2015 / 23:58

1 resposta

0

Isso não deve acontecer na instalação "quase padrão", então sugiro que você entre em contato com a empresa de hospedagem para saber se ela já é conhecida e / ou se pode corrigi-la.

Outras coisas que podem ser úteis para resolver o problema:

  1. Saída de openssl speed
  2. Tentando se conectar ao servidor "openssl" simples terá o mesmo problema de atraso de conexão. Você pode fazer isso usando os seguintes comandos em diferentes consoles:

Para o servidor: openssl s_server -4 -www -accept 444 -cert /etc/ssl/example.com.crt -key /etc/ssl/example.com.key -verify_return_error -debug

Para o cliente: openssl s_client -debug -connect example.com:444

Você pode tentar conectar-se ao link com seu navegador também.

  1. Verificando se você fornece a cadeia intermediária junto com o próprio certificado.
  2. Tentando alterar o conjunto de criptografia usado pelo apache com algo parecido com isto no mod_ssl.conf:

SSLHonorCipherOrder On

SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM

  1. Verificando se outros clientes da sua empresa de hospedagem têm o mesmo problema (tente conectar-se a https em IPs ao seu redor)

  2. Verificando se usar o front-end nginx para exibir https resolverá o problema

por 10.12.2015 / 01:52