编译支持国密(SM2/SM3/SM4)的 Apache HTTP Server,其核心在于使用国密版 OpenSSL(如 GMSSL)来替换标准 OpenSSL。
根据相关文档,以下是需要安装的开发依赖包清单:
一、开发依赖包清单
基础编译工具
`gcc`, `gcc-c++`: GNU 编译器套件,用于编译 C/C++ 源代码。
`make`: 自动化编译工具。
`autoconf`, `libtool`: 用于生成和配置编译脚本。
二、Apache 核心依赖
`pcre-devel`: PCRE (Perl Compatible Regular Expressions) 开发库,Apache 的重写模块 (`mod_rewrite`) 依赖此库。
`expat-devel`: Expat XML 解析器开发库。
`apr` 与 `apr-util`: Apache 可移植运行时库(Apache Portable Runtime),是 Apache 的核心依赖。
`bison`, `bison-devel`: GNU 语法分析器生成器。
`flex`, `flex-devel`: 词法分析器生成器。
三、国密相关依赖
`gmssl_openssl`: 这是最关键的依赖,即国密版 OpenSSL 库。需要从 [GMSSL.cn](https://www.gmssl.cn) 下载源码包,手动编译安装。
四、安装与编译步骤概要
完整的编译过程通常如下:
1. 安装基础开发包:
bash
yum install -y gcc gcc-c++ make autoconf libtool
2. 安装 Apache 依赖包:
bash
yum install -y pcre-devel expat-devel bison bison-devel flex flex-devel
3. 编译安装国密 OpenSSL (GMSSL):
从 GMSSL.cn 下载 `gmssl_openssl` 源码包并解压。
进入源码目录,编译安装(通常为 `./config && make && make install`)。
4. 编译安装 APR 和 APR-Util:
从 Apache 官网下载 `apr` 和 `apr-util` 源码包。
分别编译安装,并在配置 `apr-util` 时指定 `apr` 的路径。
5. 编译安装 Apache (httpd):
下载 Apache 源码包。
在 `configure` 阶段,关键**是通过 `--with-ssl=/usr/local/gmssl` 参数指定国密 OpenSSL 的安装路径。
注意事项
包管理器差异:以上命令基于 `yum`(适用于 CentOS 7/RedHat 系列)。如果你使用的是 Ubuntu/Debian 系统,应将包管理器替换为 `apt`,并调整包名(如 `gcc` -> `build-essential`, `pcre-devel` -> `libpcre3-dev` 等)。
版本选择:建议参考官方文档选择稳定的 GMSSL 和 Apache 版本。文档中常以 `httpd-2.4.46` 为例。
静态链接:部分教程为确保兼容性,会建议在编译时对国密 SSL 库进行静态链接。
总结来说,编译国密 Apache 就是在标准 Apache 编译依赖的基础上,用国密版 OpenSSL替换了标准 OpenSSL,并在编译时正确指定其路径。