Istio用HashiCorp Vault证书配置mTLS时报errno 10053连接中断错误
问题根因
这一报错的核心是Istio Gateway在mTLS握手阶段验证客户端证书时,无法信任Vault签发客户端证书的CA链,你用OpenSSL手动生成的证书没有问题,说明是Vault签发的证书属性/Istio侧CA配置不匹配导致的。
排查&解决步骤
首先校验Istio Gateway绑定的TLS Secret配置完整性
Istio Gateway开启双向TLS(TLS模式为MUTUAL)时,对应的Secret必须包含3个字段:tls.crt:服务端完整证书链(Vault签发的服务端叶子证书 + 所有中间CA证书 + 根CA证书,按顺序拼接)tls.key:服务端证书对应的私钥ca.crt:用于验证客户端证书的完整CA链(签发客户端证书的根CA + 所有中间CA证书,按顺序拼接)
多数场景下的问题都是ca.crt字段缺失/未包含完整CA链,导致Gateway收到客户端证书后校验不通过,返回unknown ca告警主动断连。
检查Vault PKI角色的证书扩展配置
确认你用来签发客户端、服务端证书的Vault PKI角色配置了正确的扩展密钥用法(EKU):- 签发服务端证书的角色必须开启
server_auth扩展密钥用法 - 签发客户端证书的角色必须开启
client_auth扩展密钥用法
Istio对证书EKU校验非常严格,OpenSSL手动生成证书时一般会默认添加对应配置,若Vault角色未显式开启该配置会直接导致证书校验失败。
- 签发服务端证书的角色必须开启
校验证书的SAN(主题备用名称)配置
Istio 1.10及之后版本不再支持仅用CN(通用名)验证证书身份,所有服务端、客户端证书必须包含对应SAN:- 服务端证书需要包含你访问用的
<some-host>作为DNS类型SAN - 客户端证书也需要配置符合Istio授权策略要求的SAN值
你第一个报错日志中服务端证书的CN为UUID格式,大概率是没有配置正确的SAN,也会触发校验失败。
- 服务端证书需要包含你访问用的
快速验证方法
执行以下命令可以直接定位证书校验失败的具体环节:
openssl s_client -connect <istio-gateway-ip>:443 -servername <some-host> -cert client.crt -key client.key -CAfile pemFiles
如果返回Verify return code: 0 (ok)但连接仍被断开,说明是Istio侧CA配置问题;如果返回CA相关的错误码,说明是证书本身属性问题。
内容的提问来源于stack exchange,提问作者Ashwani
相关产品推荐
相关产品推荐

