J'utilise des certificats auto-signés dans l'intranet de mon petit bureau et, après la mise à niveau vers iOS 11, les certificats ne fonctionnent pas pour moi. (Chrome et les autres navigateurs en sont satisfaits.)
J'ai mon fichier ca racine auto-signé et je l'ai converti en fichier .der, puis je l'ai installé sur mon iPad via Internet.
Mais contrairement à ceci Réponse , je ne peux pas voir mon certificat d’origine ca dans les paramètres> Paramètres> Général> À propos de> Certificat d’approbation.
Existe-t-il des limites relatives à la fiabilité des certificats dans iOS? Mon iPhone et mon iPad ont ce problème. Y at-il quelque chose de mal dans ma procédure?
J'ai utilisé ces codes pour créer mon certificat de certification.
openssl genrsa -des3 -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
openssl x509 -in rootCA.crt -out cert.der -outform DER
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.
C'est très facile à déterminer en utilisant openssl:
$ openssl s_client -showcerts -connect myserver.com:443 </dev/null
Cela vous montrera la sortie pour les certificats dans la chaîne de cert, quelque chose comme ceci:
Certificate chain
0 s:/C=US/ST=California/L=SAN FRANCISCO/O=mycompany.com, inc./OU=InfraSec/CN=myserver.com
i:/C=US/O=mycompany.com, inc./CN=mycompany.com Internal CA 1A
-----BEGIN CERTIFICATE-----
....encoded cert in PEM format....
-----END CERTIFICATE-----
Et il devrait montrer une chaîne de certs jusqu’à l’AC ROOT. Continuez à suivre les résultats en faisant attention à la valeur "i:" qui indique l’ÉMETTEUR. Enfin, vous devez accéder à l'autorité de certification racine et pouvez simplement le copier-coller dans un fichier .pem (veillez à inclure les lignes BEGIN CERTIFICATE et END CERTIFICATE!). Vous pourrez maintenant l'installer sur votre simulateur en le faisant glisser dans la fenêtre du simulateur.
Si votre autorité de certification racine n'est pas répertoriée, recherchez le niveau supérieur dans la sortie, puis exportez-la à partir du trousseau Access.app. Cela suppose que vous puissiez accéder au site Web via Safari/Chrome. Vous devrez donc commencer par faire confiance au site manuellement.
Ma sortie 'openssl s_client' s'est terminée avec le dernier certificat affiché avec un émetteur comme celui-ci:
i: /C=US/O=mycompany.com, inc./CN=mycompany.com Autorité de certification racine interne 1
Je peux accéder au site Web cible avec succès via Safari/Chrome, ce qui signifie que Keychain l’a stocké et l’a fait confiance. Je viens donc de lancer Keychain Access.app via Spotlight et de taper "mycompany" dans la barre de recherche. Il a montré mon certificat (Kind = certificat) pour "mycompany.com Internal Root CA 1". Je viens de cliquer avec le bouton droit de la souris sur "Exporter" et de l'enregistrer dans un fichier .cer.
Voila! Maintenant, je peux le glisser-déposer sur mon simulateur et l'autorité de certification racine apparaît sous Général-> À propos de ... et je peux l'activer.
Si, pour une raison quelconque, vous devez convertir le fichier PEM en DER/CER, utilisez cette commande:
$ openssl x509 -in myfile.pem -out myfile.der -outform DER
J'espère que cela aide, j'ai dû faire cela des dizaines de fois et j'ai pensé qu'il était temps que je note quelques notes afin de ne pas oublier.
Apparemment, ios n'aime pas les certificats sans nom commun, il suffit donc de le régénérer avec un CN non vide et il apparaîtra dans la liste des certificats racine
Il suffit d’utiliser les commandes suivantes puis de larguer ou de vous envoyer ce certificat par e-mail
openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer
J'ai eu le même problème jusqu'à ce que j'ai utilisé cette commande. Je ne sais pas pourquoi cela se produit mais la commande fonctionne . Salut!