Error de código: la identidad del certificado aparece dos veces

103

Error de CodeSign: la identidad del certificado 'Desarrollador de iPhone: XXXX (12345678)' aparece más de una vez en el llavero. La herramienta de codeign requiere que solo haya una.

Así que voy a mi llavero y lo borro. Pero recibo este error cada vez que reinicio Xcode 4 y alguna aplicación está agregando el certificado antiguo caducado nuevamente en el llavero. ¿Alguna idea de por qué y qué aplicación?

Mugunth
fuente
posible duplicado del problema del certificado caducado
zoul

Respuestas:

99

Acabo de tener el mismo problema. Ha sido arreglado. Se produjo después de que envié una aplicación e instalé algunos certificados para firmar la aplicación.

Solución rápida: abra ACCESO A LLAVEROS> haga clic en MIS CERTIFICADOS> allí probablemente verá Desarrollador de iPhone:. ¡Probablemente lo verá DOS VECES! Seleccione el que tenga la fecha de caducidad más temprana, haga clic derecho y seleccione ELIMINAR.

Reinicie Xcode si no lo ha hecho. Funciona ahora. :)

Codificación feliz.

Louie
fuente
27
¡Un paso más! Debe abrir el Organizador en XCode y actualizar sus perfiles de aprovisionamiento después de eliminar el certificado duplicado.
Meekohi
@Meekohi, ¿a qué te refieres con 'actualizar' mis perfiles de aprovisionamiento? ¡Gracias!
abw333
7
Relanzar Xcode me resolvió el mismo problema después de eliminar el certificado anterior.
Maxim Mikheev
En Xcode 4 (tengo 4.4.1), tuve que eliminar TODOS los perfiles de aprovisionamiento asociados con el certificado anterior. Luego reinicié Xcode y el certificado anterior dejó de aparecer (mágicamente) en el llavero.
Roberto
3
Me funcionó con una adición (estoy usando Xcode 4.6.3). Eliminé los certificados caducados (o los más pronto en caducar), luego reinicié Xcode y todavía tenía el problema: los certificados antiguos reaparecieron de alguna manera en KeyChain Access. Entonces, reinicié Xcode pero antes de seleccionar mi proyecto para abrir, volví a KeyChain Access y el certificado anterior estaba allí nuevamente, así que lo eliminé. Luego abrí mi projet (en el Xcode que ya se estaba ejecutando) y todo estuvo bien: pude volver a construir.
Ed Sinek
71

Creo que descubrí por qué la eliminación simple no funciona. Debido a que el certificado de desarrollo todavía está almacenado en el perfil de provisión, cuando cierro / vuelvo a abrir el Xcode después de eliminar el certificado en Keychain, vi que el certificado anterior regresaba. Así que lo elimino de nuevo. Funcionó.

La simple solución de eliminar el perfil no funcionó para mí.

Solución que funcionó en mi caso:

  1. Salir de Xcode
  2. Si el acceso al llavero está abierto, déjelo abierto.
  3. Inicie Xcode ahora.
  4. Vea que el certificado del que se quejaba Xcode se volverá a agregar al llavero en el lanzamiento desde su caché.
  5. Continúe y elimínelo.
  6. Compilación y codificación feliz.
Mobilewits
fuente
3
Probé todas las soluciones anteriores y esta funcionó. Parece que hay múltiples causas / soluciones.
Nathan Hangen
+1: Puedo confirmar que XCode sí mantiene un "caché" de los certificados y los agrega en su lanzamiento. ¡Es terrible que funcione de esta manera! ¡Causa tantos problemas! ¡Qué vergüenza Apple, esto ha causado horas de tiempo perdido debido a la lucha con esto!
JRG-Developer
10

Pasé bastante tiempo luchando con este mismo problema. Después de todos los intentos de solucionarlo, finalmente me di cuenta de que es un error en Xcode. Esta publicación me dio una pista para solucionarlo: los certificados vuelven a aparecer mágicamente en su llavero

