Apache 2.4.8+ 仅支持将域名证书与中间证书按信任路径顺序拼接为单个 PEM 文件(如 fullchain.pem)并通过 SSLCertificateFile 加载,SSLCertificateChainFile 已被移除;根证书不可加入;只需配置 SSLCertificateFile 和 SSLCertificateKeyFile;验证需用 openssl verify 和 openssl s_client 检查链完整性。

Apache 本身不支持“多级 CA 证书链”的独立配置概念,它只支持一条完整、顺序正确的证书链。所谓“支持多级 CA”,本质是把你的域名证书和所有必要的中间证书(不含根证书)按信任路径顺序拼成一个 PEM 文件,并通过 SSLCertificateFile 指向它——这是 Apache 2.4.8+ 的唯一正确方式。
必须停用 SSLCertificateChainFile
该指令已在 Apache 2.4.8 及更高版本中彻底移除。如果你在配置中保留它,Apache 启动会失败,报错:
Invalid command 'SSLCertificateChainFile'。
这不是配置错误,而是功能已被合并。你不需要、也不能再用这个指令。
正确拼接 fullchain.pem 文件
把以下内容按严格顺序拼接为单个 PEM 文件(推荐命名为 fullchain.pem):
- 第一部分:你的域名证书(如
example.com.crt或cert.pem) - 第二部分:一级中间证书(如 Let’s Encrypt 的
R3.pem) - 第三部分:二级中间证书(如
ISRG Root X1.pem),如有更多中间层,继续追加
执行命令(Linux/macOS):cat example.com.crt R3.pem ISRG Root X1.pem > example.com.fullchain.pem
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
注意:根证书不要加入该文件。浏览器和系统已内置,加入反而可能干扰链验证或触发兼容性问题。
在虚拟主机中只配置两个关键指令
在 <VirtualHost *:443> 块内,只需写这两行:
- SSLCertificateFile /path/to/example.com.fullchain.pem
- SSLCertificateKeyFile /path/to/example.com.key
删掉所有 SSLCertificateChainFile、SSLCACertificateFile(用于客户端验证)、SSLProxyCACertificateFile(用于代理后端校验)等无关项——它们对服务端证书链下发没有作用。
验证链是否真正生效
分两步确认:
- 本地验证拼接是否有效:
openssl verify -untrusted <(cat R3.pem ISRG\ Root\ X1.pem) example.com.crt
应返回example.com.crt: OK - 检查线上实际发送的证书链:
echo Q | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl crl2pkcs7 -nocrl | openssl pkcs7 -print_certs -noout
输出中应至少看到两段BEGIN CERTIFICATE:一段是你的域名证书,一段是中间证书。

















