Ошибка проверки клиентского SSL-сертификата: 26 неподдерживаемая цель сертификата при чтении заголовка клиентского запроса

Вопрос или проблема

Я пытаюсь отправить запрос поиска с веб-сервера на другой сервер через прокси nginx. У меня есть файл server_hostname.pem как сертификат сервера и файл ca-chain.cert.pem как клиентский сертификат. Однако я не вижу никаких результатов поиска с целевого сервера. Когда я выполняю команду curl для этого server:port, я вижу ошибку 400 Bad Request для ошибки SSL сертификата. Я предположил, что это определенно проблема с сертификатом. Затем я попытался посмотреть журнал ошибок для nginx. И я нашел ошибку 26:Unsupported certificate purpose. Чтобы проверить сертификат для целевого сервера с веб-сервера, я попробовал эту команду: openssl s_client -connect target_server:port -CAfile web_server.pem

И я вижу код возврата 21 (Невозможно проверить первый сертификат). Кто-нибудь знает, как устранить эту проблему? Заранее большое спасибо. Мое понимание SSL/TLS очень базовое. Так что, пожалуйста, дайте мне знать, если кому-то нужны дополнительные детали этой проблемы.

В сертификате есть три основных составляющие: закрытый ключ, публичный сертификат и цепочка сертификатов удостоверяющего центра (CA). В данном случае сертификат сервера является закрытым, вы должны публиковать публичный ключ в качестве клиентского ключа, а цепочка также должна быть доступна как серверу, так и клиенту – обычно для этого есть место в конфигурации, оно обычно называется цепочкой сертификатов CA или удостоверяющего центра. Причина, по которой вы получаете эту ошибку, заключается в том, что вы передаете цепочку CA в место, где ожидается клиентский сертификат/публичный ключ, а цель цепочки CA – не идентифицировать конкретный хост, а подтвердить полномочия, которые идентифицируют хост.

Ответ или решение

Ошибка аутентификации SSL: 26 unsupported certificate purpose, возникающая при работе с NGINX, может вызывать серьезные проблемы, если не обратиться к ее причинам и способам решения. Давайте более подробно рассмотрим, как устранить эту ошибку и обеспечить корректную работу вашего приложения.

Понимание проблемы

Ваша ситуация имеет несколько ключевых компонентов, которые необходимо учитывать:

  1. Протокол SSL/TLS: это набор криптографических протоколов, который обеспечивает безопасную передачу данных. Сертификаты SSL используются для проверки подлинности серверов и клиентов.

  2. Сертификаты: В вашем случае вы имеете дело с тремя основными компонентами:

    • Сертификат сервера (server_hostname.pem), который должен быть установлен на сервере для обеспечения его идентификации.
    • Цепочка CA (ca-chain.cert.pem), которая подтверждает доверие к сертификату.
    • Клиентский сертификат, который вы, судя по всему, принимаете от CA для аутентификации клиента.
  3. Ошибка: Ошибка "26 unsupported certificate purpose" указывает, что сертификат, который вы используете для аутентификации клиента, не поддерживает назначение, необходимое для конкретного приложения. Это может быть связано с тем, что сертификат был сформирован с целью, отличной от требуемой.

Шаги для решения проблемы

  1. Проверка сертификата клиента: Убедитесь, что ваш клиентский сертификат имеет правильное назначение. Для этого используйте команду:

    openssl x509 -in client_certificate.pem -text -noout

    В выводе данной команды найдите секцию X509v3 Extended Key Usage. Убедитесь, что в ней указаны необходимые назначения (например, clientAuth).

  2. Правильная настройка конфигурации NGINX:

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

      server {
      listen 443 ssl;
      server_name example.com;
      
      ssl_certificate /path/to/server_certificate.pem;
      ssl_certificate_key /path/to/server_key.pem;
      ssl_client_certificate /path/to/ca_chain.cert.pem;  # CA сертификат для проверки клиента
      ssl_verify_client on;  # Включить проверку клиента
      }
  3. Проверка сертификатов CA: Убедитесь, что CA сертификат, используемый для проверки клиентского сертификата, доступен и правильно указан в конфигурации NGINX. Если цепочка сертификатов некорректна, это может привести к ошибке Unable to verify the first certificate.

  4. Тестирование с помощью openssl: Используйте команду openssl s_client для диагностики:

    openssl s_client -connect target_server:port -CAfile /path/to/ca_chain.cert.pem

    Здесь вы можете наблюдать детали соединения и выявлять проблемы с сертификатами.

Заключение

Устранение ошибки "26 unsupported certificate purpose" требует тщательной проверки всех элементов сертификатов и настройки конфигурации сервера. Убедитесь, что все файлы сертификатов правильно указаны и имеют необходимые назначение для успешной аутентификации клиента. Неправильные настройки могут мешать взаимодействию между вашим веб-сервером и целевым сервером, поэтому следуйте предложенным шагам для диагностики и решения проблемы.

Оцените материал
Добавить комментарий

Капча загружается...