web-dev-qa-db-fra.com

Erreur de code-code: l'identité du certificat apparaît deux fois

Erreur CodeSign: l'identité du certificat 'iPhone Developer: XXXX (12345678)' apparaît plusieurs fois dans le trousseau. L'outil de conception de codes nécessite qu'il n'y en ait qu'un.

Alors je vais à mon trousseau et le supprime. Mais je reçois cette erreur à chaque fois que je redémarre Xcode 4 et qu'une application rajoute l'ancien certificat périmé dans le trousseau. Des idées pourquoi et quelle application?

104
Mugunth

Ok, a trouvé la réponse à une autre question "liée". Problème de certificat expiré par Xcode Problème connu lié à Xcode 4 http://openradar.appspot.com/917328

4
Mugunth

Je viens d'avoir le même problème. Cela a été corrigé. Cela est arrivé après que j'ai soumis une application et installé quelques certificats pour la signer.

Solution rapide: Ouvrez KEYCHAIN ​​ACCESS> cliquez sur MES CERTIFICATS>, vous verrez probablement iPhone Developer:. Vous allez probablement le voir deux fois! Sélectionnez celui avec la date d'expiration la plus ancienne, cliquez avec le bouton droit de la souris et sélectionnez Supprimer.

Redémarrez Xcode si vous ne l'avez pas encore fait. Fonctionne maintenant. :)

Bonne codage.

99
Louie

Je pense avoir compris pourquoi la suppression simple ne fonctionne pas. Comme le certificat dev est toujours stocké dans le profil de provision, lorsque je ferme/rouvre le Xcode après avoir supprimé le certificat dans le trousseau, j'ai vu l'ancien certificat revenir. Alors je le supprime à nouveau. Ça a marché.

La simple suppression de la solution de profil n'a pas fonctionné pour moi.

Solution qui a fonctionné dans mon cas:

  1. Quitter Xcode
  2. Si l'accès au trousseau est ouvert, laissez-le ouvert.
  3. Lancez Xcode maintenant.
  4. Vérifiez que le certificat dont Xcode se plaignait sera ré-ajouté dans le trousseau au lancement à partir de son cache.
  5. Vas y et supprime le.
  6. Compiler et coder heureux.
71
Mobilewits

Je viens de passer pas mal de temps à lutter contre le même problème. Après toutes les tentatives pour y remédier, j'ai finalement réalisé que c'était un bogue dans Xcode. Ce message m'a donné un indice pour résoudre le problème: les certificats apparaissent comme par magie dans votre troussea

