"nicht Vertrauenswürdige server-Zertifikat" auf dem iPhone
Schreibe ich eine iPhone-Anwendung, und ich möchte eine Verbindung zu einem 'HTTPS' server Informationen zu erhalten. Jedoch bekomme ich die Fehlermeldung in der Konsole ist
NSUnderlyingError = Error Domain=kCFErrorDomainCFNetwork Code=-1202
UserInfo=0x3e95cf0 "Das Zertifikat für diesen server ist ungültig. Sie
könnte die Verbindung zu einem server, der er vorgibt zu sein "example.com"
das könnte Ihre vertraulichen Daten in Gefahr."; }
Wie kann ich das Zertifikat und bekommen den http-status-code-200
Folgendes ist mein code.
NSMutableURLRequest *request_get2 = [[[NSMutableURLRequest alloc] init] autorelease];
[request_get2 setURL:[NSURL URLWithString:@"https://www.example.com"]];
[request_get2 setHTTPMethod:@"GET"];
[request_get2 setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//[request_get2 setValue:@"text/html; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request_get2 setValue:@"https://www.example.com" forHTTPHeaderField:@"Referer"];
[request_get2 setHTTPShouldHandleCookies:YES];
//cookiesString is in format "cookieName=cookieValue;"
[request_get2 setValue: (NSString *) cookiesString forHTTPHeaderField:@"Cookie"];
//doGet - response
NSHTTPURLResponse *response_get2 = nil; //it change from 'NSURLRespaonse' to 'NSHTTPURLResponse'
NSError *error_get2 = nil;
NSData *responseData_get2 = [NSURLConnection sendSynchronousRequest:request_get2 returningResponse:&response_get2 error:&error_get2];
NSString *data_get2 = [[NSString alloc]initWithData:responseData_get2 encoding:NSUTF8StringEncoding];
if (!error_get2) {
NSString *responseURL_get2 = [[response_get2 URL] absoluteString]; //null value
NSString *responseTextEncodingName_get2 = [response_get2 textEncodingName]; //null value
NSString *responseMIMEType_get2 = [response_get2 MIMEType]; //null value
NSUInteger *responseStatusCode_get2 = [response_get2 statusCode]; //[responseStatusCode intValue]; //the status code is 0
}
else {
NSLog(@"\nsomething went wrong: %@\n", [error_get2 userInfo]); //got the error in here
}
InformationsquelleAutor Questions | 2010-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass das hinzufügen von ein nicht vertrauenswürdiges Zertifikat ist (zumindest im simulator) nicht möglich, aber Sie können sagen, dass Ihre NSURLConnection Delegieren zu akzeptieren, sich selbst signierte Zertifikate (oder generell nicht vertrauenswürdig sind)
Den folgenden link hat mir geholfen, das Problem zu lösen!
Wie NSURLConnection verwenden, um eine Verbindung mit SSL für eine nicht Vertrauenswürdige cert?
bitte siehe meine Antwort in deinem anderen thread mit der gleichen Frage :).. thxs
InformationsquelleAutor samsam
Vertrauen allen Zertifikaten ist eine sehr schlechte Idee. Eine böswillige person kann eine Man-in-the-Middle - Angriff auf Ihre Benutzer zu Lesen oder zu ändern, alle übertragenen Daten.
Ich glaube, Ihr Zertifikat enthält nicht alle Zwischenzertifikate notwendig, um zu überprüfen Pfad zu einem system von vertrauenswürdigen root-Zertifikat. Es kann gemeldet werden, dass die unvollständiges Kette durch einige SSL-config-Validierungs-tools.
Können Sie lösen die unvollständiges Kette Problem manuell verkettet werden alle Zertifikate aus dem Zertifikat zu den vertrauenswürdigen root-Zertifikat (exklusiv in dieser Reihenfolge), um zu verhindern, dass solche Probleme. Beachten Sie die vertrauenswürdigen root-Zertifikat nicht vorhanden sein sollten, wie es bereits in der system-root-Zertifikat-Speicher.
Sollten Sie in der Lage sein zu Holen, intermediate-Zertifikate von den Emittenten und concat Sie zusammen durch sich selbst. Ich habe ein Skript geschrieben, das zum automatisieren der Verfahren, dauert es ein Zertifikat Ausgabe korrekt verkettete Zertifikate. https://github.com/zakjan/cert-chain-resolver
InformationsquelleAutor zakjan