38 votes

Certificats installés par iOS 11 et 12 non approuvés automatiquement (auto-signé)

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?

46voto

MattP Points 790

Lors de l'écriture de cette question, j'ai découvert la réponse. L'installation d'une autorité de certification de Safari n'est plus automatiquement confiance en elle. J'ai dû manuellement la confiance de l'approbation de Certificat panneau Paramètres (également mentionné dans cette question).

enter image description here

J'ai débattu de l'annulation de la question, mais j'ai pensé qu'il pourrait être utile d'avoir le code et les détails du journal de quelqu'un pourrait être à la recherche pour. Aussi, je n'ai jamais rencontré le problème jusqu'à ce que iOS 11. Je suis même allé en arrière et a réaffirmé qu'il fonctionne automatiquement via iOS 10.

Je n'ai jamais eu besoin de toucher que les paramètres du panneau avant, parce que tout est installé, des certificats ont été automatiquement approuvée. Peut-être que ça va changer par le temps iOS 11 navires, mais j'en doute. Espérons que cela aide à économiser quelqu'un le temps que j'ai perdu.

Si quelqu'un sait pourquoi il se comporte différemment pour certaines personnes sur les différentes versions d'iOS, j'aimerais savoir dans les commentaires.

Mise à jour: Vérification de la première iOS 12 bêta, il semble que les choses restent les mêmes. Cette question/réponse/vos commentaires sont toujours pertinents sur iOS 12.

7voto

Michal Cichon Points 324

Solution recommandée consiste à installer et à faire confiance à un certificat auto-signé (racine). En supposant que vous avez créé votre propre autorité de certification et la hiérarchie du certificat est correct, vous n'avez pas besoin de changer le serveur de confiance de l'évaluation. Cette option est recommandée car elle ne nécessite pas de modifications dans le code.

  1. Générer du CA et les certificats (vous pouvez utiliser openssl: Générer du CA et des certificats auto-signés.
  2. Installer le certificat racine (*.fichier cer) sur l'appareil - vous pouvez l'ouvrir en Safari et il doit vous rediriger vers des Paramètres de
  3. Lorsque le certificat est installé, passez à l'approbation de Certificat de Settings (Réglages > Général > à Propos de > Paramètres de Confiance du Certificat) comme dans MattP réponse.

Si il n'est pas possible, alors vous avez besoin de changer de serveur de confiance de l'évaluation.

Plus d'info dans ce document: Technique Q&A QA1948 HTTPS et les Serveurs de Test

4voto

David Johnston Points 766

C'est ce qui m'est arrivé également, après la date de sortie d'IOS11 sur mon iPhone. Lorsque j'essaie de me connecter au réseau de l'entreprise, il affiche le certificat de l'entreprise et indique qu'il n'est pas fiable. J'appuie sur le bouton 'confiance' et la connexion échoue et le certificat n'apparaît pas dans la liste des certificats de confiance.

1voto

Stoull Points 801

Apple part trois catégories de certificats: Trusted, Always Ask et Blocked. Vous rencontrerez le problème si votre certificat de type à l' Blocked et Always Ask de la liste. Sur Safari, c'est montrer du genre: enter image description here

Et vous pouvez trouver le type d' Always Ask des certificats sur Paramètres > Général > à Propos de > Certificat de Confiance

Il y a la Liste des certificats racine de confiance dans iOS 11

Le blocage de Confiance pour WoSign CA Certificat SSL Gratuit G2

1voto

Dustin Points 4694

Si vous ne voyez pas le certificat sous Général-> À propos-> Paramètres de confiance du certificat, l'autorité de certification ROOT n'est probablement pas installée. Très important - doit être une autorité de certification racine, pas une autorité de certification intermédiaire.

Je viens de répondre à une question ici expliquant comment obtenir l'autorité de certification ROOT et comment faire apparaître les éléments suivants: Comment installer des certificats auto-signés dans iOS 11

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X