Почему браузер Chrome не распознает мой сервер nginx http2?

Я настраиваю свою конфигурацию Nginx согласно Digital Ocean paper , и теперь доступен http2 ...

Но в Chrome (версия 54.0.2840.98 (64-разрядная)) Dev tool всегда на HTTP 1/1:

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

мой сервер запущен Ubuntu 16.04 LTS, который поддерживает как ALPN, так и NPN, а поставляемая с ним версия openssl - 1.0.2g

Я проверил поддержку http2 с помощью этого сайта инструментов , и результат:

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

Также проверял с помощью curl в порядке

 $ 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

Я также проверил с помощью is-http2 cli с моей консоли

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

, протестировал с помощью openssl с моего локального хоста

$ 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

, почему Chrome остался позади него? Как я могу проверить это также с помощью Safari ( v 10.0.1)

4
задан 13 December 2016 в 19:56
1 ответ

Согласно моему ответу на StackOverflow :

Скорее всего, это будет одна из двух причин:

  1. Вы используете антивирусное программное обеспечение, и это MITM ваш трафик и поэтому переход на HTTP / 1.1. Отключите мониторинг трафика https на вашем AV, чтобы подключиться напрямую к серверу.

  2. Вы используете старые шифры TLS, в частности тот, который Chrome запрещает для HTTP / 2 ( https://http2.github.io/http2- spec / # BadCipherSuites ) согласно шагу 5 вышеприведенного руководства. Отсканируйте свой сайт с помощью https://www.ssllabs.com/ssltest/ , чтобы проверить конфигурацию TLS и улучшить ее.

Третья причина - отсутствие поддержки ALPN в вашем SSL / TLS библиотека (т.е. вы используете openssl 1.0.1 и, например, вам нужна версия 1.0.2 или новее), но вы уже подтвердили, что у вас есть поддержка ALPN, поэтому пропустите это в этом ответе.

15
ответ дан 3 December 2019 в 02:23

Теги

Похожие вопросы