Codesign-Fehler: Die Zertifikatidentität wird zweimal angezeigt


103

CodeSign-Fehler: Die Zertifikatidentität 'iPhone Developer: XXXX (12345678)' wird mehrmals im Schlüsselbund angezeigt. Für das Codesign-Tool muss nur eines vorhanden sein.

Also gehe ich zu meinem Schlüsselbund und lösche ihn. Ich erhalte diesen Fehler jedoch jedes Mal, wenn ich Xcode 4 neu starte und eine App das abgelaufene alte Zertifikat wieder in den Schlüsselbund einfügt. Irgendwelche Ideen warum und welche App?


Mögliches Duplikat des Xcode abgelaufenen Zertifikatproblems
Zoul

Antworten:


99

Ich hatte gerade das gleiche Problem. Es wurde behoben. Es kam, nachdem ich eine App eingereicht und ein paar Zertifikate installiert hatte, um die App zu signieren.

Schnellkorrektur: Öffnen Sie KEYCHAIN ​​ACCESS> klicken Sie auf MEINE ZERTIFIKATE> dort sehen Sie wahrscheinlich iPhone Developer :. Sie werden es wahrscheinlich ZWEIMAL sehen! Wählen Sie das mit dem frühesten Ablaufdatum aus, klicken Sie mit der rechten Maustaste und wählen Sie LÖSCHEN.

Starten Sie Xcode neu, wenn Sie dies nicht getan haben. Funktioniert jetzt. :) :)

Viel Spaß beim Codieren.


27
Noch ein Schritt! Sie müssen den Organizer in XCode öffnen und Ihre Bereitstellungsprofile aktualisieren, nachdem Sie das doppelte Zertifikat gelöscht haben.
Meekohi

@ Meekohi Was meinst du mit "Aktualisieren" meiner Bereitstellungsprofile? Vielen Dank!
abw333

7
Das Neustarten von Xcode hatte das gleiche Problem für mich gelöst, nachdem ich das alte Zertifikat gelöscht hatte.
Maxim Mikheev

Auf Xcode 4 (ich habe 4.4.1) musste ich ALLE Bereitstellungsprofile löschen, die dem alten Zertifikat zugeordnet sind. Dann habe ich Xcode neu gestartet und das alte Zertifikat wurde (auf magische Weise) nicht mehr im Schlüsselbund angezeigt.
Roberto

3
Arbeitete für mich mit einem Zusatz (ich verwende Xcode 4.6.3). Ich habe die abgelaufenen (oder am schnellsten ablaufenden) Zertifikate gelöscht, dann Xcode neu gestartet und hatte immer noch das Problem - die alten Zertifikate wurden in KeyChain Access irgendwie wieder angezeigt. Also habe ich Xcode neu gestartet, aber bevor ich mein Projekt zum Öffnen ausgewählt habe, bin ich zu KeyChain Access zurückgekehrt und das alte Zertifikat war wieder da, also habe ich es gelöscht. Dann öffnete ich mein Projekt (im bereits laufenden Xcode) und alles war gut - ich konnte wieder bauen.
Ed Sinek

71

Ich glaube, ich habe herausgefunden, warum das einfache Löschen nicht funktioniert. Da das Entwicklungszertifikat immer noch im Bereitstellungsprofil gespeichert ist, wurde beim Schließen / erneuten Öffnen des Xcodes nach dem Löschen des Zertifikats im Schlüsselbund das alte Zertifikat zurückgegeben. Also lösche ich es wieder. Es funktionierte.

Das einfache Löschen der Profillösung hat bei mir nicht funktioniert.

Lösung, die in meinem Fall funktioniert hat:

  1. Beenden Sie Xcode
  2. Wenn der Schlüsselbundzugriff geöffnet ist, lassen Sie ihn offen.
  3. Starten Sie jetzt Xcode.
  4. Stellen Sie sicher, dass das Zertifikat, über das sich Xcode beschwert hat, beim Start aus dem Cache erneut in den Schlüsselbund aufgenommen wird.
  5. Fahren Sie fort und löschen Sie es.
  6. Kompilieren und fröhliche Codierung.

