2

在 iOS 应用程序上实现 SSL 证书的固定时遇到了一个问题。我们目前正在使用NSURLConnection委托进行身份验证挑战。这一切都很好,并且在应用程序的初始登录时被调用,确保我们连接到我们的服务器。

我们知道 TLS 缓存,其中固定委托方法 ( w​​illSendRequestForAuthenticationChallenge ) 在 10 分钟内不会再次调用。这实际上不是问题,因为我们只需要在登录时检查证书,尽管更频繁地是可取的。我们向 Apple 提出了支持请求,并收到了确认 TLS 缓存意味着固定委托方法只会定期调用的响应,但加密密钥交换将防止 MITM 代理攻击在调用之间发生。

听起来不错,但情况似乎并非如此。这是我们发现的——如果我们在启动时正常登录我们的应用程序,则会调用 pinning 委托。然后我们在后台运行应用程序并将 iPhone 连接到运行 Burp Suite 的 macbook 上的代理服务器(此时 iPhone 上已经安装了服务器信任证书)。如果我们随后将应用程序置于前台,注销并重新登录,则不会调用 willSendRequestForAuthenticationChallenge,即使此时 TLS 会话应该是无效的。

我尝试在请求上指定不同的缓存策略,但似乎没有什么不同。我不明白为什么在添加 MITM 代理的情况下不会再次调用代表 - 任何建议将不胜感激。

4

0 回答 0