Seit ich mein bestehendes Projekt mit iOS 9 aktualisiert habe, wird immer wieder der folgende Fehler angezeigt:
Ein SSL-Fehler ist aufgetreten und eine sichere Verbindung zum Server kann nicht hergestellt werden.
Seit ich mein bestehendes Projekt mit iOS 9 aktualisiert habe, wird immer wieder der folgende Fehler angezeigt:
Ein SSL-Fehler ist aufgetreten und eine sichere Verbindung zum Server kann nicht hergestellt werden.
Antworten:
Für iOS9 traf Apple mit iOS 9 eine radikale Entscheidung und deaktivierte den gesamten ungesicherten HTTP-Verkehr von iOS-Apps als Teil von App Transport Security (ATS) .
Um ATS einfach zu deaktivieren, können Sie diese Schritte ausführen , indem Sie Info.plist öffnen und die folgenden Zeilen hinzufügen:
quelle
Obwohl das Zulassen beliebiger Ladevorgänge (
NSAllowsArbitraryLoads = true
) eine gute Problemumgehung ist, sollten Sie ATS nicht vollständig deaktivieren, sondern die HTTP-Verbindung aktivieren, die Sie zulassen möchten:quelle
iOS 9 erzwingt, dass Verbindungen, die HTTPS verwenden, TLS 1.2 sind, um aktuelle Sicherheitslücken zu vermeiden. In iOS 8 wurden sogar unverschlüsselte HTTP-Verbindungen unterstützt, sodass auch ältere TLS-Versionen keine Probleme bereiteten. Um dieses Problem zu umgehen, können Sie dieses Code-Snippet zu Ihrer Info.plist hinzufügen:
* verwiesen auf App Transport Security (ATS)
quelle
Wenn Sie nur auf bestimmte Domänen abzielen, können Sie versuchen, diese in die Info.plist Ihrer Anwendung aufzunehmen:
quelle
Es scheint, dass iOS 9.0.2 Anforderungen an gültige HTTPS-Endpunkte unterbricht. Mein aktueller Verdacht ist, dass SHA-256-Zertifikate erforderlich sind oder dass dies mit diesem Fehler fehlschlägt.
Überprüfen Sie zum Reproduzieren Ihre UIWebView mit Safari und versuchen Sie, zu einem beliebigen HTTPS-Endpunkt zu navigieren:
Versuchen Sie jetzt, auf Google zu gehen (da sie natürlich ein SHA-256-Zertifikat haben):
Das Hinzufügen einer Ausnahme zur Transportsicherheit (wie in der obigen Antwort von @ stéphane-bruckert beschrieben) behebt dieses Problem. Ich gehe auch davon aus, dass das komplett deaktiviert ist
NSAppTransportSecurity
auch funktionieren würde, obwohl ich gelesen habe, dass eine vollständige Deaktivierung Ihre App-Überprüfung gefährden kann.[BEARBEITEN] Ich habe festgestellt, dass das Auflisten der Domänen, mit denen ich im Diktat eine Verbindung herstelle,
NSExceptionDomains
dieses Problem behebt, selbst wenn der WertNSExceptionAllowsInsecureHTTPLoads
auf true gesetzt bleibt. : \quelle
Das Problem ist das SSL-Zertifikat auf der Serverseite. Entweder stört etwas oder das Zertifikat stimmt nicht mit dem Dienst überein. Zum Beispiel, wenn eine Site ein SSL-Zertifikat für www.mydomain.com hat, während der von Ihnen verwendete Dienst auf myservice.mydomain.com ausgeführt wird. Das ist eine andere Maschine.
quelle
Ich erhalte den gleichen Fehler, wenn ich meine HTTPS-URL wie folgt anführe: https://www.mywebsite.com . Es funktioniert jedoch einwandfrei, wenn ich es ohne die drei Ws wie folgt spezifiziere: https://mywebsite.com .
quelle
Xcode-Projekt -> Gehen Sie zu info.plist und klicken Sie auf +, dann auf Hinzufügen (Sicherheitseinstellungen für den App-Transport). Erweitern, Beliebige Lasten zulassen. JA. Vielen Dank
quelle
Mein Problem war
NSURLConnection
und das war in iOS9 veraltet, also habe ich die gesamte API geändertNSURLSession
und das hat mein Problem behoben.NSURLConnection ist in iOS9 veraltet
quelle
In meinem Fall trat dieses Problem in meinem Simulator auf, weil das Datum meines Computers hinter dem aktuellen Datum lag. Überprüfen Sie diesen Fall auch, wenn ein SSL-Fehler auftritt.
quelle
Bei der Wiedergabe wurde der Fehler unterschritten
Ich habe sichergestellt, dass ich einen Eintrag in Ausnahmedomänen in der plist-Datei hinzugefügt habe und NSAllowsArbitraryLoads auf true gesetzt ist, und trotzdem wurde ein Fehler angezeigt.
Dann wurde mir klar, dass ich URL mit https und nicht mit http spiele.
Ich habe die Video-URL auf http gesetzt und das Problem behoben.
quelle
Ich habe diesen Fehler für einige Netzwerkanrufe und nicht für andere erhalten. Ich war mit einem öffentlichen WLAN verbunden. Das kostenlose WLAN schien bestimmte URLs und damit den Fehler zu manipulieren.
Als ich mich mit LTE verband, ging dieser Fehler weg!
quelle