15 votes

Pourquoi iOS 13 ne fait-il pas confiance à ma propre autorité de certification racine (Root CA) ?

Peu importe ce que je fais, je n'arrive pas à faire en sorte que Safari sur l'iPhone ou l'iPad fasse confiance à un certificat provenant d'un site interne. Je peux consulter le certificat et il est indiqué comme "non fiable".

J'ai importé l'autorité de certification racine, et j'ai activé la confiance pour l'autorité de certification racine. Cela fonctionnait avant avec iOS 12, mais cela ne semble plus être suffisant.

L'outil "SSL Detective" montre une chaîne de certificats approuvée. Safari sur Mac n'a aucun problème avec le site / le certificat (bien sûr, l'autorité de certification racine a dû être importée dans le trousseau d'abord).

S'agit-il d'un bug dans iOS 13.1.1? Ou y a-t-il encore plus d'obstacles que je ne connais pas pour activer une autorité de certification interne?

22voto

Jose Chavez Points 645

IOS 13 a augmenté la sécurité concernant ces certificats racine. Il ne s'agit donc pas d'un bug, mais plutôt de l'obligation de répondre à des exigences plus élevées pour que cela fonctionne.

Tout d'abord, le processus de confiance manuelle du certificat racine a été rendu légèrement plus compliqué afin de garantir que les utilisateurs ne le font pas involontairement. Avant, vous pouviez importer un profil et c'était terminé, mais maintenant vous devez également ouvrir Paramètres > Général > À propos de > Paramètres de confiance des certificats, puis basculer "Activer la confiance totale pour les certificats racine" pour le certificat.

En plus du changement de processus mentionné ci-dessus, les exigences pour le certificat réel ont également changé :

  • Si vous utilisez RSA, la taille de la clé doit être d'au moins 2048 bits.

  • L'algorithme de hachage doit être SHA-2, et non SHA-1.

Vous pouvez lire l'explication d'Apple concernant ces nouvelles exigences ici. Notez que la plupart des exigences ne concernent que les "certificats de serveur" - vous devez simplement respecter les nouvelles exigences pour les "AC d'émission".

Selon vos commentaires, il semblait que le titre de votre question était vraiment incorrect et ce n'était pas la confiance de l'AC racine qui posait problème - c'était le certificat de serveur qui n'était pas de confiance. Dans ce cas, rappelez-vous que le certificat de serveur doit respecter toutes les nouvelles exigences répertoriées dans le lien mentionné ci-dessus.

Ces nouvelles exigences sont, pour tous les certificats de serveur :

  • Lorsqu'il est utilisé pour TLS (comme dans Safari), le nom DNS du serveur doit figurer dans le champ Alternative Subject Name

Notez que cette exigence signifie également que si vous demandez votre page web en utilisant une adresse IP au lieu d'un nom, alors l'adresse IP (sans numéro de port) doit figurer dans le champ SAN.

