Skip to content
EN

SSL_ERROR_NO_RENEGOTIATION

Коротко:

SSL_ERROR_NO_RENEGOTIATION — Firefox попытался renegotiate TLS session (например, для client cert auth на specific path), но server отверг. Renegotiation deprecated по security reasons (CVE-2009-3555). nginx с ssl_verify_client on per-location требует renegotiation на Firefox, но Chrome использует HTTP/2-compatible подход.

Ниже: причины, исправление, FAQ.

Проверить SSL своего сайта →

Причины ошибки

  • nginx per-location ssl_verify_client on
  • Apache SSLVerifyClient require в
  • TLS 1.3 без post-handshake auth support
  • Server disabled renegotiation по security
  • LB/proxy не поддерживает renegotiation

Пошаговое исправление

  1. Переведите client auth на separate subdomain
  2. Используйте TLS 1.3 post-handshake auth (nginx 1.19+)
  3. Alternative: pre-configured client cert в TLS handshake
  4. Enterno SSL для renegotiation support check
  5. HTTP/2 требует separate connection для client auth

Проверить SSL-сертификат →

Смежные SSL-ошибки

Что такое ошибка SSL_ERROR_NO_RENEGOTIATION в Firefox?

Ошибка SSL_ERROR_NO_RENEGOTIATION в Firefox возникает, когда клиент (браузер) пытается инициировать повторную переговоры SSL-соединения, но сервер не поддерживает эту функциональность. Это может происходить из-за устаревших настроек конфигурации сервера или его несовместимости с современными стандартами безопасности. Для решения проблемы необходимо проверить настройки SSL на сервере и убедиться, что они соответствуют требованиям безопасности.

Как исправить ошибку SSL_ERROR_NO_RENEGOTIATION?

Для устранения ошибки SSL_ERROR_NO_RENEGOTIATION необходимо выполнить несколько шагов:

  1. Проверьте конфигурацию вашего сервера. Убедитесь, что используемая версия SSL/TLS на сервере поддерживает повторные переговоры. Например, для веб-серверов Apache можно проверить файл конфигурации httpd.conf или apache2.conf на наличие следующих строк:
SSLProtocol all -SSLv2 -SSLv3

Это отключает устаревшие протоколы и оставляет только более безопасные версии.

  1. Обновите настройки SSL. Если ваш сервер использует SSLv3, следует перейти на TLS 1.2 или выше. Это можно сделать, добавив в конфигурацию:
SSLProtocol all -SSLv3 -SSLv2 -TLSv1

Это гарантирует, что сервер будет поддерживать только современные протоколы.

  1. Проверьте поддержку повторных переговоров. Если вы хотите, чтобы сервер поддерживал повторные переговоры, убедитесь, что это разрешено в конфигурации. Для Apache это может выглядеть так:
SSLHonorCipherOrder on

Это позволяет серверу контролировать порядок шифров, используемых для подключения.

После внесения изменений в конфигурацию сервера не забудьте перезапустить его, чтобы новые настройки вступили в силу.

Пример настройки сервера для предотвращения ошибки SSL_ERROR_NO_RENEGOTIATION

Рассмотрим пример настройки веб-сервера Nginx для устранения ошибки SSL_ERROR_NO_RENEGOTIATION. Откройте файл конфигурации вашего сайта, обычно это /etc/nginx/sites-available/your_site.conf, и добавьте или измените следующие строки:

server {
    listen 443 ssl;
    server_name your_site.com;
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'HIGH:!aNULL:!MD5';

    # Отключаем поддержку повторных переговоров
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
}

В данном примере мы активируем только протоколы TLSv1.2 и TLSv1.3, что является обязательным для современных веб-сайтов. Также мы отключаем поддержку повторных переговоров, что может предотвратить возникновение ошибки.

После внесения изменений выполните команду:

sudo nginx -t

для проверки конфигурации на наличие ошибок, а затем перезапустите Nginx:

sudo systemctl restart nginx

