Como corrigir o erro de assinatura do código de aplicação iOS?

Tentei corrigir este problema que foi um pesadelo para mim durante toda a última semana e corrigi-o no final do longo esforço. Não era uma solução comum.

Você realmente precisa deste artigo para consertar?
Maybe.

Porque durante a investigação, eu li muitos fóruns (inclua os chineses. mas não li, apenas olhe :)), artigos, entradas do StackOverflow etc. mas nenhum deles poderia me ajudar. Portanto eu quero criar uma compilação de correções para este número.

Antes do início, você pode encontrar meu cenário no seguinte.

Eu tenho uma aplicação de Cordova e gero uma compilação via Cordova CLI. Mas geralmente, isto não é diferente do build da aplicação nativa ios. Na verdade, estava funcionando corretamente até as atualizações do MacOS e XCode.

Após as atualizações do Mojave e XCode 10, não consigo gerar um build no Jenkins. No erro a seguir foi aparecendo continuamente. Este é exatamente o chaveiro e a emissão de certificados.

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

Podemos começar a soluções. Você deve saber que essas soluções comuns estão no início da lista.

Solução Comum 1: Verifique o Certificado Válido

Você deve verificar se o chaveiro do certificado válido foi adicionado corretamente. Pode fazê-lo através da aplicação Keychain Access ou do seguinte comando via terminal.

security find-identity -vp codesigning

O seu certificado deve estar no resultado. Caso contrário, remova e adicione novamente o seu certificado ao keychain.

Solução comum 2: Lock and Unlock Keychain

Outra solução mais comum aqui. Execute os comandos seguintes no terminal. Deve adicionar o seu próprio nome de chaveiro e password.

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

Neste caso, utilizando o nome de chaveiro é “temp” e a sua password é “p@ssw0rd”. Também pode encontrar o caminho completo do chaveiro no seguinte comando e pode ser usado em vez do nome do chaveiro (temp).

security list-keychains

Solução Comum 3: Reiniciar Máquina

Pode ser visto como engraçado, mas esta solução é muito evocada na maioria dos websites. Se você adicionar o novo certificado, reiniciar a máquina pode ser útil. Você pode usar o seguinte comando para reiniciar.

sudo reboot

Solução Comum 4: Definir a senha do chaveiro para a Lista de Partições

Esta solução está corrigindo os problemas de solicitação de senha. Em alguns casos, o codesign aguarda a senha do keychain a partir do prompt, mas o acesso remoto não tem esse recurso. Portanto, geralmente, o processo de assinatura de código concluído sem sucesso.

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

Você pode encontrar o caminho completo do chaveiro com o método que foi descrito em “Solução Comum 1”.

Solução do Meu Caso: Check and Remove Duplicated Private Keys

No meu caso, o chaveiro temporário tinha um certificado válido e a sua chave privada. Não sei porquê, mas o chaveiro “System” tinha uma chave privada que estava relacionada com o meu certificado válido. Verifiquei todas as chaves privadas em todos os chaveiros e removi todas as chaves duplicadas de chaveiros irrelevantes. Além disso, removi todos os certificados expirados, se é que existiu.

Acho que estas duplicações apareceram devido à actualização da Mojave mas na verdade não sei porque.

Conclusion 🙂