iphone: secure erholsamen server "Das Zertifikat für diesen server ist ungültig
Ich versuche zu verbrauchen sicher restful-service, der Fehler gibt
Error = Error Domain=NSURLErrorDomain Code=-1202 "Das Zertifikat für diesen server ist ungültig. Sie könnte die Verbindung zu einem server, der vorgibt, “xxx.xxx.xxx.xxx" setzen könnte, Ihre vertraulichen Daten gefährdet."
arbeiten auf xCode 4.2, wo ist der Fehler oder irgendein Schritt fehlt.
mit dem folgenden code
RegisterUser.f
@interface RegisterUser : UIViewController<UITextFieldDelegate,
UIScrollViewDelegate, NSURLConnectionDelegate>
RegisterUser.m
- (IBAction)SubmitBtnAction:(id)sender {
NSURL *url = [NSURL URLWithString:@"https://xx.xx.xx.xxx:8223/jaxrs/tunedoorgateway/getCountries"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:[[NSOperationQueue alloc] init]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] >0 && error == nil)
{
NSLog(@"Data = %@", data);
//DO YOUR WORK HERE
}
else if ([data length] == 0 && error == nil)
{
NSLog(@"Nothing was downloaded.");
}
else if (error != nil){
NSLog(@"Error = %@", error);
}
}];
}
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
NSLog(@"This is canAuthenticateAgainstProtectionSpace");
return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
// if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
// if ([trustedHosts containsObject:challenge.protectionSpace.host])
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
NSLog(@"This is didReceiveAuthenticationChallenge");
// [[challenge sender] cancelAuthenticationChallenge:challenge];
}
Ich würde dieses Problem durch die richtige Einstellung von Datum und Uhrzeit für mein Gerät.
Gelöst gleiche Problem mit nur die Einstellung Geräte' Datum & Zeit automatische.
Gelöst gleiche Problem mit nur die Einstellung Geräte' Datum & Zeit automatische.
InformationsquelleAutor Azhar | 2012-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dies könnte sein, weil der DNS. Sowas wie dein server nicht registriert ist oder einige.
versuchen Sie es mit dieser für die Entwicklung Zweck-
EDIT:
Erstellen Sie eine "NSURLRequest+NSURLRequestSSLY.h" - Datei und fügen Sie diese Zeilen, um es
Erstellen Sie eine "NSURLRequest+NSURLRequestSSLY.m" - Datei und fügen Sie diese Zeilen, um es
Und vergessen Sie nicht, um es zu entfernen, so kann Ihre app abgelehnt bekommen.
bearbeitet nun die Antwort.
Funktioniert Prima für mich.
Funktioniert bei mir auch. ausgezeichnet.
Setzen Sie einfach #ifdef DEBUG und #endif um ihn herum, und das problem mit der Freigabe im app store, sollte sich von selbst lösen 😉
InformationsquelleAutor Vaibhav Tekam
Ist der Fehler nicht in deinem code. Sie sind mit einem HTTPS server, die nicht eine bekannte Zertifikat. Wenn Sie setup die server selbst müssen Sie gehen und kaufen ein nummerierter Zertifikat von einer der großen Zertifizierungsstellen, die vertrauenswürdig sind, die von iOS und die meisten anderen Betriebssysteme.
Für die Entwicklung Zwecke, können Sie testen Sie Ihre REST-service durch das ignorieren des nicht vertrauenswürdigen Zertifikats. Folgen Sie dieser Anleitung tun: http://www.cocoanetics.com/2009/11/ignoring-certificate-errors-on-nsurlrequest/
Aber für den produktiven Einsatz empfehle ich Ihnen, diese Methode nicht verwenden, da es bringt ein Sicherheits-Leck auf Ihre Bewerbung. Wenn Sie das tun, ignorieren Sicherheit können Sie auch nur die Verwendung von HTTP anstelle von HTTPS.
Aber dies ist die private API und Gelten ablehnt, die Anwendung aufgrund dieser, können Sie Hilfe mit einer public API, wie die, die ich verwendet, aber Probleme, um es gelöst bekommen
ASIHttpRequest hat eine einfache BOOL-Eigenschaft deaktiviert die Zertifizierung Validierung. Haben Sie vielleicht einen Blick auf die Quelle des Projekts oder benutzen Sie einfach das ASIHttpRequest statt NSURLRequest.
InformationsquelleAutor miho
Ich habe versucht, verschiedene Methoden und fand heraus, dass es im Zusammenhang mit apple-developer-Center-Zertifikat.
Aktualisieren Sie Ihre Bereitstellung und versuchen Sie es erneut. Ich habe versucht, posting-Daten mit iPad, iPhone 5 und 5S, sondern das iPhone 4.
Wenn ich update meine-Bereitstellung und Installation auf meinem iPhone 4, funktioniert jetzt ein Problem.
InformationsquelleAutor Pourang