Saltar al contenido principal

Error al iniciar Nginx tras configurar un certificado de algoritmo nacional: SSL_CTX_use_certificate failed, ¿cómo solucionarlo?

Causa del error

Esto ocurre porque la biblioteca OpenSSL subyacente del middleware actual no admite los algoritmos criptográficos nacionales (SM2/SM3/SM4).

El OpenSSL estándar no puede reconocer el formato de los certificados de algoritmo nacional, lo que provoca un fallo al cargar el certificado.

Solución

Es necesario compilar e instalar una versión de OpenSSL con soporte para algoritmos nacionales (como GmSSL, Tongsuo u otras ramas de OpenSSL compatibles con dichos algoritmos) y, a continuación, recompilar Nginx con esa versión para que admita la carga de certificados de algoritmo nacional.

Pasos (resumen):

  1. Descargar y compilar la versión de OpenSSL con soporte para algoritmos nacionales (recomendado: Tongsuo)
  2. Recompilar Nginx con la versión de OpenSSL con soporte para algoritmos nacionales (--with-openssl=... apunta a la versión con soporte nacional)
  3. Configurar el doble certificado en Nginx (certificado de algoritmo nacional + certificado RSA) para garantizar la compatibilidad en todos los escenarios