首页/安全/加密与证书速查/链不完整(unable to get local issuer)

链不完整(unable to get local issuer)

服务端只发送叶证书时,客户端报 unable to get local issuer certificate(verify error 20)。修复方式是把中间证书按顺序拼接后随叶证书一起下发,并用 s_client -showcerts 验证实际发送内容。

加密与证书速查安全更新于 2026-10-12
典型报错unable to get local issuer certificate (20) / unable to verify the first certificate
验证命令openssl verify -untrusted chain.pem leaf.pem
发送顺序叶证书在前、中间证书在后,根证书通常无需下发

服务端链配置示例

服务端链配置示例
ssl_certificate     /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;

抓取线上实际发送的链

抓取线上实际发送的链
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
把根证书一并下发会增加握手体积且没有收益;中间证书缺失才是常见断点。

易错点

  • 拼接顺序写反(中间证书在前),部分客户端直接拒绝
  • 只在浏览器里验证通过就上线,Java 与小程序客户端仍失败

数据来源与参考

  • OpenSSL 官方文档(verify / s_client)
  • RFC 8446 §4.4.2(certificate 消息)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