【问题标题】:SSL Error in Connection to Server through iPhone通过 iPhone 连接服务器时出现 SSL 错误
【发布时间】:2011-06-29 18:11:56
【问题描述】:

我正在尝试使用我的应用程序与服务器建立 HTTPS 连接。但是由于以下错误导致连接失败

Error Domain=NSURLErrorDomain Code=-1200 “发生 SSL 错误,无法与服务器建立安全连接。” UserInfo=0x612eb30 {NSErrorFailingURLStringKey=https:myURL.com/signup, NSLocalizedRecoverySuggestion=您仍然要连接到服务器吗?, NSErrorFailingURLKey=https:myURL.com/signup, NSLocalizedDescription=发生 SSL 错误并且安全连接到无法建立服务器。, NSUnderlyingError=0x612eb70 "发生 SSL 错误,无法建立与服务器的安全连接。"}

连接服务器的代码是

-(IBAction) handleEvents:(id)sender
 {
    if ((UIButton*)sender == submit) {

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


    NSLog(@"Begin");
    NSData *urlData;
    NSURLResponse *response;
    NSError *error;

    NSString *url =[[NSString alloc]initWithFormat:@"%@signup",baseURL];
    NSURL *theURL =[NSURL URLWithString:url];
    NSMutableURLRequest *theRequest =[NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:0.0f];
    [theRequest setHTTPMethod:@"POST"];
    NSString *theBodyString = [NSString stringWithFormat:@"emailId=%@&mobileNumber=%@&appId=%@&password=%@&firstName=%@&lastName=%@"
                               ,@"abc@example.com",@"919879876780",@"bf1c7a6b3d266a7fe350fcfc4dda275211c13c23" ,@"qwerty" , @"Dev" , @"Sri"];
    NSData *theBodyData = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];

    [theRequest setHTTPBody:theBodyData];
    urlData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
    }
}

我的委托方法是

- (void)handleError:(NSError *)error
{
NSLog(@"----->%@",error);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
  [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;   

 }

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

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge (NSURLAuthenticationChallenge *)challenge {  
    NSLog(@"check auth");
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
   }

我被困在这里,找不到任何出路。

我们将不胜感激任何形式的帮助。

提前致谢!!

【问题讨论】:

    标签: ssl https nsurlconnection nsurlrequest


    【解决方案1】:

    由于长期以来没有得到答复,而且我的研究和当前开发表明该代码非常适合连接,它是服务器上的证书,未经授权的 CA 签名。因此任何有此类问题的人都可以检查证书在服务器端是否有效。

    希望这会有所帮助!

    【讨论】:

    • 不是CA的问题,只是因为SSL的版本太低了。
    【解决方案2】:

    通过手机尝试使用 safari 的网址。

    【讨论】:

      【解决方案3】:

      iOS 9 强制使用 HTTPS 的连接为 TLS 1.2 以避免最近的漏洞。在 iOS 8 中,甚至支持未加密的 HTTP 连接,因此旧版本的 TLS 也不会造成任何问题。作为一种解决方法,您可以将此代码 sn-p 添加到您的 Info.plist:

        <key>NSAppTransportSecurity</key>  
        <dict>  
        <key>NSAllowsArbitraryLoads</key>  
        <true/>  
        </dict>  
      

      因此,您将禁用应用程序传输安全性。希望对您有所帮助。

      【讨论】:

      • 如果您对关闭所有域的应用程序传输安全感到紧张,您可以为特定域执行此操作:studio76.pro/…
      • 出于开发目的它可以,但是当它去应用商店提交时这是不可接受的。
      【解决方案4】:

      看看这个页面: https://github.com/vinhnx/iOS-issues/issues/1

      简而言之: 原因是,从 iOS9 和 OSX 10.11 开始,所有基于 XCode7 构建的应用程序都需要 TLS 1.2 进行 SSL 连接,而对于早期协议则失败。
      有几种方法可以解决这个问题。
      “NSAppTransportSecurity -> NSAllowsArbitraryLoads”方法不好,因为它会为您的应用程序的所有连接禁用 TLS 1.2,这可能会导致 Apple 拒绝您的应用程序。
      “Per-Domain Exceptions”方法要好得多。

      【讨论】:

      • 很好的答案。我遇到了微博集成的问题,一旦我输入TLSv1.0,它就起作用了。谢谢。
      【解决方案5】:

      也许您的设备日期和时间有误 :)

      【讨论】:

      • 太棒了。我检查了所有可能的解决方案并忘记检查设备日期。谢谢你提出这个。有时我们会错过非常基本的东西并尝试以复杂的方式进行调试。
      • 您能否详细说明为什么错误的日期会导致此问题?
      • 如果您的设备日期在到期之前或之后,则它已过期。
      【解决方案6】:

      我使用的是 iOS 9.3.1,并且在遇到此问题时使用的是 https。它通过模拟器运行良好,但在我的 iPad 上失败了。原因是我的 iPad 启用了 WiFi 并连接到我公司的访客网络,但我没有收到我接受加入网络的弹出网站。接受后一切正常。

      【讨论】:

        【解决方案7】:

        即使我也面临同样的问题。

        如果服务器上的 SSL 证书是私有证书,则可能会出现此问题。在这种情况下,您可以使用this 解决它。

        【讨论】:

          【解决方案8】:

          请确保TLS的版本是1.2,而不是TLS 1.0

          基于XCode8 构建的应用将需要TLS 1.2 进行SSL 连接

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-10-07
            • 2015-05-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多