webentwicklung-frage-antwort-db.com.de

xCode 9 - iOS 11: NSURLConnection - sendAsynchronousRequest schlägt fehl

Ich habe gerade die neueste Version von xCode (9.0 Beta (9M136h)) heruntergeladen.

Wenn ich jedoch versuche, im iOS 11-Simulator eine Anforderung an meinen Server zu senden (mithilfe von NSURLConnection sendAsynchronousRequest), wird ein Fehler angezeigt:

NSURLSession/NSURLConnection HTTP-Ladevorgang fehlgeschlagen (kCFStreamErrorDomainSSL, -9807) NSURLConnection wurde mit Fehlercode -1202 beendet

Das NSError-Objekt enthält die Meldung - @ "NSLocalizedDescription": @ "Das Zertifikat für diesen Server ist ungültig. Sie stellen möglicherweise eine Verbindung zu einem Server her, der vorgibt," *** "zu sein, wodurch Ihre vertraulichen Informationen gefährdet werden könnten."

Die Pliste enthält:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

so ist es nicht das Problem in diesem Fall (ich denke,)

Unnötig zu sagen, dass es in iOS 10/9/8 funktioniert

Irgendwelche Vorschläge?

Danke im Voraus!

17
dor506

Stellen Sie sicher, dass Sie für alle Benutzer, die diesen Fehler in iOS 11 erhalten, mit einem gültigen (gesicherten) Zertifikat auf Ihrem Server arbeiten.

In unserem Fall war das Zertifikat nicht streng genug.

Sobald unser Server-Typ ein neues gültiges Zertifikat integriert hat, ist das Problem behoben.

Eine Möglichkeit, um zu überprüfen, ob das Zertifikat gesichert ist, besteht darin, den problematischen Link im Browser einzufügen.

Infolgedessen wird möglicherweise angezeigt, dass die Verbindung nicht gesichert ist:

enter image description here

1
dor506

Sie müssen zulassen, dass Ihre Anwendung HTTP-Verbindungen (keine S-Verbindungen) ausführt. Standardmäßig erlaubt Apple nur HTTPS:

  1. gehe zu deiner info.plist

    here

  2. drücken Sie dann auf eines der Pluszeichen
  3. Suche nach "App Transport-Sicherheitseinstellungen" here
  4. klicken Sie auf den kleinen Pfeil links und suchen Sie "Beliebige Ladevorgänge zulassen". Standardmäßig ist dieser auf "NEIN" eingestellt. Ändern Sie ihn auf "JA".
6
Carter4502

Da Sie einen ungültigen Zertifikatfehler haben, mache ich den folgenden Vorschlag basierend auf meiner persönlichen Sicherheitspraxis.

Wenn Sie noch mit Ihrer Zertifizierungsstelle in Kontakt stehen, bitten Sie diese, ein neues gültiges Zertifikat für Sie auszustellen.

Überprüfen Sie Ihre Schlüsselbundeinstellungen und stellen Sie sicher, dass kein CA-Zertifikat fehlt.

Alternativ können Sie Ihr eigenes selbstsigniertes Zertifikat zu Testzwecken ausstellen und es Ihrem lokalen Schlüsselbund als Vertrauensanker hinzufügen. Eine Suche nach "So erstellen Sie ein selbstsigniertes x509-Zertifikat" gibt etwas zurück, das Sie möglicherweise nützlich finden.

0
DannyNiu