Et pour les certificats de serveur émis après le 1er juillet 2019, également les deux exigences suivantes :

  • Lorsqu'il est utilisé pour TLS, le certificat doit contenir un champ ExtendedKeyUsage avec l'OID id-kp-serverAuth (c'est-à-dire ne pas utiliser un certificat répertorié comme certificat client, certificat de signature de code, certificat e-mail ou VPN, etc)

  • Lorsqu'il est utilisé pour TLS, le certificat doit être valide pendant 825 jours ou moins

Il s'est avéré que votre problème était lié à la période de validité du certificat étant supérieure à 825 jours. Vous devrez réémettre le certificat avec une période de validité plus courte.

La raison de la nouvelle exigence de période de validité est que le forum CA/B mondial (réglemente l'industrie des certificats numériques) a établi de nouvelles directives où les AC ne doivent pas émettre de certificats de serveur avec une période de validité de plus de 825 jours après le 1er mars 2018. Pour plus d'informations sur les personnes à l'origine de la nouvelle règle, vous pouvez trouver des informations sur le vote ici.

1 votes

Merci pour le lien. La seule exigence dont je ne suis pas sûr est que les certificats de serveur TLS doivent contenir une extension ExtendedKeyUsage (EKU) contenant l'OID id-kp-serverAuth. Je ne comprends pas ce que cela signifie, donc il est probable que je ne l'ai pas fait correctement. Tout le reste a été fait selon les directives. J'ai activé la confiance : C'était également nécessaire avec iOS 12.

1 votes

Ah, relisez le lien : Le certificat (certificat serveur, pas le certificat racine ou intermédiaire) est simplement valide pendant trop longtemps! Je l'ai créé pour 10 ans, mais il ne peut être valide que pour deux ans ou moins. Cela doit être la raison.

1 votes

L'OID id-kp-serverAuth signifie que lors de la création du certificat, il est indiqué dans ExtendedKeyUsage à quoi le certificat est "destiné". Cela peut être marqué comme un certificat client, un certificat de signature de code, un certificat d'email, un certificat VPN, etc. Vous devez le marquer comme un certificat de serveur pour qu'il soit accepté, par exemple par Safari pour TLS.

6voto

user363287 Points 49

Je travaille moi-même sur cela depuis des jours maintenant. 2 week-ends entiers sans succès. Donc en ce moment j'essaie de retrouver la foi. (pour que iOS 13 et iPadOS acceptent un certificat descendant d'une autorité de certification auto-signée)

Ma conclusion après avoir gaspillé 2 week-ends complets était juste. L'arborescence pki et les certificats étaient corrects.

La principale raison pour laquelle les certificats sur iOS n'étaient pas acceptés était parce qu'Apple a décidé d'ajouter une option de sécurité supplémentaire à cet effet dans une zone complètement différente! (Je suis énervé par Apple après plus de 10 ans d'utilisation d'appareils Apple). C'est quelque chose que j'attendrais de Win10 et non de iOS13 et iPadOS.

Pour ceux qui sont bloqués avec cela.

  • Etape 1) Téléchargez votre autorité de certification racine sur votre appareil iOS/iPadOS (par Airdrop, e-mail, ...)
  • Etape 2) Airdrop demande une installation sinon ouvrez dans l'application "Files"
  • Etape 3) Allez dans Réglages > Général > Profils et installez le certificat proposé & entrez votre code de sécurité (pas encore terminé)
  • Etape 4) Allez dans Réglages > Infos > "Paramètres de certificat"
  • Etape 5) activez le certificat ouvert

Les nouveaux menus séparés sont un peu pénibles et pas vraiment intuitifs. C'est tout.

0 votes

Merci beaucoup, j'avais oublié l'étape 5. Notez que, au moins dans iOS 16, le chemin est Paramètres > Général > Informations > Réglages du certificat.

0 votes

Apple a encore changé, dans la dernière version, c'est maintenant : Paramètres > Général > À propos > Réglages de confiance des certificats

-1voto

aventurin Points 97

En iOS 13, qui avait été publié le 19 septembre 2019, Apple a choisi d'invalider rétroactivement certains certificats qui ont été délivrés après le 1er juillet 2019.

En particulier, un certificat est affecté s'il a une période de validité de plus de 825 jours.

Si vous avez un tel certificat, il ne fonctionnera plus après la mise à jour vers iOS 13.

Dans ce cas, je qualifierais cela de bug dans iOS 13.

0 votes

Votre réponse n'est qu'une copie de certaines informations de ma réponse précédente? - Votre opinion sur le fait que cela soit un bogue et le mettre en évidence comme étant "rétroactivement" est vraiment étrange. Ce n'est pas un bogue - c'est complètement intentionnel, et ce n'est pas juste une décision arbitraire qu'Apple a prise. C'est un changement à l'échelle de l'industrie.

0 votes

Pouvez-vous donner un pointeur pour l'affirmation que c'est un changement généralisé dans l'industrie ? Je n'en ai pas trouvé. De plus, Android et les systèmes d'exploitation de bureau semblent ne pas montrer le même comportement. Probablement parce que cela a de graves implications dans les réseaux privés.

0 votes

J'ai complété ma réponse avec l'explication de pourquoi c'est un changement généralisé dans l'industrie. Fondamentalement, les AC ordinaires ne sont plus autorisées à délivrer des certificats ayant une validité de plus de 825 jours. Les AC privées utilisées sur les réseaux internes ne sont bien sûr pas soumises à ces nouvelles règles - mais les règles ont été modifiées pour une raison, il est donc logique pour Apple (et éventuellement d'autres) de mettre en œuvre la même restriction. En ce qui concerne les systèmes d'exploitation de bureau - la même exigence est présente dans macOS Catalina.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X