Hoe iOS Application Code Signing Error te repareren?

Ik probeerde dit probleem op te lossen dat een nachtmerrie voor me was gedurende de hele afgelopen week en heb het opgelost aan het eind van de lange inspanning. Het was geen gebruikelijke oplossing.

Heb je dit artikel echt nodig om het op te lossen?
Misschien.

Omdat tijdens het onderzoek, heb ik te veel forums gelezen (inclusief Chinese. maar niet gelezen, alleen gekeken :)), artikelen, StackOverflow items etc. maar geen van hen kon me helpen. Daarom wil ik een fixes compilatie voor dit probleem maken.

Voor de start, kunt u mijn scenario in het volgende vinden.

Ik heb een Cordova-applicatie en genereer een build via Cordova CLI. Maar in het algemeen, dit is niet anders dan de native ios applicatie te bouwen. Eigenlijk werkte het correct tot de MacOS en XCode updates.

Na de Mojave en XCode 10 updates, kan ik niet genereren van een build op de Jenkins. De volgende foutmelding verschijnt continu. Dit is precies het sleutelhanger en certificaat afhankelijke probleem.

..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

We kunnen beginnen om oplossingen. U moet weten dat die gemeenschappelijke oplossingen zijn aan het begin van de lijst.

Gemeenschappelijke oplossing 1: Controleer geldig certificaat

U moet controleren of de sleutelhanger om de geldige certificaat correct is toegevoegd. U kunt dit doen via de Keychain Access app of het volgende commando via terminal.

security find-identity -vp codesigning

Uw certificaat moet in het resultaat staan. Zo niet, verwijder dan uw certificaat en voeg het opnieuw toe aan keychain.

Gemeenschappelijke oplossing 2: Keychain vergrendelen en ontgrendelen

Een andere meest voorkomende oplossing in hier. Voer de volgende commando’s uit in de terminal. U moet uw eigen keychain naam en password.

security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain

In dit geval, met behulp van de keychain naam is “temp” en het wachtwoord is “p@ssw0rd”. Ook kunt u het volledige pad van de sleutelhanger in het volgende commando vinden en het kan worden gebruikt in plaats van de sleutelhanger naam (temp).

security list-keychains

Gemeenschappelijke oplossing 3: Herstart Machine

Het kan worden gezien als grappig, maar deze oplossing is hoog geupvoted op de meeste websites. Als u het nieuwe certificaat hebt toegevoegd, kan het nuttig zijn om de machine opnieuw op te starten. U kunt het volgende commando gebruiken om opnieuw op te starten.

sudo reboot

Gemeenschappelijke oplossing 4: Keychain wachtwoord instellen op partitielijst

Deze oplossing is het oplossen van wachtwoord prompt problemen. In sommige gevallen wacht codesign op het sleutelhangerwachtwoord van de prompt, maar toegang op afstand heeft deze functie niet. Daarom, in het algemeen, de code signing proces niet succesvol afgerond.

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db

U kunt vinden keychain volledige pad met de methode die werd beschreven in “Common Solution 1”.

Mijn geval oplossing: Controleer en verwijder dubbele prive sleutels

In mijn geval, temp keychain had een geldig certificaat en zijn prive sleutel. Ik weet niet waarom, maar “System” sleutelhanger had een private sleutel die gerelateerd was aan mijn geldige certificaat. Ik heb alle private sleutels in alle sleutelbossen gecontroleerd en alle dubbele sleutels uit irrelevante sleutelbossen verwijderd. Ook heb ik alle verlopen certificaten verwijderd als die er zijn.

Ik denk dat deze duplicaten zijn verschenen als gevolg van Mojave update, maar ik weet echt niet waarom.

Conclusie 🙂