3
Ich habe alle oben genannten Lösungen ausprobiert, und diese hat es geschafft. Es scheint mehrere Ursachen / Lösungen zu geben.
Nathan Hangen

+1: Ich kann bestätigen, dass XCode tatsächlich einen "Cache" der Zertifikate speichert und sie beim Start hinzufügt - es ist schrecklich, dass es so funktioniert! Es verursacht so viele Probleme! Schade um dich, Apple, das hat Stunden verlorener Zeit verursacht, weil du damit gekämpft hast!
JRG-Entwickler

10

Ich habe gerade ziemlich viel Zeit damit verbracht, mich mit demselben Problem zu beschäftigen. Nach all den Versuchen, das Problem zu beheben, wurde mir endlich klar, dass es sich um einen Fehler in Xcode handelt. Dieser Beitrag gab mir einen Hinweis, um es zu beheben: Zertifikate erscheinen auf magische Weise wieder in Ihrem Schlüsselbund

In meinem Fall befand sich der passende private Schlüssel im Systemschlüsselbund und hatte nur meinen Namen (schwer zu sagen, dass er für die Bereitstellung bestimmt war). Ich musste:

  • Verschieben Sie den zugehörigen privaten Schlüssel in den Schlüsselbund "Anmelden"
  • Xcode neu gestartet und festgestellt, dass der private Schlüssel jetzt als zugeordnet angezeigt wird (bestätigt, wofür er gedacht war)
  • Löschen Sie das Zertifikat und den privaten Schlüssel
  • Starten Sie Xcode und Poof neu! Es hat aufgehört, mein altes Zertifikat hinzuzufügen

Eine interessante Beobachtung ist, dass beim Löschen des Zertifikats der zugehörige private Schlüssel nicht gelöscht wird. Visuell wird der private Schlüssel unter dem Zertifikat angezeigt. Lass dich nicht täuschen.

Viel Glück!


Auch das Löschen der private Schlüssel für mich gearbeitet - neueste Xcode Oktober 2012 Update Berglöwen
ina



3

Ich habe das gleiche Problem mit xcode45-DP1. das funktioniert bei mir:

  1. Entfernen Sie alle Zertifikate, die sich auf Ihr Konto beziehen, aus dem Schlüsselbund. Schlüsselbund beenden

  2. Entfernen Sie alle Bereitstellungsprofile, die sich auf Ihr Konto beziehen, aus xcode: organisator: device: Library: Bereitstellungsprofile. Xcode BEENDEN

  3. Widerrufen Sie Ihr Zertifikat, generieren Sie es neu und laden Sie es auf Ihren Build-Computer herunter

  4. Klicken Sie vor dem Herunterladen des Bereitstellungsprofils neben der Schaltfläche zum Herunterladen auf Bearbeiten , um sicherzustellen, dass Ihr Name ausgewählt ist.

  5. Laden Sie dann das Bereitstellungsprofil herunter

  6. Doppelklicken Sie auf das Zertifikat, um es am Schlüsselbund zu installieren

  7. Ziehen Sie das Bereitstellungsprofil auf xcode: organisator: device: Library: Bereitstellungsprofile

  8. Klicken Sie im Xcode nicht auf die Schaltfläche Aktualisieren.

  9. mach den Build.


3

Antwort ist hier

Entfernen Sie alle meine alten Bereitstellungsprofile mithilfe des alten Zertifikats mit Organizer. Beenden Sie dann XCode, entfernen Sie das alte Zertifikat aus dem Schlüsselbund und starten Sie XCode neu.

Es sieht so aus, als würde der xcode Zertifikate behalten, wenn Sie Verweise auf die in den Bereitstellungsprofilen haben


