Depuis que j'ai mis à niveau mon projet existant avec iOS 9, j'obtiens l'erreur:
Une erreur SSL s'est produite et une connexion sécurisée au serveur ne peut pas être établie.
Depuis que j'ai mis à niveau mon projet existant avec iOS 9, j'obtiens l'erreur:
Une erreur SSL s'est produite et une connexion sécurisée au serveur ne peut pas être établie.
Réponses:
Pour iOS9, Apple a pris une décision radicale avec iOS 9, en désactivant tout le trafic HTTP non sécurisé des applications iOS, dans le cadre de App Transport Security (ATS) .
Pour désactiver simplement ATS, vous pouvez suivre ces étapes en ouvrant Info.plist et en ajoutant les lignes suivantes:
la source
Même si autoriser des charges arbitraires (
NSAllowsArbitraryLoads = true
) est une bonne solution de contournement, vous ne devez pas désactiver complètement ATS mais plutôt activer la connexion HTTP que vous souhaitez autoriser:la source
iOS 9 force les connexions qui utilisent HTTPS à être TLS 1.2 pour éviter les vulnérabilités récentes. Dans iOS 8, même les connexions HTTP non chiffrées étaient prises en charge, de sorte que les anciennes versions de TLS ne posaient aucun problème non plus. Pour contourner ce problème, vous pouvez ajouter cet extrait de code à votre Info.plist:
* référencé à App Transport Security (ATS)
la source
Si vous ciblez uniquement des domaines spécifiques, vous pouvez essayer d'ajouter ceci dans Info.plist de votre application:
la source
Il semble qu'iOS 9.0.2 interrompt les demandes aux points de terminaison HTTPS valides. Mon soupçon actuel est qu'il nécessite des certificats SHA-256 ou qu'il échoue avec cette erreur.
Pour reproduire, inspectez votre UIWebView avec safari et essayez de naviguer vers un point de terminaison HTTPS arbitraire:
Maintenant, essayez d'aller sur Google (car ils ont bien sûr un certificat SHA-256):
L'ajout d'une exception à la sécurité du transport (comme indiqué par la réponse de @ stéphane-bruckert ci-dessus) permet de résoudre ce problème. Je suppose également que la désactivation complète
NSAppTransportSecurity
fonctionnerait également, même si j'ai lu que la désactivation complète peut compromettre l'examen de votre application.[EDIT] J'ai trouvé que le simple fait d'énumérer les domaines auxquels je me connecte dans le
NSExceptionDomains
dict résout ce problème, même en laissantNSExceptionAllowsInsecureHTTPLoads
la valeur true. : \la source
Le problème est le certificat ssl côté serveur. Soit quelque chose interfère, soit le certificat ne correspond pas au service. Par exemple, lorsqu'un site a un certificat SSL pour www.mondomaine.com alors que le service que vous utilisez s'exécute sur myservice.mydomain.com. C'est une machine différente.
la source
J'obtiens la même erreur lorsque je spécifie mon URL HTTPS comme suit : https://www.mywebsite.com . Cependant, cela fonctionne bien lorsque je le spécifie sans les trois W comme: https://mywebsite.com .
la source
Projet Xcode -> goto info.plist et cliquez sur + bouton puis sur Ajouter (Paramètres de sécurité du transport d'application) Développer, autoriser les charges arbitraires Définir OUI. Merci
la source
Mon problème était
NSURLConnection
et c'était obsolète dans iOS9, j'ai donc changé toute l'API enNSURLSession
et cela a résolu mon problème.NSURLConnection obsolète dans iOS9
la source
Dans mon cas, j'ai rencontré ce problème dans mon simulateur car la date de mon ordinateur était en retard par rapport à la date actuelle. Vérifiez donc également ce cas lorsque vous rencontrez une erreur SSL.
la source
J'obtenais une erreur en dessous de la lecture
Je me suis assuré que j'ai ajouté une entrée dans les domaines d'exception dans le fichier plist et que NSAllowsArbitraryLoads est défini sur true et je voyais toujours une erreur.
Puis j'ai réalisé que je jouais à l'URL avec https et non avec http.
J'ai défini l'URL de la vidéo sur http et le problème est résolu.
la source
J'obtenais cette erreur pour certains appels réseau et pas pour d'autres. J'étais connecté à un wifi public. Ce wifi gratuit semblait altérer certaines URL et donc l'erreur.
Lorsque je me suis connecté à LTE, cette erreur a disparu!
la source