Falta la clave privada en el certificado de distribución en el llavero

171

Tengo el siguiente problema que no pude encontrar una solución para ningún lado. Básicamente, tenemos una cuenta de desarrollador de la empresa (no empresarial) y, por lo tanto, para enviar nuestra aplicación, solicité al líder de nuestro equipo que me enviara el certificado de distribución y creara y me enviara un perfil de aprovisionamiento de distribución.

Con el perfil de desarrollador, todo funciona bien, pero cuando instalé el certificado y el perfil de aprovisionamiento, no vi el perfil de distribución en Xcode, y tampoco tengo una clave privada bajo el certificado dist en el llavero.

Alguien sabe cómo resolver esto? Leí en distintos lugares que tendré que revocar el certificado y crear uno nuevo, pero realmente no puedo hacerlo, ya que tenemos un montón de aplicaciones en la empresa y no puedo revocarlo para todos.

moshikafya
fuente
2
En algún momento falta la clave privada porque estamos tratando de crear certificados con .CSR que se crearon en cualquier otra máquina. Por lo tanto, asegúrese de que su archivo CSR también debe crearse en la misma máquina donde está tratando de crear e instalar el certificado ... o podría usar .p12 de certificados para evitar este problema
MAhipal Singh
2
En mi caso tengo dos certificados idénticos firma en mis llaves ... que resolvía simplemente borrar uno de ellos ... por si acaso ...
juanram0n

Respuestas:

168

ingrese la descripción de la imagen aquíAhh, este es un problema común. La solución es simple:

Quien haya creado las credenciales de desarrollador originalmente debe ir al llavero en su computadora y hacer clic derecho en la (s) clave (s) para uso privado y público y exportar la clave a un archivo. Luego, simplemente descargue ese archivo en su computadora y ábralo, y se agregará a su llavero.

Debe tener la clave privada (archivo .pem) y el certificado para sus perfiles de aprovisionamiento.

Nirma
fuente
36
Para ser más específico, es el archivo .p12 que necesita (exportado)
mkral
77
@Nirma Qué hacer si no tenemos acceso a esa computadora desde la cual se crearon originalmente las credenciales de desarrollador.
Nishad Arora
@NishadArora Tendrás que crear una nueva clave para usar. No hay forma de usarlo sin la clave privada. AFAIK
Joshua Pinter
2
@Nirma Cómo crear uno nuevo
Muju
Si ayuda a alguien, después de haber instalado el certificado público y la clave privada (marcado en Keychain Access y se estaba mostrando), también tuve que reiniciar Xcode para que recogiera la clave privada. Usando Xcode 11.6 en OSX 10.15.5.
NHol
70

Siempre que tenga acceso a la Mac que se utilizó para generar el certificado de distribución original, es muy simple.

Simplemente use la aplicación Keychain Access de esa mac para exportar tanto el certificado como la clave privada. Seleccione ambos usando shift o comando y haga clic derecho para exportar a un archivo .p12.

Adjunto una captura de pantalla para que quede muy claro.

En tu Mac, importa ese archivo .p12 y listo (solo asegúrate de tener un perfil de aprovisionamiento válido).

Solo elige exportar

eladleb
fuente
55

Para agregar a las respuestas de otros, si ya no tiene acceso a esa clave privada, es bastante sencillo volver a poner en funcionamiento:

  1. revocar su certificado activo en el portal de aprovisionamiento
  2. crear un nuevo certificado de desarrollador (acceso a llavero /.../ solicitud de csr ... etc.)
  3. descargar e instalar un nuevo certificado
  4. crear un nuevo perfil de aprovisionamiento para la identificación de la aplicación existente (en el portal de aprovisionamiento)
  5. descargue e instale un nuevo perfil de aprovisionamiento y en la compilación, la configuración establece las identidades de firma de código apropiadas
mkral
fuente
13
Aquí en mi empresa siempre hay un desastre, nadie sabe en qué computadora se creó un determinado certificado. Es mejor revocar y recrear
user2387149
1
@ user2387149 Estoy aquí 6 años después para sugerirle a CI / CD que haga este tipo de cosas y se olvide de la distribución a través de xCode.
Edgar Salazar
si ya descargué un certificado de distribución, lo revoqué y luego lo solicité nuevamente. ¿Debo eliminar el antiguo certificado de distribución?
kafinsalim
15

Elimine el existente de KeyChain, obtenga y agregue el archivo .p12 a su mac desde donde se creó el certificado.

Para obtener .p12 de Mac de origen, vaya a KeyChain, expanda el certificado, seleccione ambos y exporte 2 elementos. Esto guardará el archivo .p12 en su ubicación:

ingrese la descripción de la imagen aquí

Jamshed Alam
fuente
8

