使用IP时是否可以使用MITM



如果我向通过IP引用的API服务器发出TLS请求,证书验证阻止的MITM攻击类型是否仍然可能?

背景信息,如果它澄清了这个问题:我正在向具有静态IP的REST API发出TLS请求,该IP没有与之关联的域名。要在Go中实现这一点,我必须在HTTP客户端的传输层设置InsecureSkipVerify: true,。这会降低我的请求的安全性吗?我想是的,但我真的不知道为什么。

正如@James所指出的,IP是TLS握手的一个无关组件。

而标准程序是:

  • 拨号主机名/端口
  • DNS查找主机名以获取IP
  • 带IP的TLS握手
    • 显示主机名证书标识
    • 验证证书名称是否与主机名匹配

使用InsecureSkipVerify: true跳过最后一步,通常只在开发/测试期间使用。

但是,在最后一步中,您可以使用不同的名称来匹配证书标识:利用tls中的ServerName字段。配置:

tc = &tls.Config{
ServerName: "myhostname", // certificate identity
RootCAs:    rootca,
// InsecureSkipVerify: true // <- avoid using this
}
d := tls.Dialer{
Config: tc
}
conn, err := d.Dial("tcp", "127.0.0.1:8080")

在这里,我们拨一个IP地址,执行TLS握手,但不是将主机证书与127.0.0.1进行比较的默认行为,而是验证它是否与myhostname匹配。

相关内容

  • 没有找到相关文章

最新更新