Перейти к содержимому
ecdsa.com
OpenSSL (client side)OpenSSL CLI

Сообщение об ошибке

SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Также выводится как

  • error:0A00042E:SSL routines::tlsv1 alert protocol version
  • SSL alert number 70

И OpenSSL 3.0, и 3.5 выводят «error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:<source>:SSL alert number 70»; OpenSSL 1.1.1 использовал код 1409442E. Клиенты на базе OpenSSL (curl, Python, Ruby, PHP) показывают тот же текст причины.

OpenSSL (client side) — TLS alert 70 (protocol_version) received from the server

Что это означает

Клиент получил от сервера оповещение TLS 70 (protocol_version): ни одна из версий протокола, которые предложил клиент, серверу не подходит. «tlsv1» — лишь имя семейства, которое OpenSSL использует для оповещений, определённых начиная с TLS 1.0. На практике сервер ограничен TLS 1.0/1.1, а клиент предлагает 1.2 и 1.3, либо клиенту оставили только версии, которые на сервере отключены.

Почему это происходит

Как исправить

  1. 1.

    Выясните, какие версии принимает сервер

    Попробуйте каждую версию явно (уровень безопасности 0 разрешает рукопожатия TLS 1.0/1.1 на основе SHA-1 только для этой проверки).

    bash
    for v in tls1 tls1_1 tls1_2 tls1_3; do
      printf '%-7s ' "$v"
      echo | openssl s_client -connect legacy.example.com:443 -servername legacy.example.com -"$v" \
        -cipher 'DEFAULT:@SECLEVEL=0' >/dev/null 2>&1 && echo accepted || echo refused
    done
  2. 2.

    Включите TLS 1.2 и 1.3 на сервере

    Обновите настройки протоколов на сервере (и его TLS-библиотеку, если она старше TLS 1.2).

    text
    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    # Apache httpd
    SSLProtocol -all +TLSv1.2 +TLSv1.3

Связанные ошибки

Открыть всю базу ошибок подписей