У меня есть настроенный сервер CentOS7 с поддержкой HTTPS с GitLab/nginx, с записью A, зарегистрированной на платном DNS, и сертификатом, проверенным Let's Encrypt. (здесь я буду использовать gitlab.example.com). Доменное имя было протестировано на доступность, по крайней мере, через ssh и обычный HTTP.
С HTTPS я могу подключиться к серверу, используя прямой IP-адрес, например https://x.x.x.x . Хотя появится сообщение об ошибке небезопасного сертификата (из-за несоответствия имени домена), если я решу продолжить, несмотря на предупреждение, страница gitlab отобразится правильно.
Однако, если я попытаюсь получить доступ с помощью https://gitlab.example.com Ошибка ERR_SSL_PROTOCOL_ERROR
появится.
Я попытался использовать openssl s_client для отладки проблемы и получил следующие результаты.
openssl s_client -connect gitlab.example.com:443 -servername gitlab.example.com
ПОДКЛЮЧЕН(00000003)
4658671212: ошибка: 1400410B: подпрограммы SSL: CONNECT_CR_SRVR_HELLO: неверный номер версии: 386:
---
нет доступного однорангового сертификата
---
Имена ЦС сертификата клиента не отправлены
---
Рукопожатие SSL прочитало 5 байт и записало 0 байтов
---
Новый, (НЕТ), Шифр (НЕТ)
Безопасное повторное согласование НЕ поддерживается
Сжатие: НЕТ
Расширение: НЕТ
ALPN не согласован
SSL-сессия:
Протокол: TLSv1.2
Шифр: 0000
Идентификатор сессии:
Идентификатор сеанса-ctx:
Мастер ключ:
Время начала: 1641487269
Время ожидания: 7200 (сек)
Подтвердите код возврата: 0 (хорошо)
---
Интересно, если я не включу -имя сервера
вариант, ошибки не будет, и сертификаты будут получены правильно. Использование прямого IP-адреса с портом 443 также позволит правильно получить сертификаты.
Я пытался найти ошибку в течение нескольких часов, но безуспешно.
Я также пытался использовать curl для доступа и получил ту же ошибку (кажется, эта информация менее полезна, чем результат openssl s_client, за исключением, возможно, информации о том, что доменное имя правильно сопоставлено с IP-адресом)
curl --insecure -Lv https://gitlab.example.com
* Пытаюсь х.х.х.х...
* Установлен TCP_NODELAY
* Подключен к gitlab.example.com (x.x.x.x) порт 443 (#0)
* ALPN, предлагая h2
* ALPN, предлагающий http/1.1
* успешно установить места проверки сертификата:
* CA-файл: /etc/ssl/cert.pem
CApath: нет
* TLSv1.2 (OUT), рукопожатие TLS, приветствие клиента (1):
* ошибка: 1400410B: подпрограммы SSL: CONNECT_CR_SRVR_HELLO: неправильный номер версии
* Закрытие соединения 0
curl: (35) ошибка: 1400410B: подпрограммы SSL: CONNECT_CR_SRVR_HELLO: неверный номер версии
В журнале Gitlab ничего не отображается, и я думаю, что запрос даже не вышел за рамки этапа рукопожатия SSL.
Я застрял в этой точке. Будем признательны за любую помощь или подсказку о том, как решить эту проблему.