Nicht auf selbst signiertes Zertifikat mit AFNetworking 2
Ich die .cer Zertifikat vom Apache-Server in das Xcode-Projekt. Wenn die app versucht zu sprechen, auf dem server bekomme ich diese Fehler in Xcode:
Assertion failure in id AFPublicKeyForCertificate(NSData *__strong)(),
/Users/../ProjectName/AFNetworking/AFSecurityPolicy.m:52
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'Invalid parameter not satisfying: allowedCertificate'
Hier ist der code für den Aufruf der server :
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[self setSecurityPolicy:[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]];
[manager POST:@"https://www.example.com/" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
//success
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//failure
}];
Änderte ich die pinning-Modus zu AFSSLPinningModeCertificate mit kein Glück.
und wenn ich diese Zeile zu entfernen:
[self setSecurityPolicy:[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]];
antwortet der server mit der Fehlermeldung:
"The operation couldn't be completed. (NSURLErrorDomain error -1012.)"
Das Zertifikat wurde erstellt, die OpenSSL verwenden, und ich versuchte sogar ein kostenloses Zertifikat aus StartSSL.com
Als für den Apache-Server Seite, hier ist der virtual-host-Konfiguration:
# My custom host
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot "/path/to/folder"
SSLEngine on
SSLCipherSuite HIGH:!aNULL:!MD5
SSLCertificateFile /path/to/www.example.com.cer
SSLCertificateKeyFile /path/to/www.example.com.key
<Directory "/the/directory/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/mysite.local-error_log"
</VirtualHost>
und der server hört auf den port 443
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Ihre Zertifikat-Datei ist nicht im richtigen format. Dein code scheitert an diese Zeilen (
AFURLConnectionOperation/pinnedPublicKeys
):Ich hatte den gleichen Fehler (auf
AFNetworking 1.1
aber die version sollte keine Rolle spielen), wenn mein Zertifikat wurde uns wie folgt:Konnte ich dies beheben, durch die Umwandlung des Zertifikats X. 509-format mit dem Befehl aus diese Antwort:
Danach habe ich umbenannt
adn.der
zurückadn.cer
('.cer' scheint der zu erwartenden Erweiterung fürAFNetworking
), und alles funktioniert gut jetzt.Das problem nicht auf der Seite der AFNetworkings, aber auf iOS: installieren Sie das selbstsignierte Zertifikat auf dem Gerät, da die iOS-Sicherheitseinstellungen verbieten verbindungen zu nicht vertrauenswürdigen Quellen.
Können Sie ein selbst signiertes Zertifikat als Zertifikat einer vertrauenswürdigen Quelle durch öffnen Sie das Zertifikat auf Ihr iOS-Gerät (E-mail es sich selbst und öffnen Sie es) und folgenden Sie den Installationsanweisungen.
Falls erforderlich, können Sie deaktivieren Sie das ungültige Zertifikat zu überprüfen, indem Sie Ihre Sicherheits-policy.
Bitte Lesen Sie mehr in der Dokumentation: http://cocoadocs.org/docsets/AFNetworking/2.0.3/Classes/AFSecurityPolicy.html#//api/name/allowInvalidCertificates
Können Sie auch die pin des Zertifikats: http://cocoadocs.org/docsets/AFNetworking/2.0.3/Classes/AFSecurityPolicy.html#//api/name/pinnedCertificates
Diese Website kann jemand helfen dieses Problem beheben http://www.indelible.org/ink/trusted-ssl-certificates/
Beispiel
https://github.com/AFNetworking/AFNetworking/tree/1.x