Erreur SSL lors de la connexion au serveur via iPhone

J'essaie d'établir une connexion HTTPS à un serveur en utilisant mon application. Mais la connexion échoue en raison de l'erreur suivante

Error Domain=NSURLErrorDomain Code=-1200 "une erreur SSL s'est produite et une connexion sécurisée au serveur ne peut pas être établie."UserInfo=0x612eb30 {NSErrorFailingURLStringKey=https:myURL.com/signup, NSLocalizedRecoverySuggestion=voulez-vous vous connecter au serveur de toute façon?, NSErrorFailingURLKey=https:myURL.com/signup, NSLocalizedDescription=un SSL erreur s'est produite et d'une connexion sécurisée au serveur ne peut pas être fait., NSUnderlyingError=0x612eb70 " une erreur SSL s'est produite et une connexion sécurisée au serveur ne peut pas être établie."}

Le code à connecter au serveur est

-(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];
    }
}

Mes méthodes de délégué sont

- (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];
   }

Je suis coincé ici et je n'ai pas pu trouver d'issue.

Toute forme d'aide serait grandement appréciée.

Merci d'avance!!

29
demandé sur devsri 2011-02-18 14:07:05

8 réponses

IOS 9 force les connexions utilisant HTTPS à être TLS 1.2 Pour éviter les vulnérabilités récentes. Dans iOS 8, même les connexions HTTP non cryptées étaient prises en charge, de sorte que les anciennes versions de TLS ne posaient aucun problème non plus. Comme solution de contournement, vous pouvez ajouter cet extrait de code à vos informations.plist:

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

Vous désactivez ainsi la sécurité du Transport de L'application. J'espère que c'est utile.

44
répondu Voda Ion 2015-06-30 12:17:35

Comme il a été laissé sans réponse pendant longtemps et que mes recherches et mon développement actuel indiquent que le code est parfaitement adapté à la connexion, c'est le certificat sur le serveur qui n'a pas été signé par une autorité de Certification autorisée. donc, toute personne ayant un tel problème vérifie que le certificat est valide à la fin du serveur ou non.

J'espère que cela aiderait!!

14
répondu devsri 2011-09-19 18:00:16

Jetez un oeil à cette page: https://github.com/vinhnx/iOS-issues/issues/1

En un mot: La raison en est qu'à partir d'iOS9 et OSX 10.11, toutes les applications construites sur XCode7 nécessiteront TLS 1.2 Pour la connexion SSL et échoueront pour les protocoles antérieurs.
Il existe plusieurs méthodes pour surmonter ce problème.
L'approche" NSAppTransportSecurity -> NSAllowsArbitraryLoads " n'est pas bonne, car elle désactivera TLS 1.2 Pour toutes les connexions de votre application, ce qui peut entraîner un rejet de votre application par Apple.
L'approche "Exceptions par domaine"est beaucoup mieux.

4
répondu Olexandr Stepanov 2015-09-10 10:33:11

Peut-être que votre appareil a une mauvaise date et heure :)

4
répondu kolesnikovakate 2016-05-25 09:31:14

J'utilisais iOS 9.3.1 et j'utilisais https quand j'ai rencontré ce problème. Cela a bien fonctionné à travers le simulateur, mais a échoué sur mon iPad. La raison en est que mon iPad avait le WiFi activé et s'était connecté au réseau invité de mon entreprise, mais je n'avais pas reçu le site web pop-up où j'accepte de rejoindre le réseau. Après avoir accepté tout a bien fonctionné à nouveau.

0
répondu Ecyrb 2016-04-20 15:57:31

S'il vous Plaît, assurez-vous que la version de TLS est 1.2,pas TLS 1.0.

Les applications construites sur {[1] } nécessiteront TLS 1.2 pour la connexion SSL

0
répondu rui 2016-11-23 06:35:35

Même moi, j'étais confronté au même problème.

Ce problème peut se produire si le certificat SSL sur le serveur est un certificat privé. Dans un tel scénario, vous pouvez le résoudre en utilisant this .

-2
répondu Ankita Shah 2017-05-23 12:02:48

Essayez l'adresse web avec safari à partir du téléphone.

-4
répondu Mohamed 2012-04-12 09:17:08