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

103

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

Alors je vais sur mon trousseau et je le supprime. Mais j'obtiens cette erreur chaque fois que je redémarre Xcode 4 et qu'une application ajoute l'ancien certificat expiré dans le trousseau. Des idées pourquoi et quelle application?

Mugunth
la source
duplication possible d'un problème de certificat expiré Xcode
zoul

Réponses:

99

J'ai juste eu le même problème. Cela a été corrigé. Il est venu après que j'ai soumis une application et installé quelques certificats pour signer l'application.

Solution rapide: ouvrez ACCÈS KEYCHAIN> cliquez sur MES CERTIFICATS> vous y verrez probablement iPhone Developer:. Vous le verrez probablement DEUX FOIS! Sélectionnez celui avec la date d'expiration la plus ancienne, cliquez avec le bouton droit et sélectionnez SUPPRIMER.

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

Bon codage.

Louie
la source
27
Un pas de plus! Vous devez ouvrir l'Organisateur dans XCode et actualiser vos profils d'approvisionnement après avoir supprimé le certificat en double.
Meekohi
@Meekohi qu'entendez-vous par «actualiser» mes profils d'approvisionnement? Merci!
abw333
7
La relance de Xcode avait résolu le même problème pour moi après avoir supprimé l'ancien certificat.
Maxim Mikheev
Sur Xcode 4 (j'ai 4.4.1), j'ai dû supprimer TOUS les profils d'approvisionnement associés à l'ancien certificat. Ensuite, j'ai redémarré Xcode et l'ancien certificat s'est arrêté (par magie) d'apparaître sur le trousseau.
Roberto
3
A travaillé pour moi avec un ajout (j'utilise Xcode 4.6.3). J'ai supprimé les certificats expirés (ou le plus tôt pour expirer), puis redémarré Xcode et j'avais toujours le problème - les anciens certificats réapparaissaient d'une manière ou d'une autre dans KeyChain Access. J'ai donc redémarré Xcode mais avant de sélectionner mon projet à ouvrir, je suis retourné à KeyChain Access et l'ancien certificat était à nouveau là, alors je l'ai supprimé. Ensuite, j'ai ouvert mon projet (dans le Xcode déjà en cours d'exécution) et tout allait bien - j'ai pu reconstruire.
Ed Sinek
71

Je pense avoir compris pourquoi la simple suppression ne fonctionne pas. Étant donné que le certificat de développement est toujours stocké dans le profil de fourniture, lorsque je ferme / rouvre le Xcode après avoir supprimé le certificat dans Keychain, j'ai vu l'ancien certificat revenir. Alors je le supprime à nouveau. Ça a marché.

La simple suppression du 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, gardez-le ouvert.
  3. Lancez Xcode maintenant.
  4. Vérifiez que le certificat dont Xcode se plaignait sera de nouveau ajouté dans le trousseau au lancement depuis son cache.
  5. Vas y et supprime le.
  6. Compilez et bon codage.
Mobilewits
la source
3
J'ai essayé toutes les solutions ci-dessus, et celle-ci a fait l'affaire. Il semble qu'il existe plusieurs causes / solutions.
Nathan Hangen
+1: Je peux confirmer que XCode garde effectivement un "cache" des certificats et les ajoute à son lancement - c'est terrible que cela fonctionne de cette façon! Cela cause tellement de problèmes! Honte à vous Apple, cela a causé des heures de temps perdu à cause de la lutte contre cela!
JRG-Developer
10

Je viens de passer pas mal de temps à me débattre avec ce même problème. Après toutes les tentatives pour le corriger, j'ai finalement réalisé qu'il s'agissait d'un bogue dans Xcode. Ce message m'a donné un indice pour résoudre ce problème: les certificats réapparaissent comme par magie dans votre trousseau

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

  • Déplacez la clé privée associée vers le trousseau de connexion
  • Redémarré Xcode et remarqué que la clé privée était maintenant affichée comme associée (confirme à quoi elle servait)
  • Supprimer le certificat et la clé privée
  • Redémarrez Xcode et pouf! Il a arrêté d'ajouter mon ancien certificat

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

Bonne chance!

Sean Aitken
la source
la suppression de la clé privée a fonctionné pour moi aussi - dernière mise à jour de xcode d'octobre 2012 mountain lion
ina
4

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

Je pense que cette question répond à cette situation: les collisions CodeSign entre Developer et Enterprise Distribution

Josh Metcalfe
la source
3

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

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

  2. supprimez tous les profils de provisionnement liés à votre compte de xcode: organisateur: appareil: Bibliothèque: profils de provisionnement. QUITTER xcode

  3. révoquez votre certificat, régénérez-le et téléchargez-le sur votre machine de construction

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

  5. Ensuite, 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: organisateur: appareil: Bibliothèque: profils d'approvisionnement

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

  9. faire la construction.

ccs
la source
3

La réponse est ici

supprimez tous mes anciens profils d'approvisionnement à l'aide de l'ancien certificat avec l'organisateur, puis quittez XCode, supprimez l'ancien certificat du trousseau et redémarrez XCode.

semble que le xcode conservera les certificats lorsque vous avez des références à dans les profils d'approvisionnement

ouaisdixon
la source
1

J'avais des problèmes avec les certificats de zombies qui étaient repeuplés dans mon trousseau et l'identité du certificat apparaissant deux fois. La simple suppression du certificat en double n'a pas fonctionné.

Dans Xcode, quand je regarde ma signature de code dans la cible, je me souviens que j'avais un profil de distribution différent dans les versions "Ad Hoc" que dans les versions "Release".

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

Xcode s'accrochait au certificat pour ces deux profils, et Xcode provoquait donc les certificats en double ... parce que j'ai oublié de mettre à jour mes profils correctement.

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.

Assurez-vous de mettre à jour tous vos profils d'approvisionnement avec le nouveau certificat, sinon Xcode essaiera de mettre le certificat pour LES DEUX profils dans le trousseau ... provoquant l'erreur de duplication!

karlbecker_com
la source
1

J'ai eu ce problème et j'ai lu toutes les informations à ce sujet, j'ai finalement trouvé la solution par moi-même. Ce que les gens n'ont pas mentionné, c'est qu'AVANT de nettoyer les certificats dans l'organiseur Xcode et AVANT de nettoyer les clés expirées dans votre trousseau, vous devez vous assurer que vous n'avez pas de certificats expirés dans le portail de provisionnement . Si vous avez même un certificat expiré pour une ancienne application qui utilisait l'ancien certificat de développeur, Xcode le tirera dans son organisateur avec la première version et à partir de là, il ira à votre trousseau et provoquera un doublon.

Segev
la source
1

Dans mon cas, le "cache" que Xcode recherchait était un appareil iOS connecté. Pour déterminer si c'est le problème pour vous:

  1. Déconnectez tous les appareils iOS
  2. Supprimer le certificat et la clé privée incriminés de l'accès au trousseau
  3. Redémarrez Xcode
  4. Vérifier l'accès au trousseau: dans mon cas, le doublon n'a PAS été recréé à ce stade
  5. Reconnectez l'appareil iOS
  6. Redémarrez Xcode à nouveau
  7. Vérifier l'accès au trousseau: dans mon cas, le doublon a été recréé à ce stade

Si c'est la cause principale pour vous, vous pouvez la contourner en vous assurant de déconnecter les appareils iOS avant de démarrer Xcode.

Simon Whitaker
la source
0

La simple suppression du certificat redondant n'a pas fonctionné pour moi. Il semble que chaque fois que xcodebuild est appelé, il "recrée" le certificat dans le trousseau à partir d'un cache quelque part ... même problème qu'avi j'ai créé un hack / correctif pour cela, j'ai essayé de trouver où le fichier était mis en cache et effacez-le, mais n'a pas eu de chance. En fin de compte, ce qui a fonctionné pour moi (un peu de hack, mais bon, que pouvez-vous faire d'autre), c'était de déterminer quel était le numéro de certificat et de le supprimer manuellement du trousseau peu de temps après l'appel de xcodebuild. Tout d'abord, allez dans votre répertoire / usr / bin / (ou dans tout autre répertoire contenant votre fichier xcodebuild, essayez which xcodebuild) et exécutez la commande suivante:

sudo mv xcodebuild xcodebuild_actual

Ensuite, créez un fichier en utilisant votre éditeur préféré (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 avoir accès à exécuter 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 et exécuter la commande de construction, et regarder comment le certificat de zombie incriminé est ressuscité, puis sommairement fusillé avant qu'il ne devienne un problème de signature de code. Espérons qu'Apple proposera une véritable solution à ce problème.

BadPirate
la source
0

Dans mon cas, la suppression des certificats n'a pas fonctionné. XCode 4 semble les mettre en cache ou les restaurer. L'astuce 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 'login' vers 'system'. Ensuite, les doublons ont réapparu comme par magie et j'ai pu les supprimer, puis j'ai fait glisser les certificats vers `` connexion ''

Peter
la source
0

C'est très simple, exportez le bon certificat sur votre bureau. Supprimez ce certificat dans le trousseau. Essayez de créer une source avec un message d'erreur (sans certificat.) Puis importez à nouveau le certificat. => Succès!

Giang
la source
0

Je viens de supprimer l'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. Vérifiez maintenant 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.

swathy valluri
la source
0

J'ai été confronté au même problème une fois. Et je l'ai résolu en supprimant le profil d'approvisionnement inutilisé de l'onglet Organisateur dans xcode. En fait, le trousseau obtiendra ce certificat à partir de ce profil d'approvisionnement qui est soit un certificat expiré, soit la construction par certificat révoqué.

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

Voici la capture d'écran,

entrez la description de l'image ici

Et n'oubliez pas de supprimer le certificat supplémentaire du trousseau, mais après cela, ce certificat n'apparaît plus.

Dilip
la source