1

Ich hatte Probleme damit, dass Zombie-Zertifikate wieder in meinen Schlüsselbund eingetragen wurden und die Zertifikatsidentität zweimal angezeigt wurde. Das einfache Löschen des doppelten Zertifikats hat nicht funktioniert.

Als ich in Xcode meine Codesignatur im Ziel betrachtete, fiel mir ein, dass ich in "Ad-hoc" -Erstellungen ein anderes Verteilungsprofil hatte als in "Release" -Erstellungen.

Als ich ein neues Zertifikat erstellt habe, habe ich nur ein neues Profil für Ad-hoc-Builds heruntergeladen und nicht für Release-Builds.

Xcode hing für beide Profile am Zertifikat, und Xcode verursachte daher die doppelten Zertifikate ... weil ich vergessen hatte, meine Profile ordnungsgemäß zu aktualisieren.

Stellen Sie sicher, dass Sie ALLE Ihre Bereitstellungsprofile auf das neue Zertifikat aktualisieren und ALLE Profile gleichzeitig in Xcode ändern.

Aktualisieren Sie unbedingt alle Ihre Bereitstellungsprofile mit dem neuen Zertifikat. Andernfalls versucht Xcode, das Zertifikat für BEIDE Profile in den Schlüsselbund aufzunehmen. Dies führt zu einem doppelten Fehler!


1

Ich hatte dieses Problem und las jede Information darüber, schließlich habe ich die Lösung selbst gefunden. Was die Leute nicht erwähnt haben, ist, dass Sie VOR dem Bereinigen der Zertifikate in Xcode Organizer und VOR dem Bereinigen der abgelaufenen Schlüssel in Ihrem Schlüsselbund sicherstellen müssen, dass Sie keine abgelaufenen Zertifikate im Bereitstellungsportal haben . Wenn Sie sogar ein abgelaufenes Zertifikat für eine alte App haben, die das alte Entwicklerzertifikat verwendet hat, zieht Xcode dieses beim ersten Build in den Organizer. Von dort geht es zu Ihrem Schlüsselbund und verursacht ein Duplikat.


1

In meinem Fall war der "Cache", den Xcode betrachtete, ein angeschlossenes iOS-Gerät. So stellen Sie fest, ob dies das Problem für Sie ist:

  1. Trennen Sie alle iOS-Geräte
  2. Löschen Sie das fehlerhafte Zertifikat und den privaten Schlüssel aus dem Schlüsselbundzugriff
  3. Starten Sie Xcode neu
  4. Überprüfen Sie den Schlüsselbundzugriff: In meinem Fall wurde das Duplikat zu diesem Zeitpunkt NICHT neu erstellt
  5. Schließen Sie das iOS-Gerät erneut an
  6. Starten Sie Xcode erneut
  7. Überprüfen Sie den Schlüsselbundzugriff: In meinem Fall wurde das Duplikat zu diesem Zeitpunkt neu erstellt

Wenn dies die Hauptursache für Sie ist, können Sie dies umgehen, indem Sie sicherstellen, dass Sie die Verbindung zu iOS-Geräten trennen, bevor Sie Xcode starten.


0

Das einfache Löschen des redundanten Zertifikats hat bei mir nicht funktioniert. Es scheint, dass jedes Mal, wenn xcodebuild aufgerufen wird, das Zertifikat im Schlüsselbund aus einem Cache irgendwo "neu erstellt" wird ... dasselbe Problem wie bei avi. Ich habe einen Hack / Fix dafür erstellt und versucht herauszufinden, wo die Datei zwischengespeichert wurde und klar, hatte aber kein Glück. Am Ende hat es für mich funktioniert (ein bisschen wie ein Hack, aber hey, was können Sie sonst noch tun), herauszufinden, wie die Zertifikatsnummer lautet, und sie kurz nach dem Aufruf von xcodebuild manuell aus dem Schlüsselbund zu entfernen. Wechseln Sie zunächst in Ihr Verzeichnis / usr / bin / (oder in das Verzeichnis, in dem sich Ihre xcodebuild-Datei befindet, versuchen Sie es which xcodebuild) und führen Sie den folgenden Befehl aus:

