Главная/Ошибки/Handshake failed

SSL handshake failed: что значит ошибка и как исправить

Ошибка SSL handshake failed означает, что клиент и сервер не смогли договориться о защищённом соединении на этапе рукопожатия. Причин чаще всего четыре: нет общей версии TLS или шифра, клиент не передал имя сайта, у сервера нет подходящего сертификата или порт 443 закрыт.

3 мин чтенияДанные проверены 19 октября 2026

Ответ за 30 секунд

Рукопожатие срывается на первых пакетах, поэтому ищите причину до сертификата: порт, версии TLS, имя сайта. Команда openssl s_client с ключами -tls1_2 и -tls1_3 за минуту показывает, какую версию сервер принимает.

Бесплатный Let's Encrypt до часа, платные GlobalSign от 15 минут, любой с возвратом в течение 7 дней.

Как найти причину SSL handshake failed командами

01 · 1 мин

На каком шаге срывается SSL handshake и что это значит#

В начале каждого HTTPS-соединения клиент отправляет серверу список версий TLS и шифров, которые он знает, и имя сайта (SNI). Сервер выбирает общий вариант и отвечает сертификатом. Если общего варианта нет или сервер не понимает запрос, он обрывает соединение, и клиент пишет handshake failed. Схема по шагам: рукопожатие TLS.

ПричинаПризнак
Нет общей версии TLS или шифраСтарый клиент или сервер только на TLS 1.0 и 1.1
Клиент не передаёт SNIОбращение по IP-адресу или очень старая программа
Сервер не настроен на 443Нет сертификата, не совпал ключ, веб-сервер не запущен
Нужен клиентский сертификатСервер ждёт его, а клиент не прислал: клиентский сертификат
Порт закрыт или сервер не отвечаетhandshake timed out, ответа нет вовсе

Инструмент · 1 мин

Как найти причину SSL handshake failed командами#

openssl s_client -connect shop.example.org:443 -servername shop.example.org -tls1_2
openssl s_client -connect shop.example.org:443 -servername shop.example.org -tls1_3
curl -vI https://shop.example.org
sudo tail -n 50 /var/log/nginx/error.log

Если TLS 1.2 отвечает, а 1.3 нет, сервер не поддерживает новый протокол, и это не страшно. Если не отвечает ни одна версия, проблема ниже по стеку: порт, фаервол, запуск веб-сервера. В журнале Nginx ищите строки SSL_do_handshake() failed: сразу после них стоит причина, например no shared cipher (нет общего шифра) или unsupported protocol. Что делать с версиями: неподдерживаемая версия TLS. Открыт ли порт: проверка порта 443.

Диагностика handshake по порядку

Отмечайте проверенное, подсказка покажет следующий шаг

03 · 1 мин

Что значит ошибка 525 SSL handshake failed в Cloudflare#

Ошибка 525 приходит с адреса сайта, который стоит за Cloudflare. Она означает, что сам Cloudflare не смог провести рукопожатие с вашим исходным сервером. Посетитель с его стороны ни при чём.

  • Установите на исходном сервере сертификат: Let's Encrypt или сертификат Cloudflare Origin CA.
  • Откройте порт 443 в фаерволе сервера для адресов Cloudflare.
  • Убедитесь, что виртуальный хост отвечает на домен сайта и использует SNI.
  • Выберите режим шифрования Full или Full (strict). В строгом режиме сертификат сервера должен быть действительным, иначе придёт ошибка 526.

04 · 1 мин

Handshake timed out и certificate verify failed в Python и Java#

В скриптах сообщения выглядят иначе, а причины те же. Ошибка Python certificate verify failed: unable to get local issuer certificate почти всегда означает, что сервер не отдаёт промежуточный сертификат: проверка цепочки. Если же сервер внутренний и подписан вашим центром, передайте его корневой сертификат в запрос:

pip install --upgrade certifi
python -c "import requests; print(requests.get('https://shop.example.org', verify='/etc/ssl/company-ca.pem').status_code)"

Первая команда обновляет список корней, вторая проверяет доступ с вашим корнем. Параметр verify=False не решение: он отключает защиту от подмены сервера. Сообщение Java SSL handshake timed out указывает на сеть: сервер не ответил за отведённое время, поэтому смотрите порт, фаервол и нагрузку на сервер.

05 · 1 мин

Вопросы об ошибке SSL handshake failed#

SSL handshake failed что за ошибка простыми словами?

Клиент и сервер не смогли договориться о шифровании до обмена данными: не нашлось общей версии TLS, не подошёл сертификат или соединение оборвалось.

Как исправить ошибку 525 SSL handshake failed?

Установите действующий сертификат на исходный сервер, откройте порт 443 и выберите в Cloudflare режим Full или Full (strict). Ошибка идёт между Cloudflare и вашим сервером.

Что значит SSL handshake timed out?

Сервер не ответил на запрос рукопожатия за отведённое время. Проверьте, открыт ли порт 443, не режет ли пакеты фаервол и не перегружен ли сервер.

Почему этому можно верить

Как мы проверяли

Документация и провайдерыКоманды выпуска и установки сверены с документацией, дата указана.
Всё можно повторитьКоманды certbot и openssl описаны так, что их повторит любой читатель.
Независимый справочникНе связан с центрами сертификации и честно говорит, когда хватает бесплатного SSL.

Источники цифр на этой странице: SSL-сертификаты Таймвеб, timeweb.com/ru/services/domains/ssl, проверено 19 октября 2026; Let's Encrypt: документация, letsencrypt.org/docs, проверено 19 октября 2026.

SBРедакция SSLBase · обновлено 19 октября 2026

Подключите SSL к сайту

От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.

  • Бесплатный Let's Encrypt на домен
  • Платные от 1 000 ₽ за 6 месяцев
  • Wildcard на все поддомены
  • 7 дней на возврат
Диагностика