nginx 报错“stapling error: responder delegated”表明ocsp stapling失败,因证书链中某中间证书启用了ocsp委派机制,而nginx不支持自动跳转至委派响应器;需更换非委派证书链或调整ssl_trusted_certificate排除委派中间件。
![nginx怎么排查nginx错误日志中报[alert] stapling error: \](https://img.php.cn/upload/article/001/242/473/179021011862460.jpg?x-oss-process=image/resize,p_40)
这个报错 [alert] stapling error: "responder delegated" 出现在 Nginx 的 error.log 中,说明 OCSP Stapling 功能在尝试获取 OCSP 响应时失败了,且失败原因是上游 OCSP 响应器(responder)返回了 delegated 状态——即它本身不直接签发响应,而是把验证职责“委托”给了另一个更权威的 OCSP 响应器(通常为根 CA 或中间 CA 的专用响应服务)。
为什么会出现 “responder delegated”?
这不是 Nginx 配置错误,而是证书链中某张证书(通常是中间证书)的 OCSP 响应器配置了“委派响应”(OCSP Delegation),要求客户端(此处是 Nginx)必须去访问它指定的另一个 URL 才能拿到有效响应。但 Nginx 的 OCSP Stapling 模块不支持自动跟随委派跳转,它只会向证书里 Authority Information Access(AIA)字段声明的首个 OCSP URI 发起请求,收到 delegated 后就直接报错并放弃。
常见于部分云厂商签发的证书、某些私有 CA 或较新策略的公共 CA(如 Sectigo 在特定中间链中启用委派)。
如何确认是委派导致的问题?
用 OpenSSL 手动查证书的 OCSP 信息和实际响应:
- 提取证书中的 OCSP 地址:
openssl x509 -in /path/to/your.crt -text -noout | grep -A1 "OCSP" - 用
openssl ocsp模拟 Nginx 请求(注意要带上完整证书链):openssl ocsp -issuer intermediate.crt -cert your.crt -url http://ocsp.example.com -text
若返回中含Response Verify Failure或明确出现delegated字样,即可确认。
解决方法:绕过委派或更换证书链
目前 Nginx 官方不支持委派响应的自动处理,只能从源头规避:
- 优先替换为非委派链的证书:联系你的证书颁发机构(CA),说明需要“不启用 OCSP 委派”的中间证书;多数主流 CA(如 Let’s Encrypt、DigiCert)默认不启用委派,可直接换签。
-
手动构造完整可信链,排除委派中间件:检查
ssl_trusted_certificate文件是否混入了带委派属性的中间证书;尝试从链中移除该中间证书,改用其上级(更稳定的根+中间组合),确保整个链的 OCSP URI 可直连且不返回 delegated。 -
临时关闭 OCSP Stapling(不推荐长期使用):
注释或设为ssl_stapling off;,虽会牺牲握手性能与隐私性,但可立即止血。
验证修复是否生效
重启 Nginx 后,用以下命令确认 OCSP 响应已成功 stapling:
echo Q | openssl s_client -connect yourdomain.com:443 -status 2>/dev/null | grep -i "OCSP response"
正常应输出 OCSP Response Status: successful (0x0) 且下方有响应内容;若仍为空或报错,则委派问题未解决。











