Главная/Ошибки/Handshake failed
SSL handshake failed: что значит ошибка и как исправить
Ошибка SSL handshake failed означает, что клиент и сервер не смогли договориться о защищённом соединении на этапе рукопожатия. Причин чаще всего четыре: нет общей версии TLS или шифра, клиент не передал имя сайта, у сервера нет подходящего сертификата или порт 443 закрыт.
Ответ за 30 секунд
Рукопожатие срывается на первых пакетах, поэтому ищите причину до сертификата: порт, версии TLS, имя сайта. Команда openssl s_client с ключами -tls1_2 и -tls1_3 за минуту показывает, какую версию сервер принимает.
Бесплатный Let's Encrypt до часа, платные GlobalSign от 15 минут, любой с возвратом в течение 7 дней.
Как найти причину SSL handshake failed командами525код Cloudflare: handshake failed
SNIимя сайта в начале рукопожатия
TLS 1.2минимум для современных клиентов
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, не режет ли пакеты фаервол и не перегружен ли сервер.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: SSL-сертификаты Таймвеб, timeweb.com/ru/services/domains/ssl, проверено 19 октября 2026; Let's Encrypt: документация, letsencrypt.org/docs, проверено 19 октября 2026.
Подключите SSL к сайту
От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.
- Бесплатный Let's Encrypt на домен
- Платные от 1 000 ₽ за 6 месяцев
- Wildcard на все поддомены
- 7 дней на возврат