En mi caso, la clave privada correspondiente estaba en el llavero del sistema y solo tenía mi nombre (es difícil decir que era para aprovisionamiento). Tuve que:

  • Mueva la clave privada asociada al llavero de 'inicio de sesión'
  • Reinicié Xcode y noté que la clave privada ahora se mostraba como asociada (confirma para qué era)
  • Eliminar el certificado y la clave privada
  • Reinicia Xcode y ¡puf! Dejó de agregar mi antiguo certificado

Una observación interesante es que cuando elimina el certificado, no elimina la clave privada asociada. Visualmente, muestra la clave privada debajo del certificado. No se deje engañar.

¡Buena suerte!

Sean Aitken
fuente
eliminar la clave privada también funcionó para mí - última actualización de xcode de octubre de 2012 mountain lion
ina el
3

Tengo el mismo problema con xcode45-DP1. esto funciona para mi:

  1. elimine todos los certificados relacionados con su cuenta del llavero. SALIR llavero

  2. elimine todos los perfiles de aprovisionamiento relacionados con su cuenta de xcode: organizer: device: Library: provisioning profiles. SALIR xcode

  3. revocar su certificado y regenerarlo y descargarlo en su máquina de compilación

  4. antes de descargar el perfil de aprovisionamiento, haga clic en Editar junto al botón de descarga para asegurarse de que su nombre esté seleccionado.

  5. Luego descargue el perfil de aprovisionamiento

  6. haga doble clic en el certificado para instalarlo en el llavero

  7. arrastre el perfil de aprovisionamiento a xcode: organizer: device: Library: provisioning profiles

  8. no haga clic en el botón de actualización del xcode.

  9. hacer la construcción.

ccs
fuente
3

La respuesta está aquí

elimine todos mis antiguos perfiles de aprovisionamiento usando el certificado anterior con Organizer, luego salga de XCode, elimine el certificado anterior de Keychain y reinicie XCode.

parece que el xcode mantendrá los certificados cuando tenga referencias a en los perfiles de aprovisionamiento

sídixon
fuente
1

Estaba teniendo problemas con los certificados zombies que se volvían a llenar en mi llavero y la identidad del certificado aparecía dos veces. Simplemente eliminar el certificado duplicado no funcionó.

En Xcode, cuando busqué en mi Code Signing en el destino, recordé que tenía un perfil de distribución diferente en las compilaciones "Ad Hoc" que en las compilaciones de "Release".

Cuando generé un nuevo certificado, solo descargué un nuevo perfil para compilaciones Ad Hoc, no para compilaciones de lanzamiento.

Xcode estaba colgando del certificado para ambos perfiles y, por lo tanto, Xcode estaba causando los certificados duplicados ... porque olvidé actualizar mis perfiles correctamente.

Asegúrese de actualizar TODOS sus perfiles de aprovisionamiento al nuevo certificado y cambie TODOS los perfiles al mismo tiempo en Xcode.

Asegúrese de actualizar todos sus perfiles de aprovisionamiento con el nuevo certificado; de lo contrario, Xcode intentará poner el certificado para AMBOS perfiles en el llavero ... ¡causando el error duplicado!

karlbecker_com
fuente
1

Tuve este problema y leí toda la información al respecto, finalmente encontré la solución por mi cuenta. Lo que la gente no mencionó es que ANTES de limpiar los certificados en el organizador de Xcode y ANTES de limpiar las claves caducadas en su llavero, debe asegurarse de no tener ningún certificado caducado en el Portal de aprovisionamiento . Si tiene incluso un certificado vencido para una aplicación anterior que usó el certificado de desarrollador anterior, Xcode lo incluirá en su organizador con la primera compilación y, desde allí, irá a su llavero y generará un duplicado.

Segev
fuente
1

