Xcode 4 -reinstala certificados de chaveiro que eu excluo


85

Estou recebendo este erro:

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

No começo, não se preocupe, vou apenas entrar no chaveiro e excluir o duplicado (mais antigo), o que fiz. Voltei, fechei o Xcode, reabri o Xcode e o projeto, mesmo erro. wtf eu pensei para mim mesmo. Volte para as chaves e o certificado está lá novamente. Excluo ambos os certificados, repito e observo que, conforme o projeto é carregado, os dois certificados que excluí voltam para o chaveiro.

Depois de muita pesquisa, assegurei-me de que não tinha o certificado nas chaves do sistema, o que não era verdade. Também fiz uma limpeza e reconstrução. Quando eu tinha duplicatas com o Xcode 3, eu podia simplesmente limpar a duplicata do chaveiro e estava tudo bem. Mas com o Xcode 4 ele literalmente os reinstala de alguma forma quando eu abro o projeto. Eu até apaguei todos os arquivos .cer em meu sistema dos quais ele poderia estar puxando.

Alguma sugestão?


1
Felicidades. Tive o mesmo problema. :)
— RedBlueThing

Tem o mesmo problema. Isso acontece porque o Keychain não remove o certificado corretamente e você tem uma situação em que 2 certs aparecem (mas um é inválido). Basta remover inválido no aplicativo Keychain e isso funcionará bem. Mas é uma solução temporária. :(
— Sergey Kopanev

Respostas:


103

A solução foi entrar no organizador - na biblioteca - perfis de provisionamento, excluir todos eles e reinstalar todos os perfis de que ainda precisava.


Sim! Posso confirmar que isso funciona. Mesmo que eu continuasse excluindo o do chaveiro, ele reaparecia. Depois de remover os perfis de provisionamento antigos do Organizer, tudo voltou ao normal. Obrigado! :)
— RoLYroLLs

1
Funciona para mim também! Obrigado! Acho que o XCode4 está tentando fazer é inserir dev certs em seu keychain para perfis de prov que estão faltando, mesmo se os dev certs tiverem expirado.
— iphone007,

5
Lembre-se também de regenerar seu perfil de aprovisionamento se você renovou seu dev cert. Não o fiz e quando adicionei novamente um perfil de prov antigo, o cert dev expirado associado foi reinserido no chaveiro, D'oh!
— iphone007,

Tenha cuidado, de alguma forma eu apaguei meu keychain de login tentando apagar perfis. Não tenho certeza de como isso aconteceu, pois tenho certeza que a área da lista de chaves estava em foco quando eu clico em excluir. Faça backup antes de excluir e tenha cuidado.
— avance

Isso ajuda, mas, como outros disseram, você realmente precisa ir até o keychain e excluir o certificado de desenvolvedor expirado, não apenas o perfil de provisionamento.
— Ron Srebro

33

Eu tive esse mesmo problema e as soluções acima não resolveram meu problema (bem quase).

Eu tinha o mesmo ID de desenvolvedor / certificado duplicado do qual todos estão reclamando e tentei excluir todos os meus perfis, revogar / reemitir meu certificado, certificando-me de que não havia nenhum no keychain do sistema, reiniciando, etc. etc.

No final, acabou por não era um certificado no chaveiro do sistema, que tinha expirado e por isso foi escondido por padrão na lista.

Certifique-se de ver os certificados expirados no KeyChain

Para fazer isso:

  1. Abra o Acesso às Chaves
  2. Clique no menu Exibir
  3. Clique em Mostrar certificados expirados
  4. em seguida, procure e exclua certificados de desenvolvedor expirados

Incrível, você é um gênio. Eu tinha feito tudo listado em todos os lugares. Você me ajudou a resolver o problema de meses atrás. Deus te abençoê!
— Bushra Shahid

1
Descobri que eu tinha um certificado expirado nas chaves do sistema. Isso me ajudou a encontrar! Obrigado!
— christopher_f

11

O Xcode 4 tem um novo recurso "Provisionamento Automático de Dispositivo". Ele está localizado no organizador em perfis de biblioteca / provisionamento. Se você habilitou isso, ele baixará automaticamente seus perfis de provisionamento do servidor de provisionamento do desenvolvedor da apple e, portanto, você receberá o erro de ter duplicatas. A maneira mais fácil de corrigir isso é excluir todos os perfis de provisionamento e pressionar atualizar para o "Provisionamento automático de dispositivos". Isso carregará seus perfis de provisionamento do servidor e resolverá o problema.


Obrigado por isso. Excluí meus perfis e usei o provisionamento automático de dispositivos para recuperá-los e o problema foi embora.
— Sasho de

Esta é a solução atualizada, funcionou para mim (depois de tentar as outras soluções, elas parecem estar desatualizadas)
— Kasihasi

7

se quiser mexer no acesso do keychain para remover o certificado expirado, você pode tentar o seguinte:

  • crie um novo keychain, nomeie-o "expired" e mova SOMENTE o certificado expirado para ele.
  • exclua o keychain "expirado" recém-criado que contém SOMENTE o certificado expirado, quando solicitado, selecione "Excluir referências e arquivos".

o certificado expirado desaparece junto com as chaves. funcionou perfeitamente para mim.


6
  1. Remova todos os perfis de provisionamento do XCode Organizer;
  2. Remover certificados de desenvolvedor antigos do Keychain Access;
  3. Gere Perfis de Provisionamento apenas com o Certificado de Desenvolvedor correto;
  4. Baixe e instale os novos Perfis de Provisionamento;

- EDITAR -

Merge a resposta de @Codezy e o comentário de @ iphone007.


Sua resposta não corrigiu o problema. Na verdade, removi certificados de desenvolvedor e perfis de provisionamento várias vezes, mas os certificados de desenvolvedor antigos sempre são reinstalados. Mas o comentário de @ iphone007 é útil, eu apenas os mesclo ....
— Sr. Ming,

2

Excluindo perfis de provisionamento na biblioteca do Organizer, além disso, você deve excluir o certificado de desenvolvedor do iPhone no Keychain Access. (O nome do certificado é provavelmente como "Desenvolvedor iPhone: XXXXX ..." e indicado pelo sinal de X vermelho, pois expirou)


Apenas remover e reinstalar perfis de provisionamento no Organizer não ajudou, mas sua sugestão de remover o perfil expirado das chaves corrigiu para mim, obrigado!
— gulchrider

2

Passei meio dia para isso e finalmente encontrei a solução

  1. Abra KeyChain Access.app
  2. Selecione "Sistema" no menu "Chaveiros" à esquerda da tela do aplicativo Chaveiros
  3. Selecione "Certificados" no menu inferior "Categoria"
  4. Remova todas as certificações antigas.

Em seguida, feche Keychain.app e vá para Xcode -> Organizer

  1. Remover todos os perfis de provisionamento no menu Biblioteca
  2. Remover todos os perfis de provisionamento no menu Dispositivos
  3. Pressione o botão "Atualizar" no menu Biblioteca -> Perfil de Provisionamento
  4. Adicione perfis necessários ao seu dispositivo

Construa novamente seu aplicativo :)


1

Para a posteridade, esta é a estratégia para contornar esse problema em nosso script de construção automatizado:

  1. Antes de construir, mova o diretório ~ / Library / MobileDevices / Provisioning Profiles de lado
  2. Verifique se o utilitário de configuração do iPhone está em execução e feche-o (certificados sempre reaparecem se este aplicativo estiver aberto. No XCode 4.1, você também precisa fechar o organizador).
  3. Executar você construir
  4. Mova o diretório de perfis de provisionamento de volta
  5. Lucro?

1

Eu tentei tudo sugerido aqui, mas nada funcionou para mim, exceto reinstalar o XCode 4.3 resolvido magicamente.


1

Descobri uma maneira realmente fácil de consertar isso em 4.6.1. Você pode fazer isso sem reiniciar nada ou excluir perfis!

Com o Keychain Access e seu projeto Xcode aberto:

  1. No Xcode, abra Organizer - "Dispositivos" e selecione a "equipe" com o certificado duplicado.
  2. Mude para o Keychain Access e exclua o (s) certificado (s) duplicado (s) antigo (s). Nota: Certifique-se de ativar "mostrar certificados expirados" para não perder nenhum.
  3. Os certificados terão desaparecido do perfil da "equipe" no Organizador do Xcode.
  4. Limpe o projeto e a construção.

Espero que ajude!


0

o método acima não funciona para o meu caso

finalmente, eu vou para o chaveiro

e procure a chave digitando o nome

Finalmente encontrei o certificado que deveria ser excluído antes. então eu apaguei e o problema foi resolvido

é realmente frustrante, e não sei se é o bug ... realmente exaustivo.


0

Citando uma resposta a uma duplicata desta pergunta, alguns dos bugs do Xcode nesta área só podem ser resolvidos reiniciando o OS X .

No final, obtive sucesso excluindo tudo o que foi mencionado em qualquer uma das respostas a esta pergunta, reiniciando e instalando manualmente as partes de que precisava (não confiei / tentei o recurso de download automático de perfil / certificado).


0

Pelo que vale a pena, @AndreasPrang, sua resposta funcionou quando todas as opções acima não funcionaram. Pude ver que o certificado expirado não estava em nenhum lugar do keychain, mas quando fiz uma compilação, o Xcode disse que estava. Excluir os perfis de provisionamento (todos eles), selecionar meu nome na seção Equipe e clicar no ícone de atualização no canto inferior direito do organizador também não ajudou. Reiniciar o Xcode não ajudou, mas desligar o XCode, excluindo ~ / Library / Developer / Xcode sim. Quando reiniciei o XCode, ele reconstruiu tudo e ficou feliz.



0

Acabei de instalar o Xcode 4.6.1 e comecei a ter esse problema novamente. A última vez foi há muito tempo. Excluí os antigos perfis de provisionamento e os certificados, mas ainda não consegui criar.

Desta vez, descobri que tinha 2 certificados listados para mim na conta da equipe do portal do desenvolvedor. O primeiro expirou, o segundo não. O Xcode continuou pegando o primeiro que encontrou enquanto atualizava (ou talvez ambos).

Eu apaguei os dois certificados do chaveiro, baixei manualmente o certificado correto do portal da Apple e o adicionei manualmente ao chaveiro. Agora posso construir novamente.

(E enviei uma solicitação ao administrador da equipe para remover o certificado antigo.)


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.