Moja aplikacja po prostu łączy się z serwerem internetowym na urządzeniu domowym i czyta jakiś html. Działa to dobrze, gdy używasz http, ale teraz na iOS 8 podczas korzystania z https nie działa.iOS 8 zepsuł połączenie SSL w mojej aplikacji - nie powiodło się połączenie SSL SSLNetwork (-9806)
Używam AFNetworking
v1 i przesłonię sprawdzenia SSL za pomocą tych metod nadpisywania (Tak, wiem, że w normalnych okolicznościach nie powinno się tego robić i jest niebezpieczne itp., Ale to inny temat).
[self setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
}
}];
[self setAuthenticationAgainstProtectionSpaceBlock:^BOOL(NSURLConnection *connection, NSURLProtectionSpace *protectionSpace) {
if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust]) {
return YES; // Self-signed cert will be accepted
}
// If no other authentication is required, return NO for everything else
// Otherwise maybe YES for NSURLAuthenticationMethodDefault and etc.
return NO;
}];
Teraz z iOS 8 pojawia się błąd jak poniżej:
CFNetwork SSLHandshake failed (-9806)
CFNetwork SSLHandshake failed (-9806)
CFNetwork SSLHandshake failed (-9806)
NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806)
Error during connection: Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo=0x7b66c110 {NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorCodeKey=-9806, NSErrorFailingURLStringKey= https://xxx.xxx.xxx.xxx:443/live.htm , _kCFStreamErrorDomainKey=3, NSUnderlyingError=0x7c0d8a20 "An SSL error has occurred and a secure connection to the server cannot be made.", NSErrorFailingURLKey= https://xxx.xxx.xxx.xxx:443/Info.live.htm }
Próbowałem zmiany na FSNetworking i IT sometimes
prace przy tworzeniu tego:
- (void)connection:(NSURLConnection *)connection
willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
{
NSLog(@"Ignoring SSL");
SecTrustRef trust = challenge.protectionSpace.serverTrust;
NSURLCredential *cred;
cred = [NSURLCredential credentialForTrust:trust];
[challenge.sender useCredential:cred forAuthenticationChallenge:challenge];
return;
}
}
jednak robi 2 jednoczesne żądanie, tylko 1 zakończy się pomyślnie, a jeden zakończy się niepowodzeniem z podobnym błędem do powyższego. Wydaje się, że tylko jedno żądanie osiąga punkt zastąpienia SSL.
Czy ktoś może rzucić trochę światła na to i co się zmieniło w iOS 8, aby to przełamać i jak mogę to naprawić?
Dzięki
Oto lista kodów błędów, które obejmują Twój: http://www.opensource.apple.com/source/libsecurity_ssl/libsecurity_ssl-32463/lib/SecureTransport.h – eremzeit