HTTPS не работает с Safari

У меня есть экземпляр EC2 с Apache в качестве веб-сервера (и Wildfly в качестве сервера приложений, хотя я не уверен, что это как-то связано с этой проблемой). Перед EC2 у меня есть балансировщик нагрузки, который завершает HTTPS и применяет сертификат SSL.

И HTTP, и HTTPS отлично работают в Chrome, но, к сожалению, не в Safari. Доступ к http://test.papereed.com работает нормально, но доступ к https://test.papereed.com дает ошибку

"Safari can't open the page. The error is "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100)"

Я просмотрел / etc / httpd / logs / error_log и / etc / httpd / logs / access_log, а также в консоли Safari, не найдя никаких подсказок для решения проблемы. И это о том, как далеко зашли мои знания :-( Любые подсказки, как отследить эту проблему, были бы очень признательны.

14
задан 25 October 2018 в 23:15
4 ответа

curl (если скомпилирован с поддержкой HTTP/2) показывает ту же самую проблему, но показывает причину:

ошибка http2: Получено неверное поле заголовка HTTP: тип кадра: 1, поток: 1, имя: [обновление], значение: [h2,h2c]

Похоже, что ваш сервер предлагает обновление до HTTP/2, несмотря на то, что соединение уже сделано с HTTP/2, что не имеет смысла. И не только это, это явно запрещено. Из RFC 7540 раздел 8.1.2.2:

Конечная точка НЕ ДОЛЖНА генерировать сообщение HTTP/2, содержащее заголовок, специфичный для конкретного соединения. поля; любое сообщение, содержащее специфические для данного соединения поля заголовка ДОЛЖНО рассматриваться как некорректное (раздел 8.1.2.6).... соединение- конкретные поля заголовков, такие как "Keep-Alive", "Proxy-Connection", Transfer-Encoding и Upgrade

Это ищет для меня ошибку, так как Apache не должен посылать этот заголовок с HTTP/2.

Думаю, у вас есть такая конфигурация

Protocols h2 h2c http/1.1

Учитывая, что браузеры все равно не поддерживают HTTP/2 без TLS, и что не нужен заголовок Upgrade с HTTP/2 поверх TLS, я рекомендую заменить эту конфигурацию на

Protocols h2 http/1.1

Это отключает поддержку ненужного HTTP/2 без TLS, но надеюсь, что таким образом вы избавитесь от заголовка Upgrade, так как он нужен только для перехода с простого HTTP на простой HTTP/2.

EDIT: в соответствии с комментарием оператора реестра, изменение конфигурации Протоколов не помогло. Необходимо было явно обработать это поведение (т.е. ошибку) mod_http2, удалив заголовок Upgrade:

Header unset Upgrade
21
ответ дан 2 December 2019 в 21:05

Я думаю, что это проблема Safari, а не AWS / SSL. Поиск этой ошибки получает много, много результатов на Google.

Все проверяется на сайте в соответствии с SSL Shopper test и SSL Labs Test.

Я нашел это возможное решение проблемы.

Решение заключалось в том, чтобы зайти в Safari Preferences, в разделе Конфиденциальность и перечень все детали. Это обеспечило ведение журнала всех сайтов, где cookie-файлы и т.д. имели использовали. Я нашел страницу домена Погодной сети и очистил все содержимое от него. Затем я смог перезагрузить страницу Погодной сети. без проблем. Я предполагаю, что это сработало бы для других похожих сингулярных Сайты.

Есть также этот, который можно сделать с Apache.

.
3
ответ дан 2 December 2019 в 21:05

Nginx: Обновление заголовка отключено; не работает, если вы проксируете свой запрос, используйте Обновление proxy_hide_header; вместо.

0
ответ дан 10 July 2020 в 17:56

После того, как я установил следующее в директивах Apache:

Header unset Upgrade

и следующее в директиве NGinx:

proxy_hide_header Upgrade;

Проблема с сафари исчезла.

0
ответ дан 5 July 2021 в 11:21

Теги

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