我正在浏览一些我通过HTTPS进行安全通信所继承的客户端代码,似乎它没有检查服务器证书中的通用名称(例如'CN ="example.com"'对照实际的URL这可能是故意的,因为我们的客户端应用程序需要与各种环境进行通信,因此在联系初始门户网站(例如example.com/main)和用户选择环境后,应用程序将被重定向到特定的IP,所以将来所有的请求看起来都像" http://127.0.0.1/page ".
然而,作为SSL新手,我不确定禁用此检查的含义.我的第一反应是,执行某种中间人攻击更容易,因为其他人可以复制我们的证书并伪装成我们的服务器之一.但是,如果我们进行常见的名称检查,您仍然可以使用自定义DNS设置执行相同的操作,因此它似乎并没有真正获得任何东西.是否有其他攻击让我们开放,否则我们不会这样做?
谢谢
其他人不能只复制您的证书并使用它,因为他们没有您的私钥.
如果您没有检查证书的CN与域名不匹配,那么他们可以简单地创建自己的证书(并让它由受信任的CA签名,使其看起来有效),使用它代替您的证书,并执行中间人的攻击.
此外,您需要检查证书是否来自可信CA. 如果您实际控制该域,那么CA的工作就是确保您只能获得CN =的证书.
如果您跳过其中任何一项检查,那么您将面临MITM攻击的风险.
如果您对客户端有足够的控制权,请参阅此答案,了解可行的其他方法.