源码安装apache默认不支持ssl,需编译时通过--enable-ssl和--with-ssl指定openssl路径,并安装openssl-devel;配置需启用mod_ssl、监听443端口、设置证书路径及权限,最后configtest验证再启动。

Apache 源码安装后默认不带 SSL 支持,必须手动编译启用 mod_ssl 并关联 OpenSSL,才能实现 HTTPS 访问。关键不是“装完就能用”,而是编译阶段就要指定依赖和模块,否则后续无法通过 LoadModule 启用。
编译时启用 mod_ssl 和 OpenSSL 支持
源码安装 Apache(如 httpd-2.4.x)必须在 ./configure 阶段显式启用 SSL,并指向已安装的 OpenSSL 路径:
- 确保系统已安装 OpenSSL 开发包:
yum install -y openssl-devel(CentOS/RHEL)或apt-get install -y libssl-dev(Ubuntu/Debian) - 进入 Apache 源码目录,执行 configure 命令,必须包含:
./configure --enable-ssl --with-ssl=/usr --enable-so --enable-modules=all --enable-mods-shared=all
其中--with-ssl=/usr是常见路径(根据openssl version -d输出确认实际安装根目录) - 运行
make && make install。完成后检查模块目录:ls $APACHE_HOME/modules/ | grep ssl,应看到mod_ssl.so
配置 SSL 监听与虚拟主机
源码安装无预置 ssl.conf,需手动创建 HTTPS 虚拟主机配置,通常写入 $APACHE_HOME/conf/extra/httpd-ssl.conf 并在 httpd.conf 中引入:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在
httpd.conf中取消注释:LoadModule ssl_module modules/mod_ssl.soInclude conf/extra/httpd-ssl.conf - 确认主配置已监听 443 端口:
Listen 443(若被注释需去掉) - 在
httpd-ssl.conf中定义<virtualhost _default_:443></virtualhost>,至少包含:SSLEngine onSSLCertificateFile /path/to/your_domain.crtSSLCertificateKeyFile /path/to/your_domain.key
若有证书链(如中间 CA),加上:SSLCertificateChainFile /path/to/chain.crt
证书文件准备与路径权限
SSL 证书不能随便放,Apache 进程(如 apache 或 www-data 用户)必须有读取私钥的权限,但私钥又不能被其他用户读取:
- 把
.crt、.key、.ca-bundle等文件统一放在专用目录,例如:$APACHE_HOME/conf/cert/ - 设置私钥权限:
chmod 600 /path/to/your_domain.key;证书文件可设为644 - 确保 Apache 用户(查看
httpd.conf中User和Group指令)对整个 cert 目录有执行(x)权限,否则无法进入目录读取文件
验证与启动
配置完成后别直接重启,先做两步检查再上线:
- 语法检测:
$APACHE_HOME/bin/apachectl configtest,输出Syntax OK才安全 - 检查模块是否加载:
$APACHE_HOME/bin/httpd -M | grep ssl,应显示ssl_module (shared) - 启动服务:
$APACHE_HOME/bin/apachectl start(或restart) - 用浏览器访问
https://your-domain:443,或命令行测试:curl -I https://localhost --insecure(跳过证书校验)










