在Apache环境中配置国密(SM2)证书,关键在于理解它与传统RSA证书在信任体系和技术实现上的根本不同。国密证书遵循一套独立的密码体系,其信任链必须全程使用国密算法。因此,配置的核心要点在于构建这条完整的、自洽的信任链。

以下是确保国密证书链完整性配置的几个关键要点:

一、要点一:环境准备——构建国密兼容基础

Apache和OpenSSL官方版本不支持国密算法,这是导致配置失败的常见原因。

1.    升级OpenSSL:必须使用1.1.1及以上版本,且编译时需包含对SM2的支持。可通过  `openssl  version  -a`  检查输出中是否包含  `enable-sm2`  字样。

2.    重新编译Apache:需要使用支持国密的OpenSSL库(如  `GMSSL`或  `Wotrus  SSL`)重新编译Apache。

二、要点二:证书文件准备——确保文件齐全

从CA机构获取证书时,通常会收到以下三个文件:

      服务器证书文件  (`server.crt`  或  `your_domain.crt`)

      私钥文件  (`server.key`  或  `your_domain.key`)

      证书链文件  (`chain.crt`  或  `ca-bundle.crt`)

三、要点三:Apache配置——正确加载证书链

这是确保信任链完整性的核心步骤,也是最常见的配置错误点。

1.    合并证书链:将服务器证书和证书链文件(包含所有中间证书)合并为一个完整的PEM格式文件。

        bash

        cat  server.crt  chain.crt  >  fullchain.crt

2.    配置指令:在Apache的SSL配置文件中(通常是`httpd-ssl.conf`或`extra/httpd-ssl.conf`)进行如下配置:

              `SSLCertificateFile`:指向合并后的完整证书链文件  `fullchain.crt`。

              `SSLCertificateKeyFile`:指向私钥文件  `server.key`。

              `SSLCertificateChainFile`:**此指令在Apache  2.4.8及以上版本已废弃**,不建议使用。只需确保`SSLCertificateFile`指向的文件已包含完整的证书链即可。

四、要点四:进阶实践——双证书部署

为解决国密浏览器(如360安全浏览器、红莲花浏览器)与主流浏览器(Chrome、Firefox)的兼容性问题,推荐使用SM2/RSA双证书部署方案。

      实现方式:在同一443端口同时配置SM2和RSA两套证书,利用TLS握手中的ALPN(应用层协议协商)  扩展,根据客户端声明自动选择对应证书。

      优势:国密浏览器使用SM2证书实现合规加密,而普通浏览器使用RSA证书确保正常访问,兼顾了合规性与普遍兼容性。

五、要点五:验证与测试

配置完成后,务必进行全面验证:

      重启Apache:配置修改后,执行  `sudo  systemctl  restart  httpd`  重启服务,并检查错误日志  `error_log`。

      使用`openssl`测试:通过命令  `openssl  s_client  -connect  your_domain.com:443  -showcerts`  检查返回的证书链是否完整。

      浏览器访问测试:分别使用国密浏览器(验证国密通道)和普通浏览器(验证RSA兼容性)访问网站,确认均能正常建立安全连接。

六、常见问题与排查

      问题:证书链加载失败

              原因:OpenSSL版本不支持SM2,或`SSLCertificateFile`未包含完整证书链。

              解决:升级至支持国密的OpenSSL,并确保正确合并了证书链文件。

      问题:浏览器提示“不安全连接”

              原因:浏览器不信任国密根证书,或仅部署了国密证书。

              解决:使用国密浏览器访问;或部署SM2/RSA双证书方案。

      问题:CSR申请失败

              原因:使用了不支持SM2签名算法的旧版OpenSSL生成CSR。

              解决:使用支持国密的OpenSSL版本(1.1.1+)生成CSR。

总而言之,Apache国密环境配置的核心在于构建一个完整的、端到端的国密信任链。这要求从底层环境(OpenSSL/Apache)、证书文件(完整链)到上层应用(双证书部署)都进行适配。遵循上述要点,可以有效规避常见问题,顺利完成国密证书的部署。