Перейти к основному содержимому

После настройки сертификата национального стандарта шифрования Nginx при запуске сообщает об ошибке SSL_CTX_use_certificate failed. Как это исправить?

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

Это происходит потому, что используемая в промежуточном ПО базовая библиотека OpenSSL не поддерживает алгоритмы национального стандарта шифрования (SM2/SM3/SM4).

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

Решение

Необходимо скомпилировать и установить версию OpenSSL с поддержкой национального стандарта шифрования (например, GmSSL, Tongsuo и другие ветки OpenSSL, поддерживающие национальные алгоритмы), а затем пересобрать Nginx с использованием этой версии, чтобы он поддерживал загрузку таких сертификатов.

Порядок действий (кратко):

  1. Загрузите и скомпилируйте OpenSSL с поддержкой национального стандарта (рекомендуется: Tongsuo)
  2. Пересоберите Nginx с использованием OpenSSL с поддержкой национального стандарта (--with-openssl=... указывает на версию с поддержкой национального стандарта)
  3. Настройте в Nginx двойной сертификат (сертификат национального стандарта + RSA-сертификат), чтобы обеспечить совместимость во всех сценариях