【问题标题】:Server Trust Issue In production Environment生产环境中的服务器信任问题
【发布时间】:2013-03-10 14:30:10
【问题描述】:

我们正在测试我们的应用是否已投入生产,今天我们遇到了一个问题“此服务器的证书无效。您可能正在连接到一个伪装成“server.name”的服务器,这可能会放入您的机密信息有风险。

我们使用的是 https 连接,SSL 证书也有效。

这种情况只会发生几次,并不总是可以重现。

从客户端询问NSURLAuthenticationMethodServerTrust 时,canAuthenticateAgainstProtectionSpace: 返回 NO。

然后登录如下错误

    - (void)connection:(NSURLConnection *)connection
      didFailWithError:(NSError *)error
{
    NSLog(@"Connection failed! Error - %@ %@",
           [error localizedDescription],
           [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}

记录的错误是:

Connection failed! Error - The certificate for this server is invalid. You might be connecting to a server that is pretending to be “server.name” which could put your confidential information at risk.

服务器证书由 COMODO High-Assurance Secure Server CA 颁发。

【问题讨论】:

  • 也许你被间歇性的MITMed!

标签: iphone cocoa-touch https nsurlconnection


【解决方案1】:

可能的原因:

  • 证书并不完全有效
    • 时间已过,或本地时钟错误
    • 您的访问方式导致主机无效、子网未被证书覆盖等
  • 您正在使用重写代理,即 Charles,因此当前证书不是您的服务器证书。
  • 服务器未正确提供证书。
  • 其他软件错误!

【讨论】:

  • 感谢您的回复。我们需要从客户端连接做任何事情吗?这是为 iPhone 准备的。
  • @nkongara 您需要服务器上的有效证书——或者您需要在客户端忽略它。 (我要带好证书)
  • @Daij-Djan:问题是这在某些设备/模拟器中发生,而且只是间歇性地发生。我们验证了证书在服务器上是有效的。我们不能在生产环境的客户端忽略这一点(生产环境中不存在 AuthenticationChallenge 处理)
  • 检查服务器时间和客户端时间是否匹配:)
  • 好吧,我已经提供了可能的原因,如果@nkongra 可以发布一些日志或错误代码,那么我可以缩小范围。
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 2023-03-12
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多