Yritin korjata tämän ongelman, joka oli minulle painajainen koko viime viikon ajan, ja korjasin sen pitkän ponnistelun päätteeksi. Se ei ollut yleinen ratkaisu.
Tarvitsetko todella tätä artikkelia korjaamiseen?
Mahdollisesti.
Koska tutkinnan aikana olen lukenut liian monia foorumeita (myös kiinalaisia. mutta en lukenut, vain katsonut :)), artikkeleita, StackOverflow-kirjoituksia jne. mutta mikään niistä ei voinut auttaa minua. Siksi haluan luoda korjauskokoonpanon tähän ongelmaan.
Ennen aloitusta löydät skenaarioni seuraavasta.
Minulla on Cordova-sovellus ja luon buildin Cordova CLI:n kautta. Mutta yleisesti ottaen tämä ei eroa natiivin ios-sovelluksen buildista. Itse asiassa se toimi oikein MacOS- ja XCode-päivityksiin asti.
Mojave- ja XCode 10 -päivitysten jälkeen en voi luoda buildia Jenkinsillä. Seuraavassa virhe ilmestyi jatkuvasti. Tämä on avaimenperästä ja sertifikaatista riippuvainen ongelma nimenomaan.
..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
Voidaan alkaa ratkaisuja. Kannattaa tietää, että nuo yleiset ratkaisut ovat listan alussa.
Yleinen ratkaisu 1: Tarkista voimassaoleva varmenne
Tulee tarkistaa, että avainketjuun on lisätty voimassaoleva varmenne oikein. Voit tehdä sen Keychain Access -sovelluksella tai seuraavalla komennolla terminaalin kautta.
security find-identity -vp codesigning
Varmenteen on oltava tuloksessa. Jos ei, poista ja lisää varmenne avaimenperään uudelleen.
Yleinen ratkaisu 2: Lukitse ja avaa avaimenperä
Toinen yleisin ratkaisu tässä. Suorita seuraavat komennot terminaalissa. Sinun tulee lisätä oma avainketjun nimi ja salasana.
security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain
Tässä tapauksessa avainketjun nimi on ”temp” ja sen salasana on ”p@ssw0rd”. Myös avainketjun koko polku löytyy seuraavasta komennosta ja sitä voidaan käyttää avainketjun nimen (temp) sijasta.
security list-keychains
Yleinen ratkaisu 3: Käynnistä kone uudelleen
Voidaan pitää hassuna, mutta tämä ratkaisu korkea upvoted useimmilla sivustoilla. Jos lisäät uuden varmenteen, koneen uudelleenkäynnistämisestä voi olla hyötyä. Voit käyttää seuraavaa komentoa koneen uudelleenkäynnistämiseen.
sudo reboot
Yleinen ratkaisu 4: Aseta avaimenperän salasana osioluetteloon
Tämä ratkaisu korjaa salasanakehotusongelmat. Joissakin tapauksissa codesign odottaa avaimenperän salasanaa kehotteesta, mutta etäkäytössä ei ole tätä ominaisuutta. Siksi koodin allekirjoitusprosessi on yleensä päättynyt epäonnistuneesti.
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db
Voit löytää avainketjun koko polun menetelmällä, joka kuvattiin kohdassa ”Yleinen ratkaisu 1”.
Minun tapauksen ratkaisu: Tarkista ja poista päällekkäiset yksityiset avaimet
Tapauksessani temp-avaimenperässä oli voimassa oleva varmenne ja sen yksityinen avain. En tiedä miksi, mutta ”Järjestelmän” avainketjussa oli yksityinen avain, joka liittyi voimassa olevaan varmenteeseeni. Olen tarkistanut kaikki yksityiset avaimet kaikista avainketjuista ja poistanut kaikki päällekkäiset avaimet merkityksettömistä avainketjuista.