Перейти к содержимому
SEO/Опубликовано 20 октября 2026 г./5 мин

ERR_SSL_KEY_USAGE_INCOMPATIBLE: назначение ключа не подходит

ERR_SSL_KEY_USAGE_INCOMPATIBLE — в сертификате сайта поле keyUsage не разрешает тот способ шифрования, о котором договорились браузер и сервер. Проверили 14 вариантов в Chrome 151, Firefox и curl и показали, как перевыпустить сертификат.

ERR_SSL_KEY_USAGE_INCOMPATIBLE: назначение ключа не подходит
N
Команда NEXFORCE
Кто пишет блог

ERR_SSL_KEY_USAGE_INCOMPATIBLE — ошибка Chrome и других браузеров на Chromium: сертификат сайта запрещает ключу то действие, которое нужно для выбранного способа шифрования. Сертификат может быть выдан доверенным центром, не просрочен и выписан на правильное имя — браузер всё равно оборвёт соединение.

Мы разобрали код Chromium и BoringSSL, выпустили 7 сертификатов с разным полем keyUsage и проверили их на nginx в Chrome 151, Firefox 151 и curl.

Как определить причину за минуту

Посмотрите поле keyUsage в сертификате сайта:

echo | openssl s_client -connect example.local:443 -servername example.local 2>/dev/null \
  | openssl x509 -noout -ext keyUsage
Что в выводеТип ключаЧто будет в Chrome
Digital Signature, Key EnciphermentRSAработает
Digital SignatureRSA или ECDSAработает (кроме устаревших RSA-шифров)
только Key EnciphermentRSAERR_SSL_KEY_USAGE_INCOMPATIBLE
только Key AgreementECDSAошибка (на TLS 1.3 эта, на TLS 1.2 — другая)
расширения нетлюбойработает

Если видите строку без Digital Signature — причина найдена: сертификат нужно перевыпустить.

Что означает ошибка

В списке ошибок Chromium (net/base/net_error_list.h) у неё код −181 и описание:

The server's certificate has a keyUsage extension incompatible with the negotiated TLS key exchange method.

То есть расширение keyUsage в сертификате сервера несовместимо с согласованным методом обмена ключами TLS. В Chromium ошибка появляется из одного места: файл net/ssl/openssl_ssl_util.cc переводит в неё ошибку библиотеки BoringSSL SSL_R_KEY_USAGE_BIT_INCORRECT.

Что такое keyUsage

Это поле сертификата X.509 (RFC 5280, раздел 4.2.1.3), которое говорит, для чего можно использовать ключ. Для сайтов важны три значения:

  • Digital Signature — ключ подписывает данные. Так работают все современные шифры: ECDHE_RSA, ECDHE_ECDSA и любые шифры TLS 1.3.
  • Key Encipherment — ключом шифруют секрет сессии. Так работает устаревший обмен ключами RSA (шифры вида AES128-GCM-SHA256 без ECDHE в начале).
  • Key Agreement — ключ участвует в согласовании ключей. Для сертификатов сайтов почти не встречается.

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

Где BoringSSL проверяет поле

Проверку делает функция ssl_cert_check_key_usage в ssl/ssl_cert.cc. Если в сертификате нет расширения keyUsage, функция пропускает его. Если расширение есть, нужный бит должен стоять. Вызывают её в двух местах:

  • TLS 1.2 — ssl/handshake_client.cc: для обмена ключами RSA нужен Key Encipherment, для остальных — Digital Signature. Проверка идёт после проверки цепочки сертификатов.
  • TLS 1.3 — ssl/tls13_both.cc: всегда нужен Digital Signature, с комментарием «TLS 1.3 always uses certificate keys for signing». Проверка идёт сразу при разборе сертификата, до проверки цепочки, и сервер получает alert 47 (illegal parameter).

С какой версии Chrome

В описании политики Chrome RSAKeyUsageForLocalAnchorsEnabled сказано: «Starting in Google Chrome 124, this check is always enabled». В версиях 116–123 политика позволяла пропустить проверку, если соединение согласовало TLS 1.2 и сертификат RSA вёл к локальному корневому сертификату — установленному пользователем или политикой компании. Во всех остальных случаях проверка работала и тогда. Сейчас политика помечена устаревшей.

Поэтому ошибку чаще всего видят на внутренних системах: панели управления оборудованием, серверах IIS, корпоративных порталах с самоподписанными сертификатами, которые годами работали в Chrome, а после обновления перестали открываться.

