You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CA不匹配时TLS连接仍成功的问题排查求助

问题根源与修复方案

核心错误点

1. wolfSSL代码关闭了证书验证

你的服务端和客户端代码都设置了WOLFSSL_VERIFY_NONE,这个参数会完全跳过对端证书的合法性验证:

  • 服务端不会检查客户端证书是否由信任CA签发
  • 客户端也不会验证服务端证书的有效性
    所以无论CA是否匹配,TLS握手都会直接通过。

2. OpenSSL测试环境未开启客户端证书验证

你使用openssl s_server时,默认不会要求客户端提供证书,自然也不会验证客户端证书的合法性。哪怕客户端用错误CA签发的证书,服务端也会直接建立连接。


修复步骤

针对wolfSSL代码的修改

服务端代码

将验证模式改为强制要求客户端提供证书并验证其合法性:

// 替换原WOLFSSL_VERIFY_NONE的设置
wolfSSL_CTX_set_verify(pTmpWolfsslCtx, WOLFSSL_VERIFY_PEER | WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL);
  • WOLFSSL_VERIFY_PEER:验证客户端证书
  • WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT:强制要求客户端必须提供证书,否则握手失败

客户端代码

如果需要验证服务端证书,同样修改验证模式:

// 替换原WOLFSSL_VERIFY_NONE的设置
wolfSSL_CTX_set_verify(pTmpWolfsslCtx, WOLFSSL_VERIFY_PEER, NULL);

针对OpenSSL测试环境的修改

修改服务端启动命令,添加-Verify 1参数强制验证客户端证书:

openssl s_server -cert serverCert.pem -key serverKey.pem -CAfile rootCA.pem -accept 4433 -Verify 1

此时再用错误CA签发的客户端证书连接,握手会直接失败。


额外排查方向

  • 检查rootCA.pem是否误包含了新CA的证书,导致服务端信任了错误CA
  • 用openssl x509 -in WrongClientCert.pem -text -noout查看错误客户端证书的签发者,确认确实由新CA签发
  • 核对openssl.cnf中的CA配置,确保新旧CA之间没有交叉信任关系

内容的提问来源于stack exchange,提问作者theAvidPhoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:05:14