web-dev-qa-db-fra.com

xCode 9 - iOS 11: NSURLConnection - sendAsynchronousRequest échoue

Je viens de télécharger la dernière version de xCode (9.0 beta (9M136h)).

Cependant, lorsque j'essaye de faire une demande à mon serveur dans le simulateur iOS 11 (Utilisation de NSURLConnection sendAsynchronousRequest), une erreur est reçue:

NSURLSession/NSURLConnection Le chargement HTTP a échoué (kCFStreamErrorDomainSSL, -9807) NSURLConnection s'est terminé avec l'erreur - code -1202

L'objet NSError contient le message - "NSLocalizedDescription": @ "Le certificat de ce serveur n'est pas valide. Vous vous connectez peut-être à un serveur prétendant être" *** ", ce qui pourrait compromettre vos informations confidentielles."

Le plist contient:

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

donc ce n'est pas le problème dans ce cas (je suppose)

Inutile de dire que cela fonctionne sous iOS 10/9/8

Aucune suggestion?

Merci d'avance!

17
dor506

Pour tous ceux qui ont cette erreur dans iOS 11 , veuillez vous assurer que vous travaillez contre un certificat valide (sécurisé) sur votre serveur.

Dans notre cas, le certificat n'était pas assez strict.

Une fois que notre serveur a intégré un nouveau certificat valide, le problème a disparu.

Une façon de vérifier si le certificat est sécurisé consiste à passer le lien qui pose problème dans le navigateur.

Par conséquent, vous constaterez peut-être que la connexion n'est pas sécurisée:

enter image description here

1
dor506

Vous devez autoriser votre application à exécuter des connexions HTTP (pas de S). Par défaut, Apple n'autorise que HTTPS:

  1. allez sur votre info.plist

    here

  2. puis appuyez sur l'icône plus sur l'un d'eux
  3. Recherchez "Paramètres de sécurité App Transport" here
  4. cliquez sur la petite flèche à gauche et recherchez "Autoriser les charges arbitraires". Par défaut, la valeur est "NON", changez-la en "OUI".
6
Carter4502

Puisque vous avez une erreur de certificat invalide, je vais faire la suggestion suivante en fonction de mes pratiques de sécurité personnelle.

Si vous êtes toujours dans les conditions de service de votre autorité de certification, demandez-leur de vous délivrer un nouveau certificat valide.

Vérifiez les paramètres de votre trousseau et assurez-vous qu'aucun certificat de certification n'est manquant.

Vous pouvez également émettre votre propre certificat auto-signé à des fins de test et l'ajouter à votre trousseau local en tant qu'ancre de confiance. Une recherche sur "comment créer un certificat auto-signé x509" renverra quelque chose qui pourrait vous être utile.

0
DannyNiu