核心是两步:先建可信私有根CA并安装到客户端信任库,再用其签发服务器证书;最后在Apache虚拟主机中配置SSLEngine、SSLCertificateFile和SSLCertificateKeyFile启用HTTPS。

为 Apache 虚拟主机配置私有 CA 自签名证书,核心是两步:先建一个可信的私有根 CA,再用它签发服务器证书;最后把证书和密钥正确加载到虚拟主机中。这种方式适合内网测试、开发环境或隔离系统,不适用于面向公众的生产网站。
准备私有根 CA(一次完成)
私有 CA 是你整个信任链的起点,需严格保管其私钥。推荐在离线或专用机器上操作:
- 生成 CA 私钥(4096 位更安全):
openssl genrsa -aes256 -out ca.key 4096 - 生成自签名根证书(有效期建议 10 年):
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
填写时 Common Name 可填MyInternalCA,其他字段按组织信息如实填写 - 将
ca.crt安装到客户端(如浏览器、curl、内网终端)的信任根证书库中,否则访问时会提示“证书不受信任”
为虚拟主机签发服务器证书
这一步在目标 Apache 服务器或任意可联网的机器上执行,无需 CA 私钥参与:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 生成服务器私钥(2048 或 4096 位):
openssl genrsa -out server.key 2048 - 生成证书签名请求(CSR),Common Name 必须是该虚拟主机实际访问的域名,例如
app.internal或dev.example.com:
openssl req -new -key server.key -out server.csr - 用私有 CA 签发证书:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1825 -sha256
配置 Apache 虚拟主机启用 HTTPS
确保已启用 mod_ssl 模块(RHEL/CentOS:yum install mod_ssl;Debian/Ubuntu:a2enmod ssl):
- 把
server.crt和server.key放到安全路径,如/etc/httpd/ssl/或/etc/apache2/ssl/,权限设为600 - 在虚拟主机配置中添加 SSL 段(监听 443 端口):
<VirtualHost *:443>
ServerName app.internal
DocumentRoot /var/www/app
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
</VirtualHost> - 若需支持客户端证书校验(双向 TLS),可加:
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/httpd/ssl/ca.crt
验证与调试要点
配置完成后别急着重启,先检查语法并确认证书链完整:
- 运行
apachectl configtest或apache2ctl configtest确保无报错 - 用命令查看证书是否由你的 CA 签发:
openssl x509 -in server.crt -text -noout | grep "Issuer" —— 输出应包含你设定的 CA 名称 - 本地测试可用:
curl -k https://app.internal(忽略证书错误)
curl --cacert ca.crt https://app.internal(使用你的 CA 根证书验证) - 浏览器访问时若仍提示不安全,请确认:域名是否匹配 CN/SAN、ca.crt 是否已导入系统或浏览器根信任库、是否启用了 HSTS 强制跳转等干扰项

















