Changement d'ordinateur et certificats
Bonjour à tous !
J'ai changé de Mac récemment et j'ai donc réinstallé Xcode sur le nouveau. Seulement je n'ai pas fait les bonnes choses et je me retrouve avec un problème qui m'empêche de tester mes apps sur mon iPhone et également de les distribuer sur l'AppStore. C'est plutôt embêtant. Donc j'ai décidé de re-télécharger tous les certificats mais la même erreur subsiste.
En fait, dans l'organizer, dans l'onglet "Team", je me retrouve avec une erreur au dessus où il est marqué : "Unable to code sign using identities in this team : no valid certificates with privates keys found".
Après maintes et maintes recherches sur Google et dans la doc Apple, je me retrouve toujours avec la même erreur... J'ai déjà eu plusieurs problèmes avec les certificats et j'ai l'impression c'est une méthode un peu laborieuse que de tester ces apps sur iPhone et de pouvoir les distribuer non ?
Avez-vous une petite idée sur le problème ?
Merci d'avance
Réponses
C'est que tu n'as pas exporté les clés privées de ton ancien Mac vers le nouveau on dirait...
Du coup, soit t'as encore ton ancien Mac et tu les récupères dans le trousseau, soit t'es bon pour re-générer les certificats sur le portail.
Je n'ai plus l'ancien... Que va-t-il se passer après la re-génération des certificats ? Pas de problème j'espère ?
De mon expérience : je l'ai fait (mon prédécesseur ne les avait plus), je n'ai pas eu de soucis sur les applications du client.
On en a déjà parlé ici.
Le choix du forum est bizarre par contre.
D'accord merci Idesroziers et Larme pour vos réponses ! Je vais re-générer mes certificats
Non c'est juste que si tu partageais ça avec d'autres personnes, bha elles ne pourront plus compiler les apps à moins que tu ne leur exporte les nouvelles clés/certificats (sauf si vous avez une clé / développeur)
D'accord. Je ne partage pas encore avec d'autre personne mais merci ! Pour ceux qui auraient du mal à recréer des certificats, je donne un petit lien.
J'ai déplacé le sujet dans le forum approprié, merci Larme
Bonjour,
Je voudrais en profiter pour demander une précision : je souhaite utiliser plusieurs postes de dev.
Puis-je exporter mes certificats sur une machine, les importer sur l'autre, et continuer de travailler sur les 2 ?
Ce serait surtout pour les certificats de dev, pas de distribution.
Merci d'avance.
Oui tu peux. Dans l'Organizer de Xcode tu as même des boutons exprès pour ça, pour exporter et importer tout un "profil de développeur" (ce qu'Apple appelle un dev profile = l'ensemble des certificats, clés privées, prov profile, etc tout packagé dans un seul fichier facile à trimbaler et à réimporter)
Je déconseille l'utilisation de l'organiser tant qu'on n'a pas compris ce qu'on est en train de faire.
C'est un peu comme utiliser ARC sans avoir jamais compris la gestion de la mémoire.
Hein ?!?
Nan je déconseille pas, mais c'est bien de comprendre ce qu'est un certificat, une clé et comment on peut les passer d'un mac à l'autre.
Merci à tous les deux.
Quant à comprendre un certificat, ce n'est pas encore bien clair dans ma tête. Chaque fois que j'ai un problème, je recommence tout. Mais bon, ça finira bien par rentrer.
Bon, je fais la manip export-import, et je croise les doigts !
SI la manip import export ne marche pas, essayer de supprimez les certificat en cours et de faire import apres
Merci pour cette précision, Am_Me.
- Clé privée : clé qui est privée (donc non divulguée aux autres, y'a que toi qui la garde) et permet de signer ton code (comme un auteur signerait son oeuvre, pour prouver que c'est de lui et pas de qqun d'autre). C'est pour ça qu'elle est privée, car puisque y'a que toi qui l'a, y'a que toi qui peut signer ton oeuvre (ton appli, ton code) avec, alors que si tu la laissait dispo à tout le monde n'importe qui pourrait signer à ta place.
- Clé publique : clé qui est... eh oui, publique ! C'est à dire accessible à tout le monde, son but est de permettre à n'importe qui de vérifier ta signature. Ca te permet pas de signer, mais juste de dire si une signature est correcte ou pas
- Certificat : il est associé à une clé publique, et permet d'y attacher des informations sur l'identité de la personne liée à la clé : son nom, prénom, etc. C'est un peu comme une étiquette que tu attaches à tes clés pour indiquer que c'est la clé de ton garage ou la clé de chez tonton Robert, si tu veux.
Un certificat permet de certifier (si si !) que la personne est bien qui elle dit qu'elle est. Car c'est bien beau de dire "hé bonjour tout le monde, je suis Apple et voilà ma clé publique si vous voulez vérifier que ce que je signe (avec ma clé privée) vient bien de moi et pas de qqun d'autre", avec cette clé publique ça te permet de t'assurer que chaque élément (application, code...) que tu vérifies avec cette clé a bien été généré par la même personne, la seule personne qui a la clé privée correspondante. Mais qui te prouve que cette personne, qui a clamé être Apple, est vraiment qui elle prétend être au niveau de son identité ? Si quelqu'un d'autre tente ensuite de publier une application et la signer avec une autre clé, tu verras que c'est pas la même personne que dans le premier cas, mais de là à savoir qui sont chacune de ces personnes et si elle ne mentent pas sur leur nom/prénom...
Pour cela, il existe des autorités de certification (genre VeriSign par exemple) qui sont en charge de vérifier l'identité des gens, et de signer (eh oui, là encore... avec leur clé privée à eux) le certificat. Ainsi, si Robert veut se faire passer pour la société Apple ou Orange ou Carrefour, il pourra toujours créer un faux certificat (comme une fausse pièce d'identité qu'il aurait imprimé avec son imprimante perso), mais ce certificat n'aura pas été approuvé par une autorité de certification (un peu comme le tampon "Copie Conforme" pour une photocopie ou les filigranes pour attester de l'authenticité d'un document) donc tu peux pas lui faire confiance (c'est comme ça que tu peux avoir parfois le message qd tu visites un site web genre "Ce certificat n'a pas été approuvé par une autorité de certification") etc. Alors que quand l'entreprise Carrefour veut un certificat pour certifier de son identité, elle peut montrer tous les papiers qu'il faut à VeriSign, qui va tout vérifier et signer son certificat si tout est en règle, te permettant d'être sûr que ce certificat n'est pas un faux et que l'identité associée à la clé publique est bien valide, que la personne derrière est bien qui elle prétend être.
Bien sûr, pour que cela marche, il faut faire confiance à l'autorité de certification. Car qui te certifie que l'autorité de certification qui a signé le certificat n'est pas elle-même un usurpateur d'identité... mais bon, des autorités de certification (ce qu'on retrouve sous l'appellation "Root Certificate Authority") y'en a pas 36000 et les plus connues sont identifiées et bien reconnues (et intégrées à OSX)
En bref :
- Clé privée = rien qu'à toi, te permet de signer du code comme tu signerai un document ou une oeuvre
- Clé publique = connue de tous, permet à n'importe qui de vérifier que du code ou une appli est bien issue de la personne attendue, celle associée à la clé privée. On ne connait pas la clé privée mais on peut vérifier avec la clé publique qu'un document a bien été signé avec cette clé et pas une autre.
- Certificat : associé à une clé publique, permet de certifier l'identité qu'il y a derrière une clé, c'est la fiche d'identité de la personne. Un certificat n'est utile que s'il est signé (pour qu'on soit sûr que ce n'est pas un faux), par une autorité de certification (qui elle même a une clé privée, une clé publique, et un certificat, qu'on appelle Root Certificate ou certificat racine)
Au niveau du dev iOS, la clé privée te permet de signer le code de tes applications pour être sûr par exemple qu'un petit pirate n'a pas détourné ton application pour y injecter du code (car dans ce cas la signature de code ne serait plus valide, et le pirate ne pourrait pas resigner avec ta clé ne connaissant pas ta clé privée). La clé publique permet à n'importe qui de vérifier que l'appli a bien été signée avec ton compte développeur, et le certificat permet de certifier que derrière ce compte développeur c'est bien toi avec ton nom et prénom et pas qqun qui se fait passer pour toi (car Apple a pu vérifier ton identité, avec tes coordonnées bancaires par exemple, quand tu t'es inscrit). Dans ce cadre, c'est Apple qui est l'autorité de certification qui émet/signe les certificats pour valider de ton identité.
Ca, c'est vraiment très gentil : je n'aurai plus d'excuses si je n'ai pas compris.
En fait, ça n'a pas marché, je n'ai pas du faire ce qu'il fallait. Du coup, j'ai créé d'autres profils.
Bon, je vais potasser tout ça et mille mercis !!!
Tu nous tiendras au courant car FAUT que ca marche !
Je réessayerai avec la méthode que vous m'avez donnée, mais en créant un autre profil de dev, ça a marché.
Et puis, je ne comprends pas, parce que lorsque j'exporte puis réimporte sur le second ordi, il ne récupère que les certificats, pas le clefs.
Je vais bien relire le 'cours complet d'Alligator', je re-tenterai, et je vous dirai si je m'en suis sortie.
Merci.
L'identite du developpeur = le certificat + la clé privée.
Pour signer une app, Xcode a besoin de l'identité.
Donc pour signer sur un autre mac, il suffit de transferer le couple certificat+clé privee.
Ces elements sont stockes dans des fichiers .keychain que tu peux visualiser via le keychain utility. Ces fichier sont proteges par un mot de passe qui est normalement le meme que ton mot de passe de session.
Tu pourrais carrement transferer le fichier keychain sur l'autre mac mais ce fichier contient sans doute plein d'autres clés et mots de passe.
Donc il vaut mieux juster transferer l'identité, pour cela, tu ouvres ton keychain utility (trousseau d'acces en français), t vas dans le login keychain, tu trouves le couple certificat-clé privée, tu selectionnes les deux puis tu exportes via le menu Fichier.
Je crois que le format proposé est .p12, tu peux ensuite copier ce fichier sur le nouveau mac et l'importer dans le keychain.
En complément, je te conseille de visionner la vidéo de la session #6 des CocoaHeads de Rennes "Signature et Distribution"
http://cocoaheads.tv/signature-et-distribution-sur-ios/
Mais tu vas retrouver tous ce qu'Ali ta dit...
Merci, MKDEV. Concernant le trousseau, oui, ça me paraà®t plus logique de passer par lui. Je n'osais pas trop aller les manipuler.
Merci Alf pour le lien de la video, ce sera un bon complément, je trouve que tout est souvent plus clair en images.