Apache中控制后端证书链校验深度的正确指令是SSLProxyVerifyDepth,需配合SSLProxyVerify require和SSLProxyCheckPeerName on使用,默认值1仅支持终端证书直连根CA,生产环境通常设为2以兼容两级中间CA链。
apache 中没有
这个指令,它并不存在于
的官方指令列表中。你可能混淆了 nginx 的
或 apache 的
与
(实际应为
后接参数,或旧版
)。
Apache 实际可用的等效配置项
在 Apache 反向代理 HTTPS 后端时,控制证书链校验深度的是以下两个配合使用的指令:
:启用对后端证书链的完整验证(签名、有效期、吊销状态等),是开启校验的前提
:这才是正确的指令名——
注意是,不是(无下划线)或(拼写错误)
。它指定允许的最大中间 CA 层数,即从终端证书向上追溯的签发者层级数
SSLProxyVerifyDepth 的取值逻辑
该值表示“最多允许多少级中间 CA”,不包含终端证书本身,也不包含根 CA(根必须在信任库中):
设为
0
:只接受自签名证书(终端证书自己签自己)
设为
1
(默认):终端证书必须由根 CA 直接签发;若后端用的是“终端→中间CA→根CA”三级链,会失败
设为
2
:支持两级中间 CA,即最多“终端→中间CA1→中间CA2→根CA”,适用于大多数商业证书(如 Let’s Encrypt R3 → ISRG Root X1 是两级链,对应值为 2)
设为
3
:适合企业私有 PKI 中嵌套更深的链结构
必须配套的其他关键配置
单独设置
不生效,需与以下指令共存于同一虚拟主机或代理上下文中:
:启用代理模式下的 SSL/TLS 功能
:强制校验后端证书中的 SAN 字段(现代标准,替代已废弃的
)
或
:提供可信根证书和中间 CA 的 PEM 文件,必须包含整条链中所有非终端证书
典型安全配置示例
以下是一个生产环境常用配置片段(放在
或
块内):
若后端使用私有 CA,请确保
文件中已追加该私有根证书(PEM 格式),且文件权限允许 Apache 读取。
sslproxyverifydepthmod_sslproxy_ssl_verify_depthsslproxyverifysslproxyverifydepthsslproxyverifysslverifydepthSSLProxyVerify requireSSLProxyVerifyDepth nSSLProxyVerifyDepthSSLProxyVerifyDepthSSLProxyVerifyDepthSSLProxyVerifyDepthSSLProxyEngine onSSLProxyCheckPeerName onSSLProxyCheckPeerCNSSLProxyCACertificateFile /path/to/ca-bundle.crtSSLProxyCACertificatePathSSLProxyEngine on
SSLProxyVerify require
SSLProxyVerifyDepth 2
SSLProxyCheckPeerName on
SSLProxyCACertificateFile /etc/ssl/certs/ca-bundle.crt
ProxyPass /api/ https://backend.internal:443/
ProxyPassReverse /api/ https://backend.internal:443/
ca-bundle.crt