Перейти к содержимому
ecdsa.com
OpenSSL CLI (openssl s_client / openssl verify -purpose)OpenSSL CLI

Сообщение об ошибке

verify error:num=26:unsuitable certificate purpose

Также выводится как

  • Verify return code: 26 (unsuitable certificate purpose)
  • error 26 at 0 depth lookup: unsuitable certificate purpose

s_client выводит «verify error:num=26:…» и «Verify return code: 26 (…)», а openssl verify — «error 26 at <depth> depth lookup: unsuitable certificate purpose». Go выдаёт для той же проблемы сообщение «x509: certificate specifies an incompatible key usage».

OpenSSL CLI (openssl s_client / openssl verify -purpose) — X509_V_ERR_INVALID_PURPOSE

Что это означает

Ошибка OpenSSL 26 (X509_V_ERR_INVALID_PURPOSE): в остальном цепочка действительна, но расширения одного из сертификатов не разрешают назначение, которое проверяется. s_client проверяет, пригоден ли сертификат сервера для назначения «TLS-сервер», поэтому сертификат, у которого в extendedKeyUsage указан только clientAuth (или emailProtection), проверку не проходит; openssl verify проверяет то назначение, которое вы зададите в -purpose.

Почему это происходит

Как исправить

  1. 1.

    Посмотрите расширения использования ключа

    extendedKeyUsage, keyUsage и basicConstraints показывают, для чего можно использовать сертификат; openssl verify -purpose проверяет конкретное назначение.

    bash
    openssl x509 -in server.pem -noout -ext extendedKeyUsage,keyUsage,basicConstraints
    # Check against the purpose you need: sslserver, sslclient, smimesign, ...
    openssl verify -CAfile root.pem -purpose sslserver server.pem
  2. 2.

    Перевыпустите сертификат для нужного назначения

    Сертификату TLS-сервера нужны serverAuth в extendedKeyUsage (если это расширение есть) и digitalSignature в keyUsage.

    bash
    openssl req -new -key server.key -out server.csr -subj "/CN=api.example.com" \
      -addext "subjectAltName=DNS:api.example.com" -addext "extendedKeyUsage=serverAuth"

Связанные ошибки

Открыть всю базу ошибок подписей