Für diejenigen unter Ihnen, die mehr darüber erfahren möchten, warum dies geschieht, und darüber, wie es behoben werden kann, lesen Sie weiter unten.
Mit der Einführung von iOS 9 müssen sichere Verbindungen zwischen einer App und ihrem Webdienst den Best Practices entsprechen , um die Sicherheit der Verbindungen zwischen einer App und Webdiensten zu verbessern . Das Best-Practice-Verhalten wird von der App Transport Security erzwungen, um :
- verhindern versehentliche Offenlegung, und
- Geben Sie ein sicheres Standardverhalten an.
Wie im App Transport Security Technote erläutert, gelten für die Kommunikation mit Ihrem Webdienst für App Transport Security jetzt die folgenden Anforderungen und Verhaltensweisen:
- Der Server muss mindestens das TLS-Protokoll (Transport Layer Security) Version 1.2 unterstützen.
- Verbindungs-Chiffren sind auf diejenigen beschränkt, die Vorwärtsgeheimnis bieten (siehe Liste der Chiffren unten).
- Zertifikate müssen mit einem SHA256-Hash-Algorithmus oder einem besseren Signatur-Hash-Algorithmus signiert werden, entweder mit einem RSA-Schlüssel mit 2048 Bit oder mehr oder einem ECC-Schlüssel (Elliptic-Curve) mit 256 Bit oder höher.
- Ungültige Zertifikate führen zu einem harten Fehler und keiner Verbindung.
Mit anderen Worten, Ihre Webdienstanforderung sollte: a.) HTTPS verwenden und b.) Mit TLS v1.2 mit Vorwärtsgeheimnis verschlüsselt werden.
Wie bereits in anderen Beiträgen erwähnt, können Sie dieses neue Verhalten von App Transport Security überschreiben, indem Sie die unsichere Domäne in Info.plist
Ihrer App angeben.
Zum Überschreiben müssen Sie die NSAppTransportSecurity
> NSExceptionDomains
Wörterbuch-Eigenschaften zu Ihrem hinzufügen Info.plist
. Als Nächstes fügen Sie die Domain Ihres Webdienstes zum NSExceptionDomains
Wörterbuch hinzu.
Wenn ich beispielsweise das Verhalten von App Transport Security für einen Webdienst auf dem Host www.yourwebservicehost.com umgehen möchte, würde ich Folgendes tun:
Öffnen Sie Ihre App in Xcode.
Suchen Sie die Info.plist
Datei im Projektnavigator und klicken Sie mit der rechten Maustaste darauf und wählen Sie die Menüoption Öffnen als > Quellcode . Die Eigenschaftslistendatei wird im rechten Bereich angezeigt.
Fügen Sie den folgenden Eigenschaftenblock in das Haupteigenschaftenwörterbuch ein (unter den ersten <dict>
).
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Wenn Sie Ausnahmen für zusätzliche Domänen angeben müssen, fügen Sie darunter eine weitere Wörterbucheigenschaft hinzu NSExceptionDomains
.
Um mehr über die oben genannten Schlüssel zu erfahren, lesen Sie diesen bereits erwähnten Technote .