por que o navegador Chrome não reconhece meu servidor nginx http2?

2

Eu configurei meu conf Nginx como por Digital Ocean paper , e agora http2 está disponível ...

Mas no Chrome (Versão 54.0.2840.98 (64 bits)) a ferramenta Dev está sempre em HTTP 1/1:

NAME             METHOD  STATUS  PROTOCOL
shell.js?v=xx..    GET    200     http/1.1

meu servidor está executando o Ubuntu 16.04 LTS que suporta tanto o ALPN & NPN, e a versão openssl fornecida com ele é 1.0.2g

Eu verifiquei o suporte a http2 com este site de ferramentas e o resultado é:

Yeah! example.com supports HTTP/2.0. ALPN supported...

Também verificar com o curl é OK

 $ curl -I --http2 https://www.example.com
  HTTP/2 200 
  server: nginx/1.10.0 (Ubuntu)
  date: Tue, 13 Dec 2016 15:59:13 GMT
  content-type: text/html; charset=utf-8
  content-length: 5603
  x-powered-by: Express
  cache-control: public, max-age=0
  etag: W/"15e3-EUyjnNnyevoQO+tRlVVZxg"
  vary: Accept-Encoding
  strict-transport-security: max-age=63072000; includeSubdomains
  x-frame-options: DENY
  x-content-type-options: nosniff

Eu também verifiquei com o is-http2 cli do meu console

is-http2 www.amazon.com
× HTTP/2 not supported by www.amazon.com
Supported protocols: http/1.1

is-http2 www.example.com
✓ HTTP/2  supported by www.example.com
Supported protocols: h2 http/1.1

testado com o openssl do meu localhost

$ echo | openssl s_client -alpn h2 -connect www.example.com:443 | grep ALPN
 depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
 verify return:1
 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
 verify return:1
 depth=0 CN = example.com
 verify return:1
 ALPN protocol: h2
 DONE

por que o Chrome é deixado para trás? Como posso verificar também com o Safari (v 10.0.1)

    
por erwin 13.12.2016 / 18:42

1 resposta

8

De acordo com minha resposta em StackOverflow :

Será provavelmente um dos dois motivos:

  1. Você está usando um software antivírus e ele é o tráfego do MITM e, portanto, você faz o downgrade para HTTP / 1.1. Desative o monitoramento do tráfego de https no seu AV para se conectar diretamente ao servidor.

  2. Você está usando códigos TLS mais antigos e especificamente um que o Chrome proíbe para HTTP / 2 ( link ) conforme a Etapa 5 do guia acima. Analise seu site usando o link para verificar sua configuração de TLS e melhorá-la.

O terceiro motivo é a falta de suporte a ALPN na sua biblioteca SSL / TLS (Por exemplo, você está usando o openssl 1.0.1 e precisa ser um 1.0.2 ou mais recente, por exemplo), mas você já confirmou ter suporte ao ALPN, ignorando isso para essa resposta.

    
por 13.12.2016 / 20:22