Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Apache Error: AH02808: Alert: Client sent unexpected protocol message during TLS handshake Linux / DevOps

Apache Error AH02808: Unexpected protocol message during TLS — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

В журнале ошибок error.log веб-сервера Apache регулярно фиксируются сообщения об аномалиях сетевого рукопожатия: [ssl:error] [pid 1234:tid 5678] [client 203.0.113.15:43210] AH02808: Alert: Client sent unexpected protocol message during TLS handshake.

Источник запросаЧто реально отправлено клиентомЧто ожидал Apache mod_ssl
Незашифрованный HTTP клиентОбычный текстовый запрос GET / HTTP/1.1 на 443 портБинарный пакет ClientHello протокола TLS
Сетевые сканеры / БотыМусорные пакеты, SSH/RDP зонды, fuzzing-тестыКорректная структура криптографического пакета
Мониторинг / Health checkСырой TCP-ping без закрытия сессииПолноценное согласование шифров (Cipher Suites)
  • Сервер сбрасывает TCP-соединение, отправляя клиенту TLS Alert (Handshake Failure).
  • В подавляющем большинстве случаев ошибка вызвана внешними ботами или ошибочными запросами по протоколу http:// на порт 443.
  1. Проверьте, какой IP-адрес генерирует ошибку в error.log. Если это внешний публичный IP, в 99% случаев это автоматизированные сканеры интернета (Shodan, Censys) или боты.
  2. Если ошибку генерирует ваш собственный сервис или балансировщик нагрузки (AWS ELB, HAProxy, Kubernetes Ingress), убедитесь, что проверка здоровья (Health Check) использует правильный протокол:
    # НЕПРАВИЛЬНО (TCP/HTTP пинг на SSL порт): 
    curl http://yourdomain.com:443/
    
    # ПРАВИЛЬНО:
    curl https://yourdomain.com/
  3. Убедитесь, что порт 443 на сервере настроен строго с включенным SSLEngine:
    <VirtualHost *:443>
        ServerName yourdomain.com
        SSLEngine on
        SSLCertificateFile /path/to/cert.pem
        SSLCertificateKeyFile /path/to/privkey.pem
    </VirtualHost>
  4. Проверьте поддерживаемые версии протоколов TLS в /etc/apache2/mods-available/ssl.conf (рекомендуется отключить устаревшие TLSv1.0 и TLSv1.1):
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  5. Если логи перегружены подобными записями от внешних ботов, понизьте детализацию логирования для модуля ssl:
    LogLevel ssl:warn
  6. Перезагрузите веб-сервер: sudo systemctl reload apache2 # или httpd.
Типичная ошибка пользователей: Если пользователь вручную вводит в браузере http://domain.com:443, браузер отправит незашифрованный текстовый HTTP-запрос в зашифрованный SSL-порт. Apache не сможет расшифровать первый байт и запишет в лог ошибку AH02808.
Практический опыт инженера: Для защиты от спама сканеров используйте утилиту `fail2ban` с регулярным выражением для `error.log`, автоматически банящую IP-адреса ботов, генерирующих сотни ошибок `AH02808` в минуту.

Частые вопросы (FAQ)

Опасна ли ошибка AH02808 для безопасности сервера?

Нет, это стандартная реакция библиотеки OpenSSL на некорректно сформированный пакет данных. Соединение мгновенно изолируется и закрывается.

Как настроить автоматический редирект с HTTP на HTTPS?

В блоке <VirtualHost *:80> пропишите: RewriteEngine On и RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L].

Что делать, если ошибка повторяется каждую секунду с одного IP?

Это признак сканирования портов или DoS-атаки. Заблокируйте проблемный IP-адрес через фаервол: sudo ufw insert 1 deny from 203.0.113.15 to any.

Может ли устаревший браузер вызывать AH02808?

Да, если старый клиент (например, на Windows XP) пытается использовать протоколы SSLv2/SSLv3, которые полностью отключены в современном веб-сервере.