Вопрос или проблема
—https://10.11.17.546:43434/echo
- Попытка подключения к 10.11.17.546:43434…
- Подключено к 10.11.17.546 (10.11.17.546) порт 43434 (#0)
- ALPN, предлагаем h2
- ALPN, предлагаем http/1.1
- CAfile: /etc/ssl/certs/ca-certificates.crt
- CApath: /etc/ssl/certs
- TLSv1.0 (OUT), заголовок TLS, состояние сертификата (22):
- TLSv1.3 (OUT), установление соединения TLS, приветствие клиента (1):
- TLSv1.0 (IN), заголовок TLS, неизвестная (21):
- TLSv1.3 (IN), предупреждение TLS, версия протокола (582):
- error:0A00042E:SSL routines::tlsv1 alert protocol version
- Закрытие соединения 0
curl: (35) error:0A00042E:SSL routines::tlsv1 alert protocol version
https://10.11.17.546:43434 ^^^
Это недопустимый IP-адрес, и, следовательно, следующий лог невозможен. Это снова ты, “ai”?
Ответ или решение
В данной ситуации рассматривается ошибка, возникающая при использовании утилиты curl
для доступа к URL через HTTPS протокол: "curl: (35) error:0A00042E:SSL routines::tlsv1 alert protocol version". Эта ошибка сообщает нам о проблеме, связанной с версиями протоколов SSL/TLS, которую стоит подробно рассмотреть.
Теория
SSL (Secure Sockets Layer) и его преемник TLS (Transport Layer Security) являются криптографическими протоколами, предназначенными для обеспечения безопасности связи через компьютерные сети. Они обеспечивают конфиденциальность и целостность данных, а также аутентификацию серверов. Обе технологии имеют несколько версий, начиная с более старых версий, таких как SSL 2.0 и SSL 3.0, и заканчивая более современными TLS 1.0, 1.1, 1.2 и TLS 1.3. Более старые версии протоколов (до TLS 1.2) признаны устаревшими и имеют множество известных уязвимостей, из-за чего их использование крайне не рекомендуется.
Ошибка "error:0A00042E:SSL routines::tlsv1 alert protocol version" обычно указывает на проблему с поддержкой версии TLS между клиентом и сервером. Это может быть связано с тем, что сервер отвечает на попытку установки соединения с клиентом, использующим несоответствующую или небезопасную версию TLS, такую как TLS 1.0 или TLS 1.1, которые устарели и часто отключены на современных серверах.
Пример
Ваша попытка соединения с https://10.11.17.546:43434 через curl
завершается ошибкой. Рассмотрим ключевые моменты из логов:
- ALPN предложения – браузер предлагает использование HTTP/2 и HTTP/1.1.
- TLS Handshake – начинается с клиента, который отправляет
Client Hello
с использованием версии TLS 1.3. - Ошибка – сервер отклоняет соединение с сигналом "TLS alert, protocol version", что говорит о несовпадении версии протокола, которую ожидает сервер, и той, что предлагает клиент.
Ошибка также может возникать, если сервер не поддерживает предложенные клиентом версии TLS или настроен отклонять определенные протоколы.
Применение
Решение данных проблем включает несколько шагов:
-
Обновление сервера или клиента до поддержки последних версий TLS – если ваш сервер еще использует устаревшие протоколы, такие как TLS 1.0 или TLS 1.1, следует обновить поддержку как минимум до TLS 1.2 или 1.3. Это не только устранит данную проблему, но и повысит уровень безопасности коммуникации.
-
Конфигурация утилиты
curl
для поддержки корректных версий протоколов – можно указать конкретную версию протокола, которую должен использоватьcurl
, через опцию--tls-max
или--tlsv1.2
, если сервер поддерживает TLS 1.2 и выше:curl --tlsv1.2 https://10.11.17.546:43434
-
Проверка настроек конфигурации сервера (например, Apache, Nginx) – убедитесь, что конфигурация сервера включает поддержку современных протоколов и правильно настроена для SSL/TLS соединений.
-
Проверка и обновление CA-сертификатов – используемые сертификаты должны быть актуальными. Старые корневые сертификаты могут приводить к ошибкам безопасности при проверке цепочки доверия.
Современные стандарты безопасности накладывают ограничение использования более новых и защищенных версий TLS, поэтому решение таких ошибок критично для обеспечения безопасности систем и данных. Если после попыток решения ошибка сохраняется, возможно стоит рассмотреть анализ сетевого трафика с использованием инструментов мониторинга, таких как Wireshark, чтобы выявить дополнительные детали о природе проблемы. Это позволит с большей достоверностью оценить, какая именно часть взаимодействия между клиентом и сервером нуждается в доработке.