我是安全工作的新手,我正在实施别人的设计。该设计要求在没有 DNS(只有 IP)的环境中使用具有 TLS 的 TCP 服务器。
我正在使用典型的证书链(自签名根证书-> 中间证书-> 端点证书)。TCP 服务器将端点证书提供给客户端,该客户端在其代码中固定了中间证书的公共部分。当客户端连接时,它将检查中间证书是否用于签署端点证书。
据我了解,当客户端连接时,会发生密钥交换以确保通信安全,然后客户端使用证书链验证来验证服务器是否真的是它所说的那个人。但是,在这种方案中,冒名顶替者不能在从真实服务器获取证书后直接出示证书吗?
我是否将其误解为缺陷?据我了解,如果没有将证书绑定到的 DNS 名称,检查链(是否使用固定签名的父证书)是不够的。在这里还能做些什么吗?