SSL Error in Connection to Server through iPhone
Solution 1
Since it has been left unanswered for long time and my research and current development indicates that the code is perfectly fine for the connection, its the certificate at the server that was not signed by an authorized CA. so anyone having such kind of problem check that the certificate is valid at server end or not.
Hope this would help!!
Solution 2
iOS 9 forces connections that are using HTTPS to be TLS 1.2 to avoid recent vulnerabilities. In iOS 8 even unencrypted HTTP connections were supported, so that older versions of TLS didn't make any problems either. As a workaround, you can add this code snippet to your Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Thereby you're disabling the App Transport Security. Hope that's helpful.
Solution 3
Maybe your device has a wrong date & time :)
Solution 4
Take a look at this page: https://github.com/vinhnx/iOS-issues/issues/1
In a nutshell:
The reason is, that starting from iOS9 and OSX 10.11 all apps built on XCode7 will require TLS 1.2 for SSL connection, and fails for earlier protocols.
There are several methods to overcome this issue.
"NSAppTransportSecurity -> NSAllowsArbitraryLoads" approach is not good, because it will disable TLS 1.2 for all connections from your app, and this can lead to rejection of your app by Apple.
"Per-Domain Exceptions" approach is much more better.
Comments
-
devsri over 3 years
I am trying to establish a HTTPS connection to a server using my app. But the connection fails due to following error
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo=0x612eb30 {NSErrorFailingURLStringKey=https:myURL.com/signup, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSErrorFailingURLKey=https:myURL.com/signup, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSUnderlyingError=0x612eb70 "An SSL error has occurred and a secure connection to the server cannot be made."}
The code to connect to server is
-(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]; } }
my delegate methods are
- (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]; }
I am stuck over here and could not find any way out.
Any form of help would be greatly appreciated.
thanks in advance!!
-
sirvine almost 9 yearsIf you're nervous about turning off App Transport Security for all domains, you can do it for specific domains: studio76.pro/…
-
damithH over 7 yearsFor development purpose its ok, but when its go to app store submission this not acceptable.
-
jfgrang over 7 yearsGreat answer. I had the issue for Weibo integration and once I entered
TLSv1.0
it worked. Thanks. -
DawnSong over 7 yearsNot CA's problem, just because SSL's version is too low.
-
Bhanu Birani almost 6 yearsfantastic. I checked all the possible solution and forgot to check the device date. Thanks for putting up this. Sometime we miss very basic things and try to debug in complicated way.
-
Glenn Howes almost 6 yearsCould you elaborate on why a wrong date would cause this issue?
-
Popmedic about 5 yearsIf the date of your device is before or after the expiry, then it is expired.