После выполнения этих шагов ошибка SSL_ERROR_NO_RENEGOTIATION должна исчезнуть, и ваш сайт станет доступен для пользователей без проблем с безопасностью.

TL;DR: Что такое ошибка SSL_ERROR_NO_RENEGOTIATION в Firefox?

Ошибка SSL_ERROR_NO_RENEGOTIATION в Firefox возникает, когда клиент пытается инициировать повторную переговоры по SSL-соединению, но сервер не поддерживает эту функцию. Это может быть связано с конфигурацией сервера или устаревшими протоколами. Чтобы устранить ошибку, необходимо убедиться, что сервер настроен правильно и поддерживает необходимые протоколы безопасности.

Технические аспекты ошибки SSL_ERROR_NO_RENEGOTIATION

Ошибка SSL_ERROR_NO_RENEGOTIATION возникает в результате попытки клиента инициировать повторные переговоры по SSL-соединению, что не поддерживается сервером. Важно понимать, как работает процесс SSL/TLS и какие факторы могут привести к подобным ошибкам.

Повторная переговорка (renegotiation) — это процесс, который позволяет клиенту и серверу пересогласовать параметры шифрования во время активного соединения. Это может быть необходимо в случаях, когда нужно изменить уровень безопасности, например, для обновления ключей шифрования. Однако не все серверы поддерживают эту функцию, что и приводит к возникновению ошибки.

Современные версии SSL и TLS имеют разные подходы к повторной переговорке. В частности, TLS 1.2 и более поздние версии рекомендуют избегать использования повторной переговорки из-за уязвимостей, связанных с этой функцией. В результате многие серверы отключают поддержку повторной переговорки, что может привести к ошибке SSL_ERROR_NO_RENEGOTIATION при попытке клиента выполнить эту операцию.

Для диагностики проблемы можно воспользоваться инструментами командной строки, такими как openssl. Команда openssl s_client -connect example.com:443 -msg позволяет проверить, поддерживает ли сервер повторную переговорку. Если в ответе не будет информации о возможности renegotiation, это может указывать на проблему.

Кроме того, важно отметить, что некоторые настройки безопасности, такие как использование HTTP Strict Transport Security (HSTS), могут также повлиять на возможность повторной переговорки. Если сервер настроен на строгое соблюдение HSTS, это может привести к блокировке попыток изменения параметров соединения.

Для устранения проблемы с ошибкой SSL_ERROR_NO_RENEGOTIATION необходимо:

  • Проверить конфигурацию сервера на наличие поддержки повторной переговорки.
  • Обновить серверное программное обеспечение для поддержки современных стандартов безопасности.
  • Изучить логи сервера на предмет ошибок и предупреждений, связанных с SSL/TLS.
  • При необходимости изменить настройки безопасности, чтобы включить поддержку повторной переговорки, если это действительно необходимо для вашего приложения.

Ниже приведен пример конфигурации сервера Nginx, которая отключает поддержку повторной переговорки:

server {
    listen 443 ssl;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    # Отключение повторной переговорки
    ssl_renegotiation off;
}

Таким образом, правильная настройка сервера и понимание работы SSL/TLS помогут избежать возникновения ошибки SSL_ERROR_NO_RENEGOTIATION и обеспечат надежное и безопасное соединение для пользователей.

СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

Как это работает

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

Безопасность

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

Источники

Часто задаваемые вопросы

Renegotiation deprecated?

Secure renegotiation (RFC 5746) ок. Insecure renegotiation — CVE-2009-3555. TLS 1.3 вообще убрал renegotiation, заменил post-handshake auth.

HTTP/2 + client auth?

HTTP/2 не support renegotiation → separate subdomain для client auth is modern approach.

Firefox workaround?

Disable TLS 1.3: security.tls.version.max=3 в about:config. НЕ рекомендуется.

OpenSSL config?

<code>ssl_protocols TLSv1.2 TLSv1.3;</code> + применять client auth на TLS 1.3 only.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.