在Apache中配置国密证书,核心参数仍然是  `SSLCertificateFile`、`SSLCertificateKeyFile`  和  `SSLCertificateChainFile`,但它们生效的前提是Apache的底层SSL库(如OpenSSL)必须支持国密算法(SM2/SM3/SM4)。

下面为你详细解析这几个核心参数及其配置方法。

环境准备:国密支持是前提

标准Apache和OpenSSL不支持国密算法,因此配置前必须完成环境改造。

1.    替换OpenSSL为国密版:编译安装支持SM2/SM3/SM4的OpenSSL,如`GMSSL`。

2.    重新编译Apache:编译时需链接到新安装的国密版OpenSSL,并启用`mod_ssl`模块。

3.    开启443端口:确保服务器防火墙开放了HTTPS默认端口。

核心配置参数详解

国密证书的配置主要在`httpd-ssl.conf`或`ssl.conf`文件中进行。

      `SSLCertificateFile`:指定服务器证书文件。这个文件包含了你的域名证书(终端实体证书)。国密证书通常是PEM格式,以`.crt`或`.pem`结尾。

              示例:`SSLCertificateFile  "/etc/httpd/ssl/your_domain_sm2.crt"`。

      `SSLCertificateKeyFile`:指定服务器证书的私钥文件。这是与`SSLCertificateFile`中公钥配对的SM2私钥,必须妥善保管。

              示例:`SSLCertificateKeyFile  "/etc/httpd/ssl/your_domain_sm2.key"`。

      `SSLCertificateChainFile`:指定证书链文件。用于补齐从你的服务器证书到根证书之间的中间证书,构建完整的信任链。重要提示:国密证书的根证书通常不在浏览器或操作系统的默认信任库中,因此正确配置此文件尤为重要。

              示例:`SSLCertificateChainFile  "/etc/httpd/ssl/ca_chain_sm2.crt"`。

国密双证书部署方案

为确保兼容性(普通浏览器用RSA,国密浏览器用SM2),常采用双证书方案。

      方案:在同一个443端口上同时配置RSA和SM2两套证书。

      实现:借助ALPN(应用层协议协商)  扩展。当国密浏览器(如密信、红莲花)请求时,声明支持  `sm2-http/1.1`  协议,Apache据此自动选择SM2证书。

      限制:Apache原生不支持单`VirtualHost`内配置两套证书,通常需要借助**国密增强版Apache或代理方案实现。

配置示例与验证

一个标准的国密虚拟主机配置片段如下:

apache

<VirtualHost  *:443>

        ServerName  www.yourdomain.com

        DocumentRoot  "/var/www/html"

      #  国密证书配置

        SSLEngine  on

        SSLCertificateFile  "/etc/httpd/ssl/your_domain_sm2.crt"

        SSLCertificateKeyFile  "/etc/httpd/ssl/your_domain_sm2.key"

        SSLCertificateChainFile  "/etc/httpd/ssl/ca_chain_sm2.crt"

        #  国密加密套件(需根据实际环境调整)

        SSLCipherSuite  "ECDHE-SM2-SM4-SM3:SM2-SM4-SM3"

        SSLProtocol  all  -SSLv2  -SSLv3  -TLSv1  -TLSv1.1

        SSLHonorCipherOrder  on

</VirtualHost>

配置完成后,重启Apache使配置生效:

bash

sudo  systemctl  restart  httpd

验证方法

1.    国密浏览器:使用密信、红莲花等国密浏览器访问,查看地址栏是否显示安全锁标识。

2.    命令行工具:使用`gmssl  s_client`命令测试国密连接。

3.    检查错误日志:若服务启动失败,务必检查Apache的错误日志(通常位于`/var/log/httpd/error_log`)进行排查。

注意事项

      证书文件路径:确保配置文件中的路径绝对正确,且Apache进程有读取权限。

      备份配置:任何修改前,请备份原配置文件。

      私钥安全:私钥文件权限应设置为`600`,仅允许root用户读写。

总而言之,配置Apache国密证书的关键在于底层SSL库的国密改造,而`SSLCertificateFile`等参数本身用法不变。`SSLCertificateChainFile`对国密证书尤为重要。对于生产环境,建议采用双证书方案以确保最大兼容性。