2016-05-19 3 views
1

На моем веб-сервере я пытаюсь заставить H2 (http2) работать. Установленный Apache 2.4.20 через репозиторий «ondrej». Я тестировал сервер Debian 8 и Ubuntu 14.04, но у меня все те же проблемы. У меня работает OpenSSL 1.0.2 и SSL vhosts.Браузер не обновится до H2, но отправляются заголовки «Upgrade»

Странно, что отправляются заголовки обновлений (Connection: upgrade and Upgrade: h2). Когда я выполняю некоторые внешние проверки сервера, я получаю ответы, которые h2 работает правильно с поддержкой ALPN. Но проблема в том, что браузеры, на которых я тестировал (Chrome и FireFox на Win7), не будут обновляться до H2.

Одна вещь, которую я заметил, которая отсутствует, - это заголовок HTTP2-Settings, но я не могу найти что-либо в любой документации Apache, чтобы реализовать это или заставить Apache отправлять этот заголовок.

К сожалению, я не смог протестировать cUrl, так как у серверов, к которым у меня есть доступ, не поддерживается какая-либо версия, поддерживающая http2.

Моей SSL настройка ВХост:

Protocols h2 http/1.1 
SSLEngine On 
SSLCACertificateFile xxxxxxxx 
SSLProtocol all -SSLv2 -SSLv3 
SSLCompression Off 
SSLHonorCipherOrder On 
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RSA+AES RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4 !AES128" 
Header always set Strict-Transport-Security "max-age=15552000;includeSubDomains" 
SSLCertificateFile xxxxxxxx 
SSLCertificateKeyFile xxxxxxxx 

Я бег Apache с модулем PreFork вместо с рабочими.

Кто может сказать мне, что не так?

+0

У меня был такой же симптом после установки mod_http2. В моем случае также переключение на использование php-fpm (как описано здесь: https://techwombat.com/enable-http2-apache-ubuntu-16-04/) в конце концов решило его для меня. Просто выбросьте его там, если другие придут сюда! –

ответ

0

обновление к протоколу h2.

Механизм обновления HTTP/1.1 - это то, что инициируется клиентами.

Если вы правильно поняли и пытаетесь отправить заголовки Upgrade и HTTP2-Settings с сервера на клиент, это не имеет смысла. Клиенты отправляют эти заголовки, а не сервер.

Кроме того, хотя сам протокол HTTP/2 позволяет осуществлять чистую текстовую связь через обновление HTTP/1.1 до h2c (обратите внимание на c в конце имени протокола), поставщики браузеров не реализовали этот механизм и используют только протокол HTTP/2 после согласования ALPN.

В итоге:

  • Вы можете обновить HTTP/1.1 HTTP/2 четкий текст (h2c), но только с клиентами небраузерных, таких как nghttp. Это объясняется here.
  • Механизм обновления инициируется только клиентами, и они отправят заголовки Upgrade и , а не сервер.
  • Браузеры поддерживают переговоры только по протоколу HTTP/2 через ALPN (h2). Это означает, что у вас не может быть текстового HTTP/2 между браузером и сервером.
+0

Thx, но я никогда не упоминал h2c, и я не пытаюсь заставить его работать. Кроме того, вы неправильно поняли часть о заголовках, неважно. –

4

В конце концов, я получил его на работу. Это был вопрос изменения "SSLChiperSuite" в этой строке:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES256-GCM-SHA384: ECDHE -ECDSA-AES256-GCM-SHA384: DHE-RSA-A $

У старого был - так сказать - вариант, который заблокировал http2. Моя оценка SSL-теста по-прежнему A + btw.

+0

Хорошо сделано для выяснения вашего собственного решения. Спасибо, что поместили свой собственный ответ здесь - это помогло мне. – Michael

0

У меня такая же проблема, поэтому я попробовал свое «решение». Но с этим cipherSuite-кодом больше всего IE, Androids und Safari будет заблокирован из-за «handshake_failure»!

Он testet на https://www.ssllabs.com/ssltest/analyze.html

Вы знаете, какие из CipherSuite-записей сделал блокировать http2 (ALPN не доступно)?

+1

Я только что заменил весь шифр на этот из Certbot. Это один работает: EECDH + AESGCM: EDH + AESGCM: AES256 + EECDH: ECDHE-RSA-AES128-SHA: DHE-RSA-AES128-GCM-SHA256: AES256 + EDH: ECDHE-RSA-AES256-GCM- SHA384: ECDHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA256: ECDHE-RSA-AES256-SHA: ДНЕ-RSA- AES256-SHA256: DHE-RSA-AES128-SHA256: DHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA: ECDHE-RSA-DES-CBC3-ША: EDH-RSA-DES-CBC3-ША: AES256- GCM-SHA384: AES128-GCM-SHA256: AES256-SHA256: AES128-SHA256: AES256-SHA: AES128-SHA: DES-CBC3-ША: HIGH: aNULL: eNULL: ЭКСПОРТ: DES: MD5 :! PSK: RC4 –

Смежные вопросы