sudo mv xcodebuild xcodebuild_actual

Erstellen Sie dann eine Datei mit Ihrem bevorzugten Editor (vergessen Sie nicht, sudo) mit dem folgenden Code:

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

Hinweis: Sie müssen Ihre sudoers-Datei ändern, um Zugriff auf die Ausführung dieses bestimmten Befehls zu erhalten, ohne ein Kennwort eingeben zu müssen.

Ersetzen Sie die Hex-Identität nach -Z oben durch die Hex-Identität des betreffenden Zombie-Zertifikats. Stellen Sie schließlich sicher, dass die xcodebuild-Datei ausführbar ist:

sudo chmod 755 xcodebuild 

Sie können jetzt Ihren Schlüsselbund öffnen, den Build-Befehl ausführen und beobachten, wie das fehlerhafte Zombie-Zertifikat wiederbelebt und dann zusammenfassend mit der Schrotflinte geschossen wird, bevor es zu einem Problem für die Codesignierung wird. Hoffentlich hat Apple eine echte Lösung dafür gefunden.


0

In meinem Fall hat das Löschen der Zertifikate nicht funktioniert. XCode 4 scheint sie zwischenzuspeichern oder wiederherzustellen. Der Trick, der schließlich für mich funktionierte, bestand darin, Schlüsselbund und Xcode laufen zu lassen. Ziehen Sie dann im Schlüsselbund meine 2 Zertifikate (dev + dist) von 'login' nach 'system'. Dann tauchten die Duplikate auf magische Weise wieder auf und ich konnte sie löschen. Dann zog ich die Zertifikate zurück zu 'Login'.


0

Exportieren Sie ganz einfach das richtige Zertifikat auf Ihren Desktop. Löschen Sie dieses Zertifikat im Schlüsselbund. Versuchen Sie, eine Quelle mit einer Fehlermeldung zu erstellen (haben Sie kein Zertifikat ..). Importieren Sie dann das Zertifikat erneut. => Erfolg!


0

Ich habe gerade einen der privaten Schlüssel in meinem Schlüsselbund für das Zertifikat gelöscht, das ich nicht mehr benötige.

Obwohl das Zertifikat erneut angezeigt wird, wird der private Schlüssel nicht erneut angezeigt. Suchen Sie nun nach gültigen Zertifikaten, und es wird nur ein Zertifikat angezeigt, und die anderen Zertifikate, deren privater Schlüssel gelöscht wurde, werden nicht mehr unter gültigen Zertifikaten angezeigt.

Ich denke, dies ist der einfachste Weg, um dieses Problem zu lösen.


0

Ich hatte einmal mit dem gleichen Problem zu tun. Und ich habe es gelöst, indem ich nicht verwendetes Bereitstellungsprofil von der Registerkarte "Organizer" in xcode entfernt habe. Tatsächlich erhält Keychain dieses Zertifikat von diesem Bereitstellungsprofil, bei dem es sich entweder um ein abgelaufenes Zertifikat oder um ein vom widerrufenen Zertifikat erstelltes Zertifikat handelt.

Sie müssen dieses Bereitstellungsprofil also nur von der Registerkarte "Organizer" löschen. Der Organizer befindet sich auf der rechten oberen Schaltfläche von xcode. Öffnen Sie ihn und entfernen Sie dann im Organizer die Bereitstellungsprofile, die Sie nicht verwenden.

Hier ist der Screenshot,

Geben Sie hier die Bildbeschreibung ein

Und vergessen Sie nicht, zusätzliches Zertifikat aus dem Schlüsselbund zu entfernen, aber danach wird dieses Zertifikat nicht mehr angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.