配置国密证书后,Nginx 启动报错 SSL_CTX_use_certificate failed,如何解决?
报错原因
这是因为当前中间件底层的 OpenSSL 库不支持国密算法(SM2/SM3/SM4)。
标准的 OpenSSL 无法识别国密证书格式,导致加载证书失败。
解决方案
需要编译安装国密版 OpenSSL(如 GmSSL、铜锁/Tongsuo 等支持国密算法的 OpenSSL 分支),然后使用该版本重新编译 Nginx,使其支持国密证书的加载。
操作步骤(简要):
- 下载并编译国密版 OpenSSL(推荐:铜锁 Tongsuo)
- 使用国密版 OpenSSL 重新编译 Nginx(
--with-openssl=...指向国密版) - 配置 Nginx 双证书(国密证书 + RSA 证书),确保全场景兼容