2011-01-13 18 views
13

Tengo un certificado de firma de código emitido por GoDaddy en un archivo .spc. Además, tengo una clave privada en el archivo .key. La firma del código se emitió hace unos 13 meses, luego expiró y se renovó con GoDaddy. Durante el proceso de renovación, no se solicitó ninguna clave privada y solo hubo un nuevo archivo .spc.Unir archivos .spc y .key emitidos por GoDaddy en un certificado .pfx/.cer completo

Ahora estoy enfrentando el problema de unir el archivo de clave privada original con el certificado de problemas para formar un archivo .pfx (o .cer?) Adecuado para la instalación en el almacén de certificados de Windows.

El comando que estoy tratando es:

openssl.exe pkcs12 -inkey my.key -in my.spc -out my.pfx -export 

Sin embargo, estoy recibiendo un mensaje de error que dice “Sin certificado coincide con la clave privada”.

He seguido this answer on SO para verificar que el archivo .key es una clave privada válida. Sin embargo, cuando intento para verificar que .spc es un certificado válido, simplemente me

unable to load certificate 
5436:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE 

Cuál es la forma correcta de producir un archivo .pfx de mis entradas? Estoy usando OpenSSL 0.9.8k.

+0

¿Está utilizando IE8? El script de firma de código Godaddy no funciona con IE8. use firefox – Nick

+1

No. Estoy usando Chrome 9 y FireFox 9. Sin embargo, no puedo ver ninguna conexión entre IE8 y mi problema. –

Respuesta

25

Al final logré descubrir un procedimiento que funciona. Estos son los pasos para generar un nuevo certificado de firma PFX y el código CER del SPC y archivos clave:

  1. obtener el nuevo certificado de GoDaddy CodeSign.spc.
  2. exportar una clave privada con formato PEM desde el PFX caducado:

    openssl.exe pkcs12 -in CodeSign.pfx -nocerts -out CodeSign.pem 
    
  3. Convertir la clave privada con formato PEM al formato PVK:

    pvk.exe -in CodeSign.pem -topvk -strong -out CodeSign.pvk 
    
  4. Combinar el PVK y SPC en PFX:

    pvk2pfx.exe -pvk CodeSign.pvk -pi <passphrase> -spc CodeSign.spc -pfx CodeSign.pfx -po <passphrase> -f 
    
  5. Importe el archivo PFX resultante a Almacén de certificados de Windows. Recuerde hacerlo exportable.

  6. Exportar desde el almacén de certificados en el formato CER binario como CodeSign.cer.
  7. Opcionalmente, elimine el certificado del almacén de certificados de Windows.

En caso de que renueve su certificado periódicamente, puede almacenar el archivo PVK y omitir los pasos (2) y (3).

ACTUALIZACIÓN: En caso de que le sucede que tiene el certificado en CRT en lugar de formato SPC, haga lo siguiente para convertirlo en SPC:

openssl crl2pkcs7 -nocrl -certfile CodeSign.crt -outform DER -out CodeSign.spc 

Fuentes:

Las herramientas que necesitará:

  • OpenSSL
  • pvk.exe - ver el enlace de descarga en la parte inferior de esa página
  • pvk2pfx.exe - parte de Microsoft SDK , se instala con Visual Studio 2010
+0

Esta respuesta no incluye información sobre cómo trabajar con el archivo .key como se menciona en la pregunta original. En el proceso anterior, ¿no necesitó usar el archivo .key? –

+1

No, como mencioné en mi respuesta, tuve que usar el archivo 'pfx' para exportar la clave privada al formato PEM. No he usado el archivo 'key' desde entonces; siga siempre los pasos antes mencionados cada año al renovar nuestro certificado de firma de código. –

+3

Entendido - esto es suponiendo que hay un pfx original (caducado) para empezar, ¿correcto? En mi caso, no tengo un PFX, eso es a lo que intento llegar. Básicamente recogí tus instrucciones en 'pvk.exe -en CodeSign.pem -topvk -strong -out CodeSign.pvk' pero en mi caso' CodeSign.pem' era 'CodeSign.key' (que es como yo solo entiendo un PEM la clave privada formateada, que fácilmente podría llamarse 'CodeSign.pem' también). ¡Gracias por tu ayuda! –

3

El puesto actual respuesta fue muy útil para mí en los últimos pasos de pasar de un archivo de certificado caducado (.pfx o p.12) en una nueva con GoDaddy, pero me pareció que carecen de información sobre los pasos iniciales de cómo generar una solicitud de firma de certificado (CSR) desde mi archivo de certificado original.

Para cualquier otra persona en busca de información similar, esto es lo que terminé usando ...

Obtener la clave privada:

openssl pkcs12 -in certs-and-key.p12 -out privateKey.key 

Obtener el certificatate:

Cuidado: Este puede darle el certificado de CA

openssl pkcs12 -in certs-and-key.p12 -out certificate.crt -nokeys 

Mejor: Utilice este comando para imprimir sólo el cliente cert

openssl pkcs12 -in MacCossLabUW.p12 -clcerts 

A continuación, copie la salida entre:

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

guardarlo en un archivo llamado certificate.crt

Ahora comprobar que la clave privada y el certificado coinciden con los comandos:

openssl rsa -noout -modulus -in privateKey.key | openssl md5 
openssl x509 -noout -modulus -in certificate.crt | openssl md5 

luego generar una nueva CSR:

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key 

Utilice el CSR que volver a introducir el certificado.

Descargue el archivo de certificado de publicación del software GoDaddy (.spc).

Compruebe que el certificado generado coincide con la clave privada solicitud:

openssl pkcs7 -inform DER -in certificate.spc -print_certs 

luego copiar la salida entre su certificado (Nota: la salida contendrá también certificados de CA):

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 

Guardar en un archivo denominado certificado-new.crt

y ejecutar el comando:

openssl x509 -noout -modulus -in certificate-new.crt | openssl md5 

La salida debe coincidir con la llamada anterior utilizada con la clave privada y el certificado de solicitud.

Para finalizar el proceso, siga los pasos descritos en la respuesta con pvk2pfx.

También encontré el diagrama esquemático en este post muy útiles:

PVK2PFX Error 0x80070490 - Cannot find certificates that match the key

0

Si ha generado la petición del certificado de IIS (hice esto en IIS en Windows 2012 Server), siga estos pasos en el servidor/PC donde se generó la solicitud - Abrir IIS - Haga clic en el nodo de nivel superior (nodo servidor) - Abrir la configuración de certificados de servidor - Haga clic en "Completar solicitud de certificado" en virtud de las acciones a la derecha - Importe su archivo de proceso estadístico al servidor.

Desde aquí puede exportar a un archivo PFX

+0

La pregunta es sobre un * certificado de firma de código *. Su respuesta es desafortunadamente irrelevante. –

Cuestiones relacionadas