Erro de Codesign: identidade do certificado aparecendo duas vezes


103

Erro do CodeSign: a identidade do certificado 'iPhone Developer: XXXX (12345678)' aparece mais de uma vez nas chaves. A ferramenta de codesign requer que haja apenas um.

Então eu vou para o meu chaveiro e excluo. Mas eu recebo esse erro sempre que reinicio o Xcode 4 e algum aplicativo está adicionando o certificado antigo expirado de volta às chaves. Alguma ideia de por que e qual aplicativo?


Respostas:


99

Eu simplesmente tive o mesmo problema. Foi consertado. Ele veio depois de enviar um aplicativo e instalar alguns certificados para assinar o aplicativo.

Correção rápida: Abra o acesso KEYCHAIN> clique em MEUS CERTIFICADOS> lá você provavelmente verá o desenvolvedor do iPhone:. Você provavelmente verá DUAS VEZES! Selecione aquele com a data de expiração mais antiga, clique com o botão direito e selecione EXCLUIR.

Reinicie o Xcode se ainda não o fez. Funciona agora. :)

Happy Coding.


27
Mais um passo! Você precisa abrir o Organizer no XCode e atualizar seus perfis de provisionamento após excluir o certificado duplicado.
Meekohi

@Meekohi, o que você quer dizer com 'atualizar' meus perfis de provisionamento? obrigado!
abw333

7
Reiniciar o Xcode resolveu o mesmo problema para mim depois que excluí o certificado antigo.
Maxim Mikheev,

No Xcode 4 (eu tenho 4.4.1), tive que excluir TODOS os perfis de provisionamento associados ao certificado antigo. Então eu reiniciei o Xcode e o certificado antigo parou (magicamente) de aparecer no Keychain.
Roberto

3
Funcionou para mim com uma adição (estou usando o Xcode 4.6.3). Excluí os certificados expirados (ou que deveriam expirar em breve), reiniciei o Xcode e ainda tinha o problema - os certificados antigos reapareceram no KeyChain Access. Então, reiniciei o Xcode, mas antes de selecionar meu projeto para abrir, voltei para o KeyChain Access e o certificado antigo estava lá novamente, então eu o apaguei. Então abri meu projeto (no Xcode já rodando) e tudo deu certo - consegui construir novamente.
Ed Sinek de

71

Acho que descobri por que a exclusão simples não está funcionando. Como o certificado dev ainda está armazenado no perfil de provisão, quando fecho / abro o Xcode novamente após excluir o certificado no Keychain, vi o certificado antigo voltar. Então, eu excluo novamente. Funcionou.

A solução simples de excluir o perfil não funcionou para mim.

Solução que funcionou no meu caso:

  1. Saia do Xcode
  2. Se o acesso às Chaves estiver aberto, mantenha-o aberto.
  3. Inicie o Xcode agora.
  4. Veja se o certificado do qual o Xcode estava reclamando será adicionado novamente ao keychain na inicialização a partir de seu cache.
  5. Vá em frente e exclua-o.
  6. Compile e codificação feliz.

3
Tentei todas as soluções acima e esta funcionou. Parece que existem várias causas / soluções.
Nathan Hangen

+1: Posso confirmar que o XCode realmente mantém um "cache" dos certificados e os adiciona em seu lançamento - é terrível que funcione dessa maneira! Isso causa tantos problemas! Que vergonha, Apple, isso causou horas de perda de tempo devido a lutar com isso!
JRG-Developer

10

Acabei de passar um bom tempo lutando com esse mesmo problema. Depois de todas as tentativas de consertá-lo, finalmente percebi que é um bug no Xcode. Esta postagem me deu uma pista para consertar: certificados magicamente reaparecendo em suas chaves

No meu caso, a chave privada correspondente estava nas chaves do sistema e tinha apenas meu nome (difícil dizer que era para provisionamento). Eu precisei:

  • Mova a chave privada associada para as chaves de 'login'
  • Reiniciei o Xcode e notei que a chave privada agora estava sendo exibida como associada (confirma para que era)
  • Exclua o certificado e a chave privada
  • Reinicie o Xcode e pronto! Parou de adicionar meu antigo certificado

Uma observação interessante é que quando você exclui o certificado, ele não exclui a chave privada associada. Visualmente, ele mostra a chave privada abaixo do certificado. Não se deixe enganar.

Boa sorte!


eliminar a chave privada trabalhou para mim também - mais recente xcode outubro 2012 atualização Mountain Lion
ina



3

Eu tenho o mesmo problema com xcode45-DP1. isso funciona para mim:

  1. remova todos os certificados relacionados à sua conta do keychain. Chaveiro QUIT

  2. remova todos os perfis de provisionamento relacionados à sua conta de xcode: organizer: device: Library: perfis de provisionamento. SAIR xcode

  3. revogar seu certificado e gerá-lo novamente e baixá-lo para sua máquina de construção

  4. antes de baixar o perfil de aprovisionamento, clique em Editar ao lado do botão de download para ter certeza de que seu nome está selecionado.

  5. Em seguida, baixe o perfil de provisionamento

  6. clique duas vezes no certificado para instalá-lo nas chaves

  7. arraste o perfil de aprovisionamento para xcode: organizador: dispositivo: Biblioteca: perfis de aprovisionamento

  8. não clique no botão atualizar do xcode.

  9. faça a construção.


3

A resposta está aqui

remova todos os meus perfis de provisionamento antigos usando o certificado antigo com o Organizer e saia do XCode, remova o certificado antigo do Keychain e reinicie o XCode.

parece que o xcode irá manter os certificados por perto quando você tiver referências ao nos perfis de provisionamento


