Error SSL en la conexión al Servidor a través de iPhone


Estoy tratando de establecer una conexión HTTPS con un servidor usando mi aplicación. Pero la conexión falla debido al siguiente error

Error Domain=NSURLErrorDomain Code=-1200 "Se ha producido un error SSL y no se puede establecer una conexión segura con el servidor."userInfo = 0x612eb30 {NSErrorFailingURLStringKey=https:myURL.com/signup, Nslocalizedrecoverysugestion=¿ Te gustaría conectarte al servidor de todos modos?, NSErrorFailingURLKey=https:myURL.com/signup, NSLocalizedDescription=Un SSL se ha producido un error y no se puede establecer una conexión segura con el servidor., NSUnderlyingError = 0x612eb70 " Se ha producido un error SSL y no se puede realizar una conexión segura al servidor."}

El código para conectarse al servidor es

-(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=%@"
                               ,@"[email protected]",@"919879876780",@"bf1c7a6b3d266a7fe350fcfc4dda275211c13c23" ,@"qwerty" , @"Dev" , @"Sri"];
    NSData *theBodyData = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];

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

Mis métodos delegados son

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

Estoy atrapado aquí y no pude encontrar ninguna salida.

Cualquier forma de ayuda sería muy apreciada.

Gracias de antemano!!

Author: devsri, 2011-02-18

8 answers

IOS 9 obliga a las conexiones que utilizan HTTPS a ser TLS 1.2 para evitar vulnerabilidades recientes. En iOS 8 incluso las conexiones HTTP sin cifrar eran compatibles, por lo que las versiones anteriores de TLS tampoco causaban ningún problema. Como solución alternativa, puede agregar este fragmento de código a su información.plist:

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

Por lo tanto, está deshabilitando la Seguridad de Transporte de la aplicación. Espero que sea útil.

 44
Author: Voda Ion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-30 12:17:35

Dado que se ha dejado sin respuesta durante mucho tiempo y mi investigación y desarrollo actual indica que el código está perfectamente bien para la conexión, es el certificado en el servidor que no fue firmado por una CA autorizada. así que cualquiera que tenga este tipo de problema compruebe que el certificado es válido en el extremo del servidor o no.

Espero que esto ayude!!

 14
Author: devsri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-19 18:00:16

Echa un vistazo a esta página: https://github.com/vinhnx/iOS-issues/issues/1

En pocas palabras: La razón es, que a partir de iOS9 y OSX 10.11 todas las aplicaciones construidas en XCode7 requerirán TLS 1.2 para la conexión SSL, y falla para protocolos anteriores.
Hay varios métodos para superar este problema.
El enfoque" NSAppTransportSecurity -> NSAllowsArbitraryLoads " no es bueno, ya que deshabilitará TLS 1.2 para todas las conexiones de su aplicación, y esto puede provocar el rechazo de su aplicación por Apple.
El enfoque de "Excepciones por dominio" es mucho mejor.

 4
Author: Olexandr Stepanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-10 10:33:11

Tal vez su dispositivo tiene una fecha y hora incorrecta:)

 4
Author: kolesnikovakate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 09:31:14

Estaba usando iOS 9.3.1 y estaba usando https cuando encontré este problema. Funcionó bien a través del simulador, pero falló en mi iPad. La razón es porque mi iPad tenía WiFi habilitado y se había conectado a la red de invitados de mi empresa, pero no había recibido el sitio web emergente donde acepto unirme a la red. Después de aceptar todo funcionó bien de nuevo.

 0
Author: Ecyrb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-20 15:57:31

Por Favor, asegúrese de que la versión de TLS es 1.2,no TLS 1.0.

Las aplicaciones creadas en XCode8 requerirán TLS 1.2 para la conexión SSL

 0
Author: rui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-23 06:35:35

Incluso yo estaba enfrentando el mismo problema.

Este problema puede ocurrir si el certificado SSL a través del servidor es un certificado privado. En tal escenario se puede resolver usando este.

 -2
Author: Ankita Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:48

Pruebe la dirección web con safari desde el teléfono.

 -4
Author: Mohamed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-12 09:17:08