En mi caso, perdí todas las claves privadas en mi llavero, las nuevas se importaron correctamente, pero no muestra la clave privada también. Lo único que ayudó fue generar un nuevo CertificateSigningRequest

JakubKnejzlik
fuente
6

Después de cambiar un Mac que no es el original que creó el certificado de distribución, se perderá la clave privada. Simplemente elimine el certificado de origen y vuelva a crear uno nuevo, eso me funciona ~

Michael Yang
fuente
5

Cuando intento cargar la compilación de iOS para probar el vuelo, aparece un error.

"Missing privacy key".

ingrese la descripción de la imagen aquí

Solo 2 pasos para corregir este error.

  1. Eliminar el certificado antiguo de developer.apple.com
  2. Cree un nuevo certificado de Xcode o developer.apple.com

Mi problema ha sido resuelto (estoy usando Xcode 9.4.1).

Verifique, Xcode creó un nuevo certificado.

ingrese la descripción de la imagen aquí

Vivek
fuente
5

Para las personas que tienen miedo de volver a crear el certificado de distribución de AppStore, la documentación de Apple dice:

Importante: Volver a crear sus certificados de desarrollo o distribución no afecta a las aplicaciones que ha enviado a la App Store ni a su capacidad para actualizarlas.

Pero afecta las aplicaciones para el ecosistema Apple Developer Enterprise .

Ramis
fuente
44
¡si tiene una cuenta empresarial!
MobileMon
Por "sistema de ecosistema empresarial" .... Por ej. ¿de qué estás hablando si trabajas en una gran empresa y 100 desarrolladores tienen esa clave privada para esa aplicación específica?
petrosmm
2

En el Menú> Visual Studio (mac)> Preferencias> Publicación> Cuentas de desarrollador de Apple> [Seleccione su ID de Apple]> Ver detalles> Crear certificado

Para eliminar certificados no utilizados / no válidos, vaya al sitio web: https://developer.apple.com/account/resources/certificates/list

eliminar cualquier certificado no deseado allí

Lo siguiente es crear el ID de la aplicación (identificadores), vaya al sitio web:
https://developer.apple.com/account/resources/identifiers/list

A continuación, vaya al sitio web para crear perfiles de aprovisionamiento:
https://developer.apple.com/account/resources/profiles/add

usa el certificado para enlazar con la identificación de tu aplicación.

Lo siguiente es descargar los perfiles:
en su mac> en el menú> Visual Studio (mac)> Preferencias> Publicación> Cuentas de desarrollador de Apple> [Seleccione su ID de Apple]> Ver detalles> Descargar todos los perfiles

mjb
fuente
1

Accedí a ese certificado en el sitio web del desarrollador de Apple y después de descargarlo lo abrí. Del mismo modo, al abrir, obtuve una pequeña ventana preguntando si quería agregar el certificado al llavero. Simplemente toque "agregar" y el error de "clave privada faltante" desapareció.

ISS
fuente
1

Me metí en esta situación ("Falta clave privada") después de que Xcode no pudo crear un nuevo certificado de distribución; se produjo un error desconocido.

Luego, luché por obtener la clave privada o generar un nuevo certificado. Del administrador de certificados en Xcode obtuve errores extraños como "La frase de contraseña que ingresó es incorrecta". Pero ni siquiera me pidió una frase de contraseña.

Lo que me ayudó fue:

  1. Revoque todos los certificados de distribución que no funcionan en developer.apple.com
  2. Reiniciar mi Mac

Después de eso, Xcode pudo crear un nuevo certificado de distribución y no faltaba ninguna clave privada.

Lección aprendida: reinicie su Mac tanto como Windows;)

Štěpán Havránek
fuente
0

Compruebe si está utilizando Iniciar sesión o no para agregar los certificados, si está registrando el Sistema en la parte superior izquierda, entonces no podremos verlo.

Por lo tanto, arrastre y suelte el .cer en el inicio de sesión y luego verifique si puede obtener la clave privada o no.

Priyanka
fuente
0

Solo para arrojar algo de luz sobre esto.

Después de que eliminé mi certificado p12 de Keychain. Volví a descargar mi propio certificado del portal de desarrolladores de Apple.

Solo pude descargar el certificado. Pero para firmar también necesita la clave privada. Entonces tú tampoco:

  • exporta tanto la clave privada como el certificado de Keychain para obtenerlo.

  • Cargue una solicitud de firma de certificado y genere nuevos certificados

Ese certificado por sí solo no tiene valor para fines de firma. Supongo que la clave privada es creada por el llavero en el momento en que 'solicita un certificado de una autoridad de certificación' pero no se le muestra hasta que agrega su certificado de vinculación.

Miel
fuente