2014-05-08 4 views
16

Beim Versuch, ein iOS-Projekt (in XCode) zu erstellen, müssen die öffentlichen und privaten Schlüssel meines Kollegen für die Codesignierung importiert werden Identität, aber ich bin nicht in der Lage, dies zu tun, weil ich einen Fehler in Schlüsselbund bekommen, die sagtCode-signierende öffentliche oder private Schlüssel können nicht mit Keychain-Zugriff importiert werden (Mac OS X Mavericks)

DETAILS „ein Fehler ist aufgetreten kann nicht ein Element importieren/der Inhalt dieses Artikels nicht abgerufen werden kann..“:

Ich habe zwei Schlüssel vom Computer meines Kollegen, exportierte sie aus seinem Schlüsselbund als zwei Dateien:

Roomer Inc.p12 (das private Ke y)

Roomer Inc.pem (der öffentliche Schlüssel)

Als er diese exportiert, verließ er das Kennwort leer (Obwohl wir auch mit einem Passwort von „Test“ versucht und bekam die gleichen Ergebnisse).

Wenn ich einen Doppelklick auf Roomer Inc.p12 (für den privaten Schlüssel), öffnet sie in Schlüsselbund und promts mir den Schlüsselbund zu wählen („Login“ ist standardmäßig ausgewählt)

ich auf „Hinzufügen“ und dann für das Passwort an den Schlüsselbund ich bin aufgefordert (die ich leer lassen)

als nächstes habe ich immer diese Meldung in Schlüsselbund sehen:

screenshot of error

Doch trotz dieser Meldung erscheint, wenn ich auf OK, ich s ee einen neuen privaten Schlüsseleintrag für "Roomer Inc". Beachten Sie, dass dieser Eintrag ein privater Schlüssel in der "Login" -Schlüsselkette ist, wie ich erwarten würde, aber kein Ablaufdatum hat (sollte es?)

Als nächstes, für die Roomer Inc.pem-Datei (der öffentliche Schlüssel) bin ich gefragt, um den Schlüsselbund ("Login") zu wählen, und ich klicke auf Hinzufügen

Dann bekomme ich auch die "Ein Fehler ist aufgetreten. Kann ein Element nicht importieren./Der Inhalt dieses Artikels kann nicht abgerufen werden" Nachricht für die Öffentlichkeit Schlüssel auch. In diesem Fall sehe ich jedoch (im Gegensatz zum privaten Schlüssel) keinen Eintrag, der dem entspricht, was ich gerade hinzugefügt habe.

So scheint es, dass der private Schlüsseleintrag OK sein kann oder nicht (ich habe keine Möglichkeit zu überprüfen), und der öffentliche Schlüsseleintrag für Roomer kann nicht ohne diese Fehlermeldung in dem Schlüsselbund installiert werden. Bitte beachten Sie, dass ich auch versucht, den Sicherheitsimportbefehl mit dem öffentlichen Schlüssel zu importieren:

$ security Import Roomer \ Inc.pem -f pkcs12 ~/Library/Keychains/login.keychain

1 Schlüssel importiert.

Wenn ich dies tue, obwohl der Befehl "1 Schlüssel importiert" zurückgibt, sehe ich keinen öffentlichen Schlüssel für "Roomer Inc" in meinem Keychain Access-Fenster (Ich habe Keychain Access geschlossen und wieder geöffnet).

Wie auch immer, wir haben festgestellt, dass dies unser Blocker ist. (Das Symptom ist natürlich, dass das XCode-Projekt nicht für das AdHoc-Bereitstellungsprofil erstellt wird, das mit TestFlight verwendet werden soll). Ich habe die zusätzlichen Schritte in Bezug auf die XCode-Erstellung und TestFlight-Einrichtung weggelassen, da wir der Meinung sind, dass das Kernproblem mit dem Import der Schlüssel, wie oben erläutert, zu tun hat.

Antwort

23

Wir haben unser Problem herausgefunden, und ich schreibe hier meine Antwort, damit andere es hilfreich finden.

Das Problem ist wirklich ein UX-Problem mit Keychain Access. Lassen Sie mich zurückgehen und einen kleinen Zusammenhang geben: Wenn Sie ein Distributionszertifikat mit Apple erstellen, erstellen Sie es basierend auf einem PRIVATE KEY und App-basierten Berechtigungen.

In Keychain Access wird das Verteilungszertifikat als untergeordnetes Element unter dem Namen des privaten Schlüssels aufgeführt, aus dem es erstellt wurde. Hier ist der Haken: Wenn Sie das Suchfeld im Keychain-Zugriff verwenden (in unserem Fall haben wir "Roomer" eingegeben, weil das der Name unseres Distributionszertifikats ist), sucht es nicht nach einem Zertifikat mit diesem Namen ein Zertifikat, das an einen privaten Schlüssel für diesen Namen angehängt ist.

Also hatte mein Kollege ein Verteilungszertifikat basierend auf einem privaten Schlüssel namens "Jorge Davila" (sein Name) erstellt, obwohl das Verteilungszertifikat "iPhone Distribution: Roomer Inc." genannt wurde.

Als er in Keychain Access nach "Roomer" suchte, wurde in den Suchergebnissen NICHT der richtige angezeigt, da der Schlüssel, aus dem dieses Zertifikat erstellt wurde, "Jorge Davila" und nicht "Roomer" genannt wurde. Er exportierte also das falsche Zertifikat und merkte es nicht, weil es andere (einige abgelaufen) mit diesem Namen gab.

Hier ist, wie die richtige aussieht:

Dies ist ein relativ nuanciert Problem mit dem UX von Schlüsselbund und der Tatsache, dass das Suchwerkzeug Sie die Ergebnisse nicht geben Sie es erwarten. Ich schreibe diese Antwort in der Hoffnung, dass andere es nützlich finden.