Dans mon cas, la clé privée correspondante se trouvait dans le trousseau Système et portait juste mon nom (difficile de dire que c'était pour le provisionnement). J'ai dû:

  • Déplacez la clé privée associée vers le trousseau 'login'
  • Xcode redémarré et remarqué que la clé privée était maintenant affichée comme étant associée (confirme son utilité)
  • Supprimer le cert et la clé privée
  • Redémarrez Xcode et poof! Il a cessé d'ajouter mon ancien cert

Une observation intéressante est que lorsque vous supprimez le certificat, il ne supprime pas la clé privée associée. Visuellement, il montre la clé privée sous le cert. Ne soyez pas dupe.

Bonne chance!

9
Sean Aitken

Si vous êtes membre des programmes iOS Developer et Enterprise iOS Developer et que vous avez entré le nom de votre société de la même manière pour les deux applications, vous obtiendrez deux certificats de distribution valides portant le même nom.

Je crois que cette question répond à cette situation: Collisions CodeSign entre Developer et Enterprise Distribution

4
Josh Metcalfe

J'ai le même problème avec xcode45-DP1. cela fonctionne pour moi:

  1. supprimer tous les certificats liés à votre compte du trousseau. Porte-clés QUIT

  2. supprimez tous les profils de provisioning liés à votre compte de xcode: organiseur: périphérique: Bibliothèque: profils de provisioning. QUIT xcode

  3. révoquer votre certificat, le régénérer et le télécharger sur votre machine de compilation

  4. avant de télécharger le profil d'approvisionnement, cliquez sur Éditer à côté du bouton de téléchargement pour vous assurer que votre nom est sélectionné.

  5. Puis téléchargez le profil d'approvisionnement

  6. double-cliquez sur le certificat pour l'installer sur le trousseau

  7. faites glisser le profil d'approvisionnement vers xcode: organiseur: périphérique: bibliothèque: profils d'approvisionnement

  8. ne cliquez pas sur le bouton d'actualisation du xcode.

  9. faire la construction.

3
ccs

La réponse est ici

supprimez tous mes anciens profils de provisioning à l'aide de l'ancien certificat avec Organizer, puis quittez XCode, supprimez l'ancien certificat de Keychain et redémarrez XCode.

on dirait que le xcode conservera les certificats lorsque vous aurez des références aux profils de provisioning

3
yeahdixon

Dans mon cas, le "cache" que Xcode recherchait était un périphérique iOS connecté. Pour déterminer si tel est le problème pour vous:

  1. Déconnectez tous les appareils iOS
  2. Supprimer le certificat en cause et la clé privée de l'accès au trousseau
  3. Redémarrer Xcode
  4. Vérifier l'accès au trousseau: dans mon cas, le duplicata N'A PAS été recréé à ce stade.
  5. Reconnecter le périphérique iOS
  6. Redémarrer à nouveau Xcode
  7. Vérifier l'accès au trousseau: dans mon cas, le duplicata a été recréé à ce stade

Si tel est le cas, vous pouvez le résoudre en vous assurant de déconnecter les appareils iOS avant de démarrer Xcode.

1
Simon Whitaker

J'avais des problèmes avec les certificats de zombies étant repeuplés dans mon trousseau et l'identité de certificat apparaissant deux fois. Supprimer simplement le certificat en double ne fonctionnait pas.

Dans Xcode, lorsque je regardais ma signature de code dans la cible, je me souvenais que j'avais un profil de distribution différent dans les générations "Ad Hoc" par rapport aux générations "Release".

Lorsque j'ai généré un nouveau certificat, j'ai uniquement téléchargé un nouveau profil pour les générations Ad Hoc, et non pour les versions Release.

Xcode était suspendu au certificat pour ces deux profils, et Xcode était donc à l'origine des certificats en double… parce que j'avais oublié de mettre à jour correctement mes profils.

Assurez-vous de mettre à jour TOUS vos profils d'approvisionnement avec le nouveau certificat et de modifier TOUS les profils en même temps dans Xcode.

Be sure to update all your provisioning profiles with the new certificate, otherwise Xcode will try to put the certificate for BOTH profiles in the keychain... causing the duplicate error!

1
karlbecker_com

J'ai eu ce problème et lu chaque information à ce sujet, enfin j'ai trouvé la solution par moi-même. Ce que les gens ont omis de mentionner, c’est que AVANT nettoyant les certificats dans l’organisateur Xcode et AVANT en nettoyant les clés périmées de votre trousseau, vous devez vous assurer de ne pas avoir de certificat expiré dans le portail de provisioning. Si vous avez même un certificat arrivé à expiration pour une ancienne application qui utilisait l'ancien certificat de développeur, Xcode l'utilisera dans son organiseur avec la première génération et, à partir de là, il ira dans votre trousseau de clés et en provoquera une copie.

1
Segev

Supprimer simplement le certificat redondant n'a pas fonctionné pour moi. Il semble que chaque fois que xcodebuild est appelé, il "re-crée" le certificat dans le trousseau à partir d'un cache quelque part ... même problème que avi J'ai créé un hack/correctif pour celui-ci, j'ai essayé de trouver où le fichier était mis en cache et le vider, mais sans succès. En fin de compte, ce qui a fonctionné pour moi (un peu d'un bidouillage, mais bon, que pouvez-vous faire d'autre), a été de déterminer le numéro du certificat et de le supprimer manuellement du trousseau peu après l'appel de xcodebuild. Tout d’abord, allez dans votre répertoire/usr/bin/(ou quel que soit le répertoire contenant votre fichier xcodebuild, essayez which xcodebuild) et exécutez la commande suivante:

Sudo mv xcodebuild xcodebuild_actual

Créez ensuite un fichier avec votre éditeur favori (n'oubliez pas de Sudo) avec le code suivant:

xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
Sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E

Remarque: vous devrez modifier votre fichier sudoers pour pouvoir accéder à cette commande spécifique sans avoir à entrer de mot de passe.

Remplacez l'identité hexadécimale après -Z ci-dessus par l'identité hexadécimale du certificat de zombie incriminé. Enfin, assurez-vous que le fichier xcodebuild est exécutable:

Sudo chmod 755 xcodebuild 

Vous pouvez maintenant ouvrir votre trousseau de clés, exécuter la commande de construction et observer comment le certificat zombie incriminé est ressuscité, puis fusillé avant qu'il ne devienne un problème de codeigning. Espérons que Apple fournira une vraie solution à ce problème.

0
BadPirate

Je viens de supprimer une des clés privées de mon trousseau pour le certificat dont je n’ai plus besoin.

Même si le certificat réapparaît mais la clé privée ne réapparaît pas. Maintenant, vérifiez les certificats valides et un seul certificat apparaîtra et les autres certificats dont la clé privée est supprimée ne sont plus affichés sous les certificats valides.

Je pense que c'est le moyen le plus simple de résoudre ce problème.

0
swathy valluri

J'avais affaire au même problème une fois. Et je l'ai résolu en supprimant le profil d'approvisionnement non utilisé de l'onglet Organiseur dans xcode. En réalité, Keychain obtiendra ce certificat de ce profil d'approvisionnement qui est un certificat arrivé à expiration ou le certificat de génération par révocation.

Il vous suffit donc de supprimer ce profil d'approvisionnement de l'onglet Organiseur. L'organisateur se trouve sur le bouton en haut à droite de xcode, ouvrez-le puis, dans Organizer, supprimez les profils de provisioning que vous n'utilisez pas.

Voici la capture d'écran,

enter image description here

Et n'oubliez pas de supprimer le certificat supplémentaire du trousseau, mais après cela, ces certificats ne s'affichent plus.

0
Dilip

Dans mon cas, la suppression des certificats ne fonctionnait pas. XCode 4 semble les mettre en cache ou les restaurer. Le truc qui a finalement fonctionné pour moi était de faire fonctionner le trousseau et le xcode. Ensuite, dans le trousseau, faites glisser mes 2 certificats (dev + dist) de "connexion" à "système". Ensuite, les doublons ont réapparu comme par magie et j'ai pu les supprimer, puis j'ai fait glisser les certificats pour les "connecter".

0
Peter

C'est très facile, exportez le bon certificat sur votre bureau. Supprimer ce certificat dans le trousseau. Essayez de construire la source avec un message d'erreur (ne pas avoir de certificat ..), puis réimportez le certificat. => Succès!

0
Giang