Стенд: 14 сочетаний сертификата и протокола

Мы выпустили свой корневой центр и семь сертификатов для одного имени, отличающихся только полем keyUsage и типом ключа, и поставили их на nginx 1.31.6 с разными протоколами и шифрами. Chrome 151 запускали с флагом --ignore-certificate-errors, чтобы неизвестный корневой центр не мешал, curl — с нашим корневым сертификатом.

СертификатПротокол, шифрChrome 151Firefox 151curl
RSA, Digital Signature + Key EnciphermentTLS 1.2200200200
то жеTLS 1.3200200200
RSA, только Key EnciphermentTLS 1.2ошибка200200
то жеTLS 1.3ошибка200200
то жеTLS 1.2 и 1.3ошибка200200
то жеTLS 1.2, только шифр RSA200200200
RSA, только Digital SignatureTLS 1.2200200200
то жеTLS 1.2, только шифр RSAошибка200200
RSA без keyUsageTLS 1.2200200200
ECDSA, Digital SignatureTLS 1.2200200200
ECDSA, только Key AgreementTLS 1.2VERSION_OR_CIPHER_MISMATCHSSL_ERROR_UNKNOWNошибка
то жеTLS 1.3ошибка200200
RSA, перевыпущенный (команда ниже)TLS 1.2200200200
то жеTLS 1.3200200200

«Ошибка» в колонке Chrome — ERR_SSL_KEY_USAGE_INCOMPATIBLE. Firefox мы запускали с принятием ошибок сертификатов, поэтому его колонка показывает только то, что сам TLS проходит. Почему он принимает такие сертификаты и с доверенным центром, видно из кода — об этом ниже.

Что показал стенд:

  1. Ошибка не зависит от доверия. Флаг --ignore-certificate-errors её не отключает: проверка сидит в коде рукопожатия, а не в проверке сертификата.
  2. Устаревший шифр RSA меняет требование. Сертификат с одним Key Encipherment открылся, когда сервер разрешал только шифр AES128-GCM-SHA256: Chrome 151 его ещё предлагает. А сертификат с одним Digital Signature на том же шифре дал ошибку.
  3. Включённый TLS 1.3 не спасает. Сервер с TLS 1.2 и 1.3 договорился с Chrome на 1.3, и там нужен Digital Signature.
  4. Порядок ошибок разный. Без флага --ignore-certificate-errors Chrome на TLS 1.2 сначала сообщал ERR_CERT_AUTHORITY_INVALID — проверка цепочки идёт раньше. На TLS 1.3 сразу ERR_SSL_KEY_USAGE_INCOMPATIBLE. Если у сайта две проблемы сразу, на TLS 1.2 вы увидите сначала одну, а после её исправления — вторую.
  5. ECDSA с Key Agreement на TLS 1.2 не доходит до Chrome. Сервер на OpenSSL сам отказывается: в журнале nginx «no shared cipher», в Chrome — ERR_SSL_VERSION_OR_CIPHER_MISMATCH.

Экран ошибки в Chrome 151 с английским интерфейсом — «This site can’t be reached», фраза о том, что сайт может быть временно недоступен или переехал, и код ERR_SSL_KEY_USAGE_INCOMPATIBLE внизу. Кнопки «Перейти на сайт» нет — это не ошибка сертификата, которую можно пропустить.

Почему Firefox и curl открывают сайт

Firefox. В security/certverifier/CertVerifier.cpp для сертификата сервера Firefox строит цепочку по очереди с тремя назначениями: digitalSignature (с пометкой «(EC)DHE»), keyEncipherment («RSA») и keyAgreement («(EC)DH»). Подошло любое — сертификат принят. С шифром, о котором договорились, Firefox его не сверяет. Поэтому все наши сертификаты, в которых есть хотя бы одно из трёх назначений, в Firefox работают.

curl на OpenSSL тоже не сверяет keyUsage сертификата сервера с шифром: на стенде он получил 200 от всех RSA-сертификатов, которые отверг Chrome. Если вы проверяете сайт через curl и видите успех — это не значит, что Chrome его откроет.

Что в журнале сервера

nginx пишет отказ только на уровне info — с журналом по умолчанию вы ничего не увидите. С error_log … info; на стенде было:

  • TLS 1.3 — SSL_do_handshake() failed (… ssl/tls alert illegal parameter:SSL alert number 47);
  • TLS 1.2 — peer closed connection in SSL handshake.

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

Почему возникает ERR_SSL_KEY_USAGE_INCOMPATIBLE

  1. Самоподписанный сертификат выпущен по старому шаблону. Если RSA-сертификату указали только Key Encipherment, при обмене ключами RSA этого хватало, а Chrome до версии 124 в части случаев не проверял поле.
  2. Сертификат корпоративного центра выдан по шаблону, где не указан Digital Signature.
  3. Оборудование и программы со встроенным веб-интерфейсом. Статьи об этой ошибке есть, например, в базе знаний Dell (CloudLink) и на форуме Nintex (RPA Central).
  4. Сервер принудительно использует устаревший шифр RSA при сертификате только с Digital Signature — обратный случай, встречается реже.

Публичные центры выдают сертификаты с Digital Signature. На 20.10.2026 сертификаты nexforce.ru (Let's Encrypt), google.com (Google Trust Services) и ya.ru (GlobalSign) содержали именно это значение. Так что у обычного сайта с сертификатом от публичного центра эта ошибка маловероятна.

Как исправить ошибку владельцу сайта

Шаг 1. Перевыпустите сертификат с правильным keyUsage

Для самоподписанного сертификата на OpenSSL 3:

openssl req -x509 -newkey rsa:2048 -nodes -keyout site.key -out site.crt -days 365 \
  -subj "/CN=example.local" \
  -addext "subjectAltName=DNS:example.local" \
  -addext "keyUsage=critical,digitalSignature,keyEncipherment" \
  -addext "extendedKeyUsage=serverAuth"

Именно такой сертификат на стенде открылся в Chrome 151 и по TLS 1.2, и по TLS 1.3. Описание политики Chrome даёт тот же совет: если не уверены, включайте в RSA-сертификаты для HTTPS оба значения.

Для корпоративного центра сертификации поправьте шаблон сертификата веб-сервера: в нём должно быть разрешено использование ключа для цифровой подписи. После этого перевыпустите сертификаты.

Шаг 2. Установите сертификат и перезапустите сервер

Замените файлы сертификата и ключа, проверьте конфигурацию (nginx -t) и перезагрузите веб-сервер. На оборудовании — загрузите новый сертификат через его веб-интерфейс или обновите прошивку, если производитель выпустил исправление.

Шаг 3. Проверьте результат

Команда из начала статьи должна показать Digital Signature. Проверяйте именно в Chrome или другом браузере на Chromium: curl и Firefox, как показал стенд, примут и неправильный сертификат.

Что делать посетителю

Исправить ошибку на своей стороне нельзя: дело в сертификате сайта. Очистка кэша, смена сети и отключение антивируса не помогут. Если сайт нужен срочно, откройте его в Firefox — он такой сертификат примет — и сообщите владельцу или администратору, что Chrome показывает ERR_SSL_KEY_USAGE_INCOMPATIBLE.

Влияет ли ошибка на SEO

Сверяет ли keyUsage робот Google, неизвестно: страницы он загружает своим сборщиком, а не браузером Chrome, и на нашем стенде этого не проверить. На практике ошибка почти всегда касается внутренних систем, которых нет в поиске. Если её показывает публичный сайт, это срочно: страницы недоступны большинству посетителей.

Чем она отличается от похожих ошибок

ОшибкаЧто не так
ERR_SSL_KEY_USAGE_INCOMPATIBLEназначение ключа в сертификате не подходит к шифру
ERR_SSL_VERSION_OR_CIPHER_MISMATCHнет общей версии TLS или шифра
NET::ERR_CERT_AUTHORITY_INVALIDбраузер не доверяет центру, выдавшему сертификат
NET::ERR_CERT_COMMON_NAME_INVALIDсертификат выдан на другое имя
ERR_SSL_PROTOCOL_ERRORобщий сбой протокола TLS

Границы замера

Стенд собран 20.10.2026: nginx 1.31.6 в Docker, Chrome 151.0.7922.71 и Firefox 151.0 через Playwright, curl на OpenSSL 3.0.22. Сертификаты выпущены своим корневым центром; Chrome запускали с принятием ошибок сертификатов, Firefox — тоже, поэтому его поведение с доверенным центром мы описываем по исходному коду. Safari и Chrome на Android не проверяли. Живой сайт с этой ошибкой в публичном интернете мы не искали: ошибка возникает в основном на внутренних системах.

Источники

  • Chromium: net/base/net_error_list.h, net/ssl/openssl_ssl_util.cc, описание политики RSAKeyUsageForLocalAnchorsEnabled
  • BoringSSL: ssl/ssl_cert.cc, ssl/handshake_client.cc, ssl/tls13_both.cc
  • Firefox: security/certverifier/CertVerifier.cpp
  • RFC 5280, раздел 4.2.1.3 «Key Usage»

Похожие ошибки

Коротко

Chrome с версии 124 сверяет поле keyUsage сертификата сервера с шифром. Для TLS 1.3 и современных шифров TLS 1.2 нужен Digital Signature; если в RSA-сертификате только Key Encipherment, будет ERR_SSL_KEY_USAGE_INCOMPATIBLE. Firefox и curl такой сертификат примут, поэтому проверять нужно в Chrome. Исправление одно — перевыпустить сертификат с keyUsage=digitalSignature,keyEncipherment.

Вопросы и ответы

FAQ по теме

Что значит ERR_SSL_KEY_USAGE_INCOMPATIBLE?+
Chrome прервал соединение, потому что расширение keyUsage в сертификате сервера не разрешает ключу то действие, которого требует выбранный способ обмена ключами. Чаще всего у RSA-сертификата указано только Key Encipherment, а для современного шифра нужен Digital Signature.
Почему сайт открывается в Firefox, а в Chrome нет?+
Firefox принимает сертификат сервера, если в keyUsage есть любое из трёх назначений — подпись, шифрование ключа или согласование ключа, — и не сверяет его с шифром. Chrome сверяет. На стенде Firefox 151 открыл все сертификаты, которые Chrome 151 отверг.
С какой версии Chrome появилась ошибка?+
По описанию политики Chrome RSAKeyUsageForLocalAnchorsEnabled, с версии 124 проверка включена всегда. В версиях 116–123 её можно было отключить политикой для RSA-сертификатов от локальных корневых центров при TLS 1.2. Сейчас политика устарела и не действует.
Можно ли отключить проверку в Chrome?+
Нет. Политика, которая её отключала, работала только в Chrome 116–123. Флаг --ignore-certificate-errors тоже не помогает: на стенде Chrome 151 с этим флагом всё равно выдавал ERR_SSL_KEY_USAGE_INCOMPATIBLE. Нужно перевыпустить сертификат.
Какие значения keyUsage нужны для сертификата сайта?+
Для RSA — Digital Signature и Key Encipherment, для ECDSA — Digital Signature. Можно вовсе не указывать расширение keyUsage: на стенде RSA-сертификат без него Chrome принял.
Почему curl открывает сайт, а Chrome — нет?+
curl на OpenSSL не сверяет keyUsage сертификата сервера с шифром. На стенде curl получил 200 от всех RSA-сертификатов, которые Chrome отверг. Поэтому проверка curl тут ничего не доказывает.
Это ошибка сайта или моего компьютера?+
Сайта, точнее его сертификата. Посетитель может открыть сайт в Firefox, но исправить ошибку может только владелец: выпустить сертификат с правильным keyUsage и установить его на сервер.
Читайте также

Связанные материалы

SEO

ERR_SSL_PROTOCOL_ERROR: браузер не договорился с сайтом о шифровании

ERR_SSL_PROTOCOL_ERROR — браузер и сервер не смогли начать защищённое соединение. Открыли в Chrome 22 адреса с такой поломкой и получили семь разных ошибок, среди них ERR_SSL_UNRECOGNIZED_NAME_ALERT. Что чинить у себя, а что у сайта.

SEO

ERR_SSL_VERSION_OR_CIPHER_MISMATCH: старый протокол или нет сертификата

ERR_SSL_VERSION_OR_CIPHER_MISMATCH — браузер и сервер не договорились о версии TLS или шифре. Проверили на стенде, какие настройки вызывают ошибку, и разобрали шесть живых сайтов: старый TLS только у двух.

SEO

NET::ERR_CERT_AUTHORITY_INVALID: браузер не доверяет сертификату

NET::ERR_CERT_AUTHORITY_INVALID — браузер не нашёл доверенного издателя сертификата. Проверили на стенде семь вариантов цепочки и разобрали живые сайты с ошибкой: заглушки хостинга, обрывы цепочки, сертификаты Минцифры.

SEO

SSL-сертификат сайта: срок действия, проверка и что будет, если не заметить

Обход 260 адресов Екатеринбурга: сертификат прочитан у 251, у двух он просрочен больше чем на полгода, а 19 адресов встречают посетителя предупреждением, если он набрал адрес с «www».