Первый
При выполнении завиток -iv4 https://support.github.com/contact
Я получаю 301 ответ с указанием местоположения https://github.com/контакт
.
Очевидно, что при выполнении curl для местоположения, возвращенного из ответа 301, я получаю только ответ 404.
Некоторые из моих машин (хосты Linux или контейнеры докеров) никогда не затрагиваются, некоторые — нет.
По какой-то причине он кажется привязанным к моей сети.
Я обнаружил проблему при попытке попасть на поддомен api.github.com, проблема та же.
Я открыл билет поддержки github без ответа на данный момент.
Проблема такая же в веб-браузерах, поэтому она вообще не связана с завитком.
Поэтому, если у кого-то есть какие-либо идеи о том, что может заставить сервер ошибочно возвращать ответ 301 на https, я открыт для любых предложений.
РЕДАКТИРОВАТЬ:
Неудачный запрос
отказоустойчивый хост:~$ curl -iv4 https://support.github.com/contact
* Попытка 140.82.121.3...
* Установлен TCP_NODELAY
* Подключен к support.github.com (140.82.121.3), порт 443 (#0)
* ALPN, предлагая h2
* ALPN, предлагающий http/1.1
* успешно установить места проверки сертификата:
* CA-файл: нет
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), рукопожатие TLS, приветствие клиента (1):
* TLSv1.3 (IN), рукопожатие TLS, приветствие сервера (2):
* TLSv1.3 (IN), рукопожатие TLS, зашифрованные расширения (8):
* TLSv1.3 (IN), рукопожатие TLS, сертификат (11):
* TLSv1.3 (IN), рукопожатие TLS, проверка CERT (15):
* TLSv1.3 (IN), рукопожатие TLS, Готово (20):
* TLSv1.3 (OUT), изменение шифрования TLS, изменение спецификации шифрования (1):
* TLSv1.3 (OUT), рукопожатие TLS, Готово (20):
* SSL-соединение с использованием TLSv1.3/TLS_AES_128_GCM_SHA256
* ALPN, сервер принят для использования h2
*Сертификат сервера:
* Тема: C=США; ST=Калифорния; L=Сан-Франциско; О=GitHub, Inc.; CN=*.github.com
* дата начала: 25 марта 00:00:00 2021 по Гринвичу
* срок действия: 30 марта 23:59:59 2022 GMT
* subjectAltName: хост "support.github.com" соответствует сертификату "*.github.com"
* эмитент: C=US; О=DigiCert, Inc.; CN = DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1
* Проверка сертификата SSL в порядке.
* Используя HTTP2, сервер поддерживает многократное использование
* Состояние соединения изменено (HTTP/2 подтверждено)
* Копирование данных HTTP/2 из буфера потока в буфер соединения после обновления: len=0
* Использование идентификатора потока: 1 (простой дескриптор 0x5579f6dcac10)
> ПОЛУЧИТЬ/связаться с HTTP/2
> Хост: support.github.com
> Пользовательский агент: curl/7.64.0
> Принять: */*
>
* TLSv1.3 (IN), рукопожатие TLS, билет на выпуск новостей (4):
* TLSv1.3 (IN), рукопожатие TLS, билет на выпуск новостей (4):
* старый идентификатор сеанса SSL устарел, удаление
* Состояние соединения изменено (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 301
HTTP/2 301
<длина содержимого: 0
длина содержимого: 0
< расположение: https://github.com/contact
местоположение: https://github.com/contact
<
* Соединение №0 с хостом support.github.com осталось нетронутым
Успешный запрос:
отказоустойчивый хост:~$ curl -iv4 https://support.github.com/contact
* Попытка 140.82.121.3...
* Установлен TCP_NODELAY
* Подключен к support.github.com (140.82.121.3), порт 443 (#0)
* ALPN, предлагая h2
* ALPN, предлагающий http/1.1
* успешно установить места проверки сертификата:
* CA-файл: нет
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), рукопожатие TLS, приветствие клиента (1):
* TLSv1.3 (IN), рукопожатие TLS, приветствие сервера (2):
* TLSv1.3 (IN), рукопожатие TLS, зашифрованные расширения (8):
* TLSv1.3 (IN), рукопожатие TLS, сертификат (11):
* TLSv1.3 (IN), рукопожатие TLS, проверка CERT (15):
* TLSv1.3 (IN), рукопожатие TLS, Готово (20):
* TLSv1.3 (OUT), изменение шифрования TLS, изменение спецификации шифрования (1):
* TLSv1.3 (OUT), рукопожатие TLS, Готово (20):
* SSL-соединение с использованием TLSv1.3/TLS_AES_128_GCM_SHA256
* ALPN, сервер принят для использования h2
*Сертификат сервера:
* Тема: C=США; ST=Калифорния; L=Сан-Франциско; О=GitHub, Inc.; CN=*.github.com
* дата начала: 25 марта 00:00:00 2021 по Гринвичу
* срок действия: 30 марта 23:59:59 2022 GMT
* subjectAltName: хост "support.github.com" соответствует сертификату "*.github.com"
* эмитент: C=US; О=DigiCert, Inc.; CN = DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1
* Проверка сертификата SSL в порядке.
* Используя HTTP2, сервер поддерживает многократное использование
* Состояние соединения изменено (HTTP/2 подтверждено)
* Копирование данных HTTP/2 из буфера потока в буфер соединения после обновления: len=0
* Использование идентификатора потока: 1 (простой дескриптор 0x5579f6dcac10)
> ПОЛУЧИТЬ/связаться с HTTP/2
> Хост: support.github.com
> Пользовательский агент: curl/7.64.0
> Принять: */*
>
* TLSv1.3 (IN), рукопожатие TLS, билет на выпуск новостей (4):
* TLSv1.3 (IN), рукопожатие TLS, билет на выпуск новостей (4):
* старый идентификатор сеанса SSL устарел, удаление
* Состояние соединения изменено (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 301
HTTP/2 301
<длина содержимого: 0
длина содержимого: 0
< расположение: https://github.com/contact
местоположение: https://github.com/contact
<
* Соединение №0 с хостом support.github.com осталось нетронутым
РЕДАКТИРОВАТЬ: исправлено
Проблема находится на конце github.com, см.:
Приведет к неправильному перенаправлению 301:
curl -v https://support.github.com/contact --resolve 'support.github.com:443:140.82.121.3'
Приведет к правильному перенаправлению 302:
curl -v https://support.github.com/contact --resolve 'support.github.com:443:140.82.114.21'
Пока что github не ответил на мой личный запрос в службу поддержки.