用户在配置Apache支持国密SSL证书,核心在于将对`SSLCertificateFile`等指令的修改与底层国密模块的集成结合进行。
标准的Apache HTTP Server不支持国密算法(SM2/SM3/SM4),`SSLCertificateFile`指令默认只能加载RSA或ECDSA签名的证书。因此,您需要完成以下四个关键步骤:
1. 前提:安装支持国密的Apache环境
首先,必须确保Apache能“理解”国密证书。您需要安装一个支持国密的定制版Apache环境。主流方案是使用集成了国密版OpenSSL(如GMSSL)的Apache,具体步骤包括:
下载国密版OpenSSL:从GMSSL项目等渠道获取并安装。
编译Apache:在编译Apache时,通过`--with-ssl`参数指定新安装的国密版OpenSSL的路径,确保`mod_ssl`模块连接到正确的底层库。
2. 核心:编辑`httpd.conf`及`httpd-ssl.conf`
完成环境准备后,开始进行配置。Apache的SSL配置通常分散在两个文件中。
在`httpd.conf`中启用SSL模块:找到并取消以下两行前的注释符号“#”。
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
在`httpd-ssl.conf`中配置国密证书:这是最关键的步骤。国密SSL证书通常采用“双证书”模式,因此您需要配置签名密钥对和加密密钥对两套独立的`SSLCertificateFile`和`SSLCertificateKeyFile`指令。配置示例如下:
# 签名证书与私钥
SSLCertificateFile "/your/path/to/server_sign.crt"
SSLCertificateKeyFile "/your/path/to/server_sign.key"
# 加密证书与私钥(国密特有)
SSLCertificateFile "/your/path/to/server_encrypt.crt"
SSLCertificateKeyFile "/your/path/to/server_encrypt.key"
# 中级CA证书
SSLCertificateChainFile "/your/path/to/ca.crt"
请注意:在对配置文件进行任何修改前,务必备份原始文件。
3. 关联:配置密码套件
为了使服务器使用国密算法进行加密通信,需要配置`SSLCipherSuite`指令,明确指定国密套件:
SSLCipherSuite "ECDHE-SM2-SM4-SM3:SM2-SM4-SM3"
4. 验证:检查配置是否正确
修改完成后,通过Apache自带的工具验证语法无误,并重启服务。
1. 验证配置文件:在Apache安装目录下执行以下命令,应返回`Syntax OK`。
bash
bin/apachectl -t
2. 重启Apache:根据您的系统环境,使用`systemctl restart httpd`或类似命令重启服务。
完成以上配置后,您的Apache服务器即可支持国密SSL。通常,为了保障广泛的浏览器兼容性(在国密浏览器和普通浏览器下都能访问),生产环境建议采用“SM2/RSA双证书部署”方案,即同时配置国密和RSA证书。