Sur notre réseau interne, nous utilisons une auto-signé le certificat d'autorité de certification. Cela a bien fonctionné pendant des années, dans les deux Safari et notre produit iOS, tout le chemin à travers iOS 10. Nous avons il suffit d'installer le certificat d'autorité de certification sur le tout nouveau périphérique ou simulateur et tout fonctionne, même avec l'ATS. Cela permet d'accéder à tous nos internes des serveurs de test sans avoir à faire confiance à chaque serveur individuel.
À partir de l'iOS 11 installé le certificat d'autorité de certification ne permet plus de Safari ou notre application mobile pour approuver le certificat pour l'un des serveurs. Nous avons de recevoir les informations pertinentes CFNETWORK_DIAGNOSTICS
activé pour notre application:
Erreur de Domaine=kCFErrorDomainCFNetwork Code=-1200
_kCFNetworkCFStreamSSLErrorOriginalvalue=-9802
_kCFStreamErrorDomainKey=3
_kCFStreamErrorCodeKey=-9802
NSLocalizedDescription=Une erreur SSL a eu lieu et d'une connexion sécurisée au serveur ne peut pas être fait.
NSLocalizedRecoverySuggestion=souhaitez-vous vous connecter au serveur de toute façon?
J'ai passé beaucoup de temps à essayer de résoudre ce problème, récurer StackOverflow et le reste du web. Bien que nous utilisons AFNetworking dans notre application, qui semble être hors de propos, que Safari n'est plus fiducies de ces serveurs via le CA. La désactivation de l'ATS par NSAllowsArbitraryLoads
permet l'accès aux serveurs, mais évidemment ce n'est pas une solution.
Pas de changements ont été apportés à notre -URLSession:didReceiveChallenge:completionHandler
code, et nous avons une bonne travaillé pendant des années) de la mise en œuvre de défi de réponse via challenge.protectionSpace.serverTrust
.
J'ai ré-évalué et testé à la fois l'autorité de certification certificats de serveur et de toute façon je peux penser, et ils fonctionnent partout, sauf iOS 11. Ce qui pourrait avoir changé dans ATS pour iOS 11 qui pourrait causer ce problème?