How to create an app package signing certificate (Cómo crear un certificado de firma del paquete de la aplicación)

Importante

MakeCert.exe está en desuso. Para obtener instrucciones actuales sobre cómo crear un certificado, consulte Creación de un certificado para la firma de paquetes.

 

Obtenga información sobre cómo usar MakeCert.exe y Pvk2Pfx.exe para crear un certificado de firma de código de prueba para que pueda firmar los paquetes de aplicaciones de Windows.

Debe firmar digitalmente las aplicaciones empaquetadas de Windows antes de implementarlas. Si no usa Microsoft Visual Studio 2012 para crear y firmar los paquetes de la aplicación, debe crear y administrar sus propios certificados de firma de código. Puedes crear certificados mediante MakeCert.exe y Pvk2Pfx.exe desde el Kit de controladores de Windows (WDK). A continuación, puede usar los certificados para firmar los paquetes de la aplicación, por lo que se pueden implementar localmente para realizar pruebas.

Lo que necesita saber

Tecnologías

Requisitos previos

Instrucciones

Paso 1: Determinar el nombre del publicador del paquete

Para que el certificado de firma que cree se pueda usar con el paquete de aplicación que desea firmar, el nombre del firmante del certificado de firma debe coincidir con el atributo Publisher del elemento Identity en el AppxManifest.xml de esa aplicación. Por ejemplo, supongamos que el AppxManifest.xml contiene:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

Para el parámetro publisherName que especifique con la utilidad MakeCert en el paso siguiente, use "CN=Contoso Software, O=Contoso Corporation, C=US".

Nota

Esta cadena de parámetro se especifica entre comillas y distingue mayúsculas de minúsculas y espacios en blanco.

 

La cadena de atributo Publisher que se define para el elemento Identity de la AppxManifest.xml debe ser idéntica a la cadena que especifique con el parámetro MakeCert /n para el nombre del firmante del certificado. Copie y pegue la cadena siempre que sea posible.

Paso 2: Creación de una clave privada mediante MakeCert.exe

Use la utilidad MakeCert para crear un certificado de prueba autofirmado y una clave privada:

MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 
expirationDate /sv MyKey.pvk MyKey.cer

Este comando le pide que proporcione una contraseña para el archivo .pvk. Se recomienda elegir una contraseña segura y mantener la clave privada en una ubicación segura.

Se recomienda usar los parámetros sugeridos en el ejemplo anterior por estos motivos:

/R

Crea un certificado raíz autofirmado. Esto simplifica la administración del certificado de prueba.

/h 0

Marca la restricción básica para el certificado como una entidad final. Esto impide que el certificado se use como entidad de certificación (CA) que pueda emitir otros certificados.

/Eku

Establece los valores de Uso mejorado de claves (EKU) para el certificado.

Nota

No coloque un espacio entre los dos valores delimitados por comas.

 

  • 1.3.6.1.5.5.7.3.3 indica que el certificado es válido para la firma de código. Especifique siempre este valor para limitar el uso previsto para el certificado.
  • 1.3.6.1.4.1.311.10.3.13 indica que el certificado respeta la firma de duración. Normalmente, si una firma tiene una marca de tiempo, siempre y cuando el certificado fuera válido en el momento en que se marcaba la hora, la firma seguirá siendo válida aunque expire el certificado. Esta EKU obliga a que la firma expire independientemente de si la firma tiene la marca de tiempo.

/e

Establece la fecha de expiración del certificado. Proporcione un valor para el parámetro expirationDate en el formato mm/dd/aaaa. Se recomienda elegir una fecha de expiración solo siempre y cuando sea necesario para las pruebas, normalmente menos de un año. Esta fecha de expiración junto con la EKU de firma de duración puede ayudar a limitar la ventana en la que el certificado se puede poner en peligro y usarse incorrectamente.

Para obtener más información sobre otras opciones, consulta MakeCert.

Paso 3: Crear un archivo de intercambio de información personal (.pfx) mediante Pvk2Pfx.exe

Use la utilidad Pvk2Pfx para convertir los archivos .pvk y . cer creados en un archivo .pfx que puede usar con SignTool para firmar un paquete de aplicación:

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]

Los archivos MyKey.pvk y MyKey.cer son los mismos que MakeCert.exe creados en el paso anterior. Con el parámetro /po opcional, puede especificar una contraseña diferente para el archivo .pfx resultante; de lo contrario, .pfx tiene la misma contraseña que MyKey.pvk.

Para obtener más información sobre otras opciones, consulta Pvk2Pfx.

Observaciones

Después de crear el archivo .pfx, puede usar el archivo con SignTool para firmar un paquete de aplicación. Para obtener más información, consulta Cómo firmar un paquete de aplicación mediante SignTool. Sin embargo, el equipo local todavía no confía en el certificado para la implementación de paquetes de aplicaciones hasta que lo instale en el almacén de certificados de confianza del equipo local. Puede usar Certutil.exe, que viene con Windows.

Para instalar certificados con WindowsCertutil.exe

  1. Ejecute Cmd.exe como administrador.

  2. Ejecute este comando:

    Certutil -addStore TrustedPeople MyKey.cer
    

Se recomienda quitar los certificados si ya no están en uso. En el mismo símbolo del sistema de administrador, ejecute este comando:

Certutil -delStore TrustedPeople certID

CertID es el número de serie del certificado. Ejecute este comando para determinar el número de serie del certificado:

Certutil -store TrustedPeople

Consideraciones sobre la seguridad

Al agregar un certificado a los almacenes de certificados de equipo local, afecta a la confianza de certificado de todos los usuarios del equipo. Se recomienda instalar los certificados de firma de código que desee para probar paquetes de aplicaciones en el almacén de certificados de Personas de confianza. Quite rápidamente esos certificados cuando ya no sean necesarios, para evitar que se usen para poner en peligro la confianza del sistema.

Muestras

Creación de un ejemplo de paquete de aplicación

Conceptos

Procedimientos recomendados de firma de código

How to sign an app package using SignTool (Cómo firmar un paquete de la aplicación con SignTool)

Firma de un paquete de la aplicación