Я пытаюсь настроить поддержку HTTP/2, но что-то идет не так
Мой сервер представляет собой вычислительный движок Google, на котором работает версия сервера Debian 9.13 (stretch) Apache/2.4.25 с сертификатами SSL, настроенными с использованием OpenSSL. Когда я бегу версия openssl
он сообщает о версии 1.1.1g. При работе phpinfo();
он сообщает OpenSSL/1.0.2u
. PHP версии 7.4.11 и phpinfo();
также сообщает...
SSL_VERSION_INTERFACE -> mod_ssl/2.4.25
SSL_VERSION_LIBRARY -> OpenSSL/1.0.2u
SSL_ПРОТОКОЛ -> TLSv1.2
Я следовал инструкциям здесь на «Включить модуль HTTP/2 в Apache» и «Включить HTTP/2 на вашем виртуальном хосте Apache», а также здесь. После этого, когда я запускаю команду apache2ctl-M | грэп http2
он возвращается http2_module (общий)
который сигнализирует о том, что поддержка HTTP/2 включена. Но его нет в производстве.
Вот строка, используемая в моем файле конфигурации виртуальных хостов apache2. /etc/apache2/сайты-доступны/по умолчанию-ssl.conf
<Виртуальный хост _default_:443>
Протоколы h2 h2c http/1.1
...
Вот подробная информация о подключении при использовании curl -vso http2_debug.log --http2 https://pharealty.com/
команда, которая успешно загружает страницу.
* Попытка 35.236.101.224...
* Установлен TCP_NODELAY
* Подключено к pharealty.com (35.236.101.224) порт 443 (#0)
* ALPN, предлагая h2
* ALPN, предлагающий http/1.1
* Выбор шифра: ВСЕ:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* успешно установить места проверки сертификата:
* CA-файл: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* TLSv1.2 (OUT), заголовок TLS, статус сертификата (22):
} [5 байт данных]
* TLSv1.2 (OUT), рукопожатие TLS, приветствие клиента (1):
} [512 байт данных]
* TLSv1.2 (IN), рукопожатие TLS, приветствие сервера (2):
{ [109 байт данных]
* TLSv1.2 (IN), рукопожатие TLS, сертификат (11):
{ [данные 4036 байт]
* TLSv1.2 (IN), рукопожатие TLS, обмен ключами сервера (12):
{ [333 байта данных]
* TLSv1.2 (IN), рукопожатие TLS, сервер готов (14):
{ [4 байта данных]
* TLSv1.2 (OUT), рукопожатие TLS, обмен ключами клиента (16):
} [70 байт данных]
* TLSv1.2 (OUT), изменение шифра TLS, приветствие клиента (1):
} [1 байт данных]
* TLSv1.2 (OUT), рукопожатие TLS, Готово (20):
} [16 байт данных]
* TLSv1.2 (IN), изменение шифра TLS, приветствие клиента (1):
{ [1 байт данных]
* TLSv1.2 (IN), рукопожатие TLS, Готово (20):
{ [16 байт данных]
* SSL-соединение с использованием TLSv1.2/ECDHE-RSA-AES256-GCM-SHA384
* ALPN, сервер принят для использования http/1.1
*Сертификат сервера:
* тема: CN=pharealty.com
* дата начала: 10 июля 01:53:04 2021 по Гринвичу
* срок действия: 8 октября 01:53:03 2021 по Гринвичу
* subjectAltName: хост "pharealty.com" соответствует сертификату "pharealty.com"
* эмитент: C=US; O=Давайте зашифруем; CN=R3
* Проверка сертификата SSL в порядке.
} [5 байт данных]
> ПОЛУЧИТЬ/HTTP/1.1
> Хост: pharealty.com
> Пользовательский агент: curl/7.52.1
> Принять: */*
>
{ [5 байт данных]
< HTTP/1.1 200 ОК
< Дата: среда, 08 сентября 2021 г., 17:20:21 по Гринвичу
< Сервер: Апач
< Обновление: h2,h2c
< Соединение: Обновление
< Set-Cookie: PHPSESSID=1mv9jqka4n7c7fb6qmtavfsgue; путь=/
< Истекает: четверг, 19 ноября 1981 г., 08:52:00 по Гринвичу.
< Cache-Control: без сохранения, без кэширования, с обязательной повторной проверкой
<Прагма: без кеша
< X-Pingback: https://pharealty.com/xmlrpc.php
<Ссылка: <https://pharealty.com/wp-json/>; rel="https://api.w.org/"
<Ссылка: <https://pharealty.com/wp-json/wp/v2/pages/48>; отн = "альтернативный"; тип = «приложение / json»
< Ссылка: <https://pharealty.com/>; отн = короткая ссылка
< Set-Cookie: phaLandingPage=%2F; expires = вторник, 08 марта 2022 г., 17:20:21 по Гринвичу; Максимальный возраст=15638400; путь=/
< Варьировать: Accept-Encoding
< Transfer-Encoding: фрагментировано
< Тип содержимого: текст/html; кодировка = UTF-8
<
{ [7 байт данных]
* Curl_http_done: называется преждевременным == 0
* Соединение №0 с хостом pharealty.com осталось нетронутым
Похоже, что сначала он работает отлично, а затем возвращается к HTTP/1.1.
Насколько я могу судить, у меня достаточно новая версия OpenSSL. И хотя эта страница, о которой я упоминал ранее настоятельно рекомендует версию apache выше 2.4.25, мне не удалось обновить apache до чего-либо, кроме 2.4.25.
Нужно ли мне устанавливать новый SSL-сертификат после переключения? Является ли версия apache причиной проблем?
Я протестировал сайт на нескольких тестовых сайтах http/2, и каждый раз он терпит неудачу.