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