En mi caso, el "caché" que Xcode estaba viendo era un dispositivo iOS adjunto. Para determinar si este es su problema:

  1. Desconecte todos los dispositivos iOS
  2. Eliminar el certificado infractor y la clave privada de Keychain Access
  3. Reiniciar Xcode
  4. Verifique el acceso al llavero: en mi caso, el duplicado NO se recreó en este momento
  5. Vuelva a conectar el dispositivo iOS
  6. Reinicie Xcode nuevamente
  7. Verifique el acceso al llavero: en mi caso, el duplicado se recreó en este punto

Si esta es la causa principal para usted, puede solucionarlo asegurándose de desconectar los dispositivos iOS antes de iniciar Xcode.

Simon Whitaker
fuente
0

Simplemente eliminar el certificado redundante no funcionó para mí. Parece que cada vez que se llama a xcodebuild, se "vuelve a crear" el certificado en el llavero desde un caché en algún lugar ... el mismo problema que avi Creé un truco / solución para él, traté de encontrar dónde se estaba almacenando el archivo en caché y despejarlo, pero no tuve suerte. Al final, lo que funcionó para mí (un poco un truco, pero bueno, qué más se puede hacer), fue averiguar cuál es el número de certificado y eliminarlo manualmente del llavero poco después de que se llame a xcodebuild. Primero, vaya a su directorio / usr / bin / (o cualquier directorio que tenga su archivo xcodebuild, intentewhich xcodebuild ) y ejecute el siguiente comando:

sudo mv xcodebuild xcodebuild_actual

Luego crea un archivo usando tu editor favorito (no olvides sudo) con el siguiente 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: tendrá que modificar su archivo sudoers para tener acceso y ejecutar este comando específico sin tener que ingresar una contraseña.

Reemplace la identidad hexadecimal después de -Z arriba con la identidad hexadecimal del certificado zombi infractor. Finalmente, asegúrese de que el archivo xcodebuild sea ejecutable:

sudo chmod 755 xcodebuild 

Ahora puede abrir su llavero y ejecutar el comando de compilación, y ver cómo se resucita el certificado zombie ofensivo y luego se dispara sumariamente antes de que se convierta en un problema para la firma de códigos. Con suerte, Apple encontrará una solución real para esto.

BadPirate
fuente
0

En mi caso, eliminar los certificados no funcionó. XCode 4 parece almacenarlos en caché o restaurarlos. El truco que finalmente funcionó para mí fue tener keychain y xcode ejecutándose. Luego, en el llavero, arrastre mis 2 certificados (dev + dist) de 'inicio de sesión' a 'sistema'. Luego, los duplicados reaparecieron mágicamente y pude eliminarlos, y luego arrastré los certificados de nuevo a 'iniciar sesión'

Pedro
fuente
0

Es muy fácil, exporte el certificado correcto a su escritorio. Elimina ese certificado en el llavero. Intente compilar la fuente con un mensaje de error (no tiene certificado ..) Luego importe nuevamente el certificado. => ¡Éxito!

Giang
fuente
0

Acabo de eliminar una de las claves privadas en mi llavero para el certificado que ya no necesito.

Aunque el certificado vuelve a aparecer pero la clave privada no vuelve a aparecer. Ahora verifique los certificados válidos y solo aparecerá un certificado y los otros certificados cuya clave privada se eliminó ya no se mostrarán bajo certificados válidos.

Creo que esta es la forma más sencilla de resolver este problema.

Swathy Valluri
fuente
0

Una vez estuve lidiando con el mismo problema. Y lo he resuelto eliminando el perfil de aprovisionamiento no utilizado de la pestaña Organizador en xcode. En realidad, Keychain obtendrá ese certificado de este perfil de aprovisionamiento, que es un certificado caducado o la compilación mediante certificado revocado.

Así que solo tienes que eliminar este perfil de aprovisionamiento de la pestaña Organizador. El organizador está en el botón del lado superior derecho de xcode. Ábrelo y luego, en Organizador, elimina los perfiles de aprovisionamiento que no usas.

Aquí está la captura de pantalla,

ingrese la descripción de la imagen aquí

Y no olvide eliminar el certificado adicional del llavero, pero después de eso, ese certificado no volverá a aparecer.

Dilip
fuente