HTTPS与NSURLConnection的 - NSURLErrorServerCertific

2019-08-19 05:10发布

我有一个通过HTTP连接精细的应用程序。 当试图HTTPS我是说,根证书不被信任的错误。 我发现我的网站证书,其CA证书以及CA的根证书的网址,并增加了他们通过Safari浏览器到手机上。 现在,当我去首选项 - >常规 - >配置文件,我可以看到我所有的证书去一路攀升链。 其中,在每一证书红色无符号的标签。 不过当我连接我得到NSURLErrorServerCertificateUntrusted错误。 我试图找出下一步去哪里。

任何帮助将是巨大的。 可能影响这个唯一的其他东西,是我连接到一个奇怪的端口。 所以,我的网址www.domain.com:port。 是否端口号创建一个证书 - 域名不匹配?

现在,我已经使用了iPhone配置实用程序的配置文件添加到手机。 它有我的根证书,CA证书,与本站证书。 在手机上的个人资料称,其经过验证。 在细节我可以看到我的三个证。 但是,当我尝试连接,我仍然得到信任的证书错误。 有什么建议?

只是想看看是否有人可以帮助呢?

Answer 1:

没有为NSURLConnection的负载中忽略坏证书支持的API。 要做到这一点,只需添加这样的事情你NSURLConnection的委托:

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
  return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
  if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    if (... user allows connection despite bad certificate ...)
      [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];

  [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

需要注意的是连接:didReceiveAuthenticationChallenge:以后可以发送其消息challenge.sender(多),呈现一个对话框,用户如果需要的话,等以后



文章来源: HTTPS with NSURLConnection - NSURLErrorServerCertificateUntrusted