Ich habe versucht, dieses Problem zu beheben, das für mich während der ganzen letzten Woche ein Albtraum war, und habe es am Ende der langen Anstrengung behoben. Es war keine alltägliche Lösung.
Brauchst du wirklich diesen Artikel zur Behebung?
Vielleicht.
Denn während der Untersuchung habe ich zu viele Foren (auch chinesische. aber nicht lesen, nur schauen :)), Artikel, StackOverflow-Einträge usw. gelesen, aber keiner von ihnen konnte mir helfen. Daher möchte ich eine Fixes-Compilation für dieses Problem erstellen.
Vorab kann man mein Szenario im Folgenden finden.
Ich habe eine Cordova-Anwendung und generiere einen Build über Cordova CLI. Aber im Allgemeinen ist das nicht anders als der Build der nativen ios-Anwendung. Eigentlich hat es bis zu den MacOS- und XCode-Updates korrekt funktioniert.
Nach den Mojave- und XCode 10-Updates kann ich keinen Build über Jenkins generieren. Im folgenden Fehler wurde kontinuierlich angezeigt. Dies ist das Schlüsselbund und Zertifikat abhängige Problem genau.
..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
Wir können zu Lösungen beginnen. Sie sollten wissen, dass die allgemeinen Lösungen am Anfang der Liste stehen.
Gemeinsame Lösung 1: Gültiges Zertifikat prüfen
Sie sollten prüfen, ob der Schlüsselbund dem gültigen Zertifikat korrekt hinzugefügt wurde. Dies können Sie über die App Keychain Access oder mit folgendem Befehl über das Terminal tun.
security find-identity -vp codesigning
Ihr Zertifikat muss im Ergebnis enthalten sein. Wenn nicht, entfernen Sie bitte Ihr Zertifikat und fügen Sie es erneut zum Schlüsselbund hinzu.
Gängige Lösung 2: Schlüsselbund sperren und entsperren
Eine weitere gängige Lösung hier. Führen Sie folgende Befehle im Terminal aus. Fügen Sie Ihren eigenen Schlüsselbundnamen und Ihr Passwort hinzu.
security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain
In diesem Fall ist der Schlüsselbundname „temp“ und das Passwort „p@ssw0rd“. Sie können auch den vollständigen Pfad des Schlüsselbundes im folgenden Befehl finden und ihn anstelle des Schlüsselbundnamens (temp) verwenden.
security list-keychains
Gemeinsame Lösung 3: Neustart der Maschine
Es kann als lustig angesehen werden, aber diese Lösung wird auf den meisten Websites hoch bewertet. Wenn Sie das neue Zertifikat hinzufügen, kann ein Neustart des Rechners sinnvoll sein. Sie können den folgenden Befehl zum Neustart verwenden.
sudo reboot
Gemeinsame Lösung 4: Schlüsselbundpasswort auf Partitionsliste setzen
Diese Lösung behebt Probleme mit der Passwortabfrage. In einigen Fällen wartet Codesign auf das Schlüsselbundkennwort in der Eingabeaufforderung, aber der Fernzugriff verfügt nicht über diese Funktion. Daher wird der Codesignierungsprozess in der Regel nicht erfolgreich abgeschlossen.
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db
Sie können den vollständigen Pfad des Schlüsselbundes mit der Methode finden, die in „Allgemeine Lösung 1“ beschrieben wurde.
Meine Falllösung: Überprüfen und Entfernen von doppelten privaten Schlüsseln
In meinem Fall hatte der temporäre Schlüsselbund ein gültiges Zertifikat und seinen privaten Schlüssel. Ich weiß nicht, warum, aber der Schlüsselbund „System“ hatte einen privaten Schlüssel, der sich auf mein gültiges Zertifikat bezog. Ich habe alle privaten Schlüssel in allen Schlüsselbunden überprüft und alle doppelten Schlüssel aus irrelevanten Schlüsselbunden entfernt. Außerdem habe ich alle abgelaufenen Zertifikate entfernt, falls vorhanden.
Ich vermute, dass diese Duplikate aufgrund des Mojave-Updates aufgetaucht sind, aber ich weiß wirklich nicht, warum.
Abschluss 🙂