1

Eu estava tendo problemas com certificados zumbis sendo preenchidos novamente em minhas chaves e a identidade do certificado aparecendo duas vezes. Simplesmente excluir o certificado duplicado não funcionou.

No Xcode, quando vejo minha assinatura de código no destino, lembrei que tinha um perfil de distribuição diferente em compilações "Ad Hoc" do que em compilações "Release".

Quando gerei um novo certificado, apenas baixei um novo perfil para compilações Ad Hoc, e não para compilações Release.

O Xcode estava pendurado no certificado para ambos os perfis e, portanto, o Xcode estava causando os certificados duplicados ... porque esqueci de atualizar meus perfis corretamente.

Certifique-se de atualizar TODOS os seus perfis de provisionamento para o novo certificado e alterar TODOS os perfis ao mesmo tempo no Xcode.

Certifique-se de atualizar todos os seus perfis de provisionamento com o novo certificado, caso contrário, o Xcode tentará colocar o certificado para AMBOS os perfis no keychain ... causando o erro duplicado!


1

Tive esse problema e li todas as informações sobre ele, finalmente encontrei a solução sozinho. O que as pessoas deixaram de mencionar é que ANTES de limpar os certificados no organizador Xcode e ANTES de limpar as chaves expiradas em seu chaveiro, você precisa se certificar de que não possui nenhum certificado expirado no Portal de Provisionamento . Se você tiver pelo menos um certificado expirado para um aplicativo antigo que usava o antigo certificado de desenvolvedor, o Xcode o puxará para seu organizador com a primeira compilação e de lá irá para seu chaveiro e causará uma duplicata.


1

No meu caso, o "cache" que o Xcode estava procurando era um dispositivo iOS conectado. Para determinar se este é o problema para você:

  1. Desconecte todos os dispositivos iOS
  2. Exclua o certificado ofensivo e a chave privada do Keychain Access
  3. Reinicie o Xcode
  4. Verifique o acesso às chaves: no meu caso, a duplicata NÃO foi recriada neste ponto
  5. Reconecte o dispositivo iOS
  6. Reinicie o Xcode novamente
  7. Verifique o acesso às chaves: no meu caso, a duplicata foi recriada neste ponto

Se esta é a causa raiz para você, você pode contorná-la certificando-se de desconectar os dispositivos iOS antes de iniciar o Xcode.


0

Simplesmente excluir o certificado redundante não funcionou para mim. Parece que toda vez que xcodebuild é chamado, ele está "recriando" o certificado no keychain de um cache em algum lugar ... mesmo problema do avi Eu criei um hack / conserto para ele, tentei descobrir onde o arquivo estava sendo armazenado em cache e limpá-lo, mas não teve sorte. No final, o que funcionou para mim (um pouco de hack, mas ei, o que mais você pode fazer), foi descobrir qual é o número do certificado e removê-lo manualmente das chaves logo após o xcodebuild ser chamado. Primeiro, vá para o diretório / usr / bin / (ou qualquer diretório que tenha o arquivo xcodebuild, tente which xcodebuild) e execute o seguinte comando:

sudo mv xcodebuild xcodebuild_actual

Em seguida, crie um arquivo usando seu editor favorito (não se esqueça de sudo) com o seguinte código:

xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E

Nota: você terá que modificar seu arquivo sudoers para ter acesso e executar este comando específico sem ter que digitar uma senha.

Substitua a identidade hexadecimal após -Z acima pela identidade hexadecimal do certificado zumbi ofensivo. Finalmente, certifique-se de que o arquivo xcodebuild seja executável:

sudo chmod 755 xcodebuild 

Agora você pode abrir seu keychain e executar o comando build e observar como o certificado zumbi ofensivo é ressuscitado e, em seguida, sumariamente disparado antes de se tornar um problema para a assinatura de código. Espero que a Apple encontre uma solução real para isso.


0

No meu caso, excluir os certificados não funcionou. O XCode 4 parece armazená-los em cache ou restaurá-los. O truque que finalmente funcionou para mim foi ter o keychain e o xcode em execução. Então, no keychain, arraste meus 2 certificados (dev + dist) de 'login' para 'sistema'. Em seguida, as duplicatas reapareceram magicamente e eu fui capaz de excluí-las, e então arrastei os certificados de volta para 'login'


0

É muito fácil, exporte o certificado correto para o seu desktop. Exclua esse certificado das chaves. Tente construir o código-fonte com a mensagem de erro (não tem cert ..) Em seguida, importe novamente o certificado. => Sucesso!


0

Acabei de excluir uma das chaves privadas do meu chaveiro para o certificado de que não preciso mais.

Mesmo que o certificado seja reaplicado, a chave privada não reaparece. Agora verifique os certificados válidos e apenas um certificado aparecerá e os outros certificados cuja chave privada foi excluída não serão mais exibidos em certificados válidos.

Acho que essa é a maneira mais simples de resolver esse problema.


0

Eu estava lidando com o mesmo problema uma vez. E eu resolvi isso removendo o perfil de provisionamento não utilizado da guia Organizer no xcode. Na verdade, o Keychain obterá esse certificado a partir deste perfil de provisionamento, que é um certificado expirado ou a compilação por certificado revogado.

Portanto, você só precisa excluir este perfil de provisionamento da guia Organizer. O Organizer está no botão direito superior do xcode Abra-o e, no Organizer, remova os perfis de provisionamento que você não está usando.

Aqui está a imagem,

insira a descrição da imagem aqui

E não se esqueça de remover o certificado extra das chaves, mas depois disso esse certificado não aparecerá novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.