#Что происходит и когда применима инструкция
После изменения настроек TLS часть клиентов перестала подключаться, хотя современные браузеры открывают сайт. Возможны несовместимость протоколов, алгоритмов и сертификатов, ошибки промежуточной цепочки или требования взаимной аутентификации.
#Основные причины и их признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Старый клиент не поддерживает TLS 1.2/1.3Пересечение разрешённых версий протокола у клиента и сервера пустое. | Новые браузеры работают, старое устройство выдаёт handshake failure | Определите версию клиента и подготовьте безопасное обновление. |
| Нет общего набора шифров или группНабор cipher suites, elliptic groups и алгоритм подписи может не пересекаться. | Ошибка возникает у одного приложения или в конкретной ОС | Проверьте переговоры TLS, не отключая защиту. |
| Проверка сертификата или mTLSНекоторым клиентам не хватает промежуточных сертификатов либо сервер запрашивает клиентский сертификат. | Клиент сообщает unknown_ca, bad_certificate либо certificate_required | Разделите ошибки рукопожатия и доверия. |
#Пошаговая диагностика и устранение
- Соберите параметры неработающего клиентаЗапишите версию ОС, приложения, точный текст ошибки, время и наличие корпоративного прокси. Уточните, перестал ли клиент работать сразу после изменений TLS. Не просите пользователя пересылать закрытые ключи или отключать проверку сертификатов.
- Снимите конфигурацию до измененияНа сервере сохраните конфигурацию виртуального узла и выпишите SSL/TLS-параметры до и после обновления: версии, шифры, группы, цепочку и настройки клиентских сертификатов. В панелях хостинга пути могут отличаться от обычного Nginx.
- Проверьте успешное современное соединениеНа внешней машине выполните
openssl s_clientс правильным SNI и проверкой ошибки. Успех доказывает работоспособность одного набора алгоритмов, но не совместимость со всеми старыми клиентами.Linux · Терминал (Bash)КомандаТерминал с OpenSSL; замените домен. В некоторых версиях ключи/шифры отличаются, проверьте справку установленной утилиты.openssl s_client -connect example.com:443 -servername example.com -verify_return_error </dev/null
- Сравните поддерживаемые версии протоколаНа диагностической машине с OpenSSL, поддерживающим TLS 1.2, выполните пробу
-tls1_2. Если удаётся только TLS 1.3, отдельно изучите политику совместимости. Не включайте устаревшие TLS 1.0/1.1 в обход политики безопасности.Linux · Терминал (Bash)КомандаТерминал с OpenSSL. Ошибка может относиться и к сертификату/шифру, а не исключительно версии протокола.openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null
- Проверьте наборы шифров и сертификатСопоставьте сообщение клиента с журналом TLS-сервера. Убедитесь, что сервер отдаёт цепочку, доступную клиенту, и что алгоритм ключа поддерживается им. Для старых устройств рассмотрите обновление прошивки или поддерживаемый безопасный шлюз.
- Исключите ложный mTLSПроверьте, не включено ли в нужном виртуальном узле обязательное требование клиентского сертификата (
ssl_verify_client onи аналоги). Если mTLS нужен для админки, не отключайте его глобально: вынесите интерфейсы по назначению и сохраните контроль доступа.
- Восстановите безопасный совместимый наборПрименяйте только документированную конфигурацию TLS, соответствующую требованиям безопасности организации. Если изменение прервало критичные клиенты, временно откатите последнюю правку по согласованному плану и обновляйте клиенты, а не разрешайте небезопасные протоколы для всех.
- Испытайте разных клиентовПроверьте новый браузер, проблемное приложение и, если есть, Android/iOS на поддерживаемых версиях. После каждой правки делайте тест конфигурации сервера и смотрите логи, а не ориентируйтесь на один успешный браузер.
#Проверка результата
Все поддерживаемые клиенты устанавливают TLS и получают корректную цепочку; небезопасные протоколы и алгоритмы не включены, а требования к mTLS сохранились только там, где они действительно нужны.
#Если решить проблему не удалось
Если старое устройство аппаратно не поддерживает необходимый TLS, обновите прошивку или рассмотрите отдельный управляемый шлюз. Не советуйте пользователю отключать проверку TLS: это маскирует перехват и подмену сервера.