2014-05-06 5 views
8

Ich habe selbst signierte Zertifikatsvalidierung auf dem Server. Wenn ich versuche, api https://wikiroutes.info/test/api/ios/getCities im Browser auf Mac, funktioniert es nur, wenn ich .p12-Zertifikat. Ich finde nicht, wo ich Passwort für .p12 in AFNetworking eingeben kann. Auch habe ich Datei .der, aber wenn ich es verwenden, ich habe Fehler kSecTrustResultRecoverableTrustFailure auf dem Code SecTrustEvaluate(allowedTrust, &result)AFNetworking https selbst signiertes Zertifikat

meinen Code

NSString* fileRoot = [[NSBundle mainBundle] pathForResource:@"cert.pem" ofType:@"der"]; 
NSData *certData = [[NSData alloc] initWithContentsOfFile:fileRoot]; 

AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init]; 
securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate; 
[securityPolicy setAllowInvalidCertificates:YES]; 
securityPolicy.pinnedCertificates = @[certData]; 

AFHTTPRequestOperationManager *operationManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"https://wikiroutes.info"]]; 
operationManager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; 
operationManager.securityPolicy = securityPolicy; 

[operationManager GET:@"test/api/ios/getCities" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"response %@",responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"error %@",error); 
}]; 

Sein mein Testprojekt. https://www.dropbox.com/s/410w5bau3e3slx9/testApp.zip

sein Zertifikat Dateien

https://www.dropbox.com/s/hk9hywri37wxpet/cert.pem.der https://www.dropbox.com/s/2cpfhokh59jo15d/cert.p12 (Passwort - nM123456)

Antwort

0

Soweit ich mich erinnere, automatisch für Zertifikate im DER-Format sucht AFNetworking mit "cer" Erweiterung, daher müssen Sie Konvertieren Sie Ihr PEM-Zertifikat wie folgt:

openssl x509 -in cert.pem -outform der -out cert.cer