Firmar un paquete de aplicación (aplicaciones de la Tienda Windows)

De forma predeterminada, todos los paquetes de aplicación que Visual Studio genera se firman con un certificado de prueba. Cuando creas un paquete, Visual Studio genera una carpeta que incluye el propio paquete firmado. El archivo de certificado (.cer) que se incluye en esa carpeta contiene la clave pública que se usa para firmar el paquete. Esta clave debe estar instalado en el equipo antes de instalar el paquete de la aplicación.

Generar el certificado de prueba

El archivo de certificado (.pfx) se genera y agrega a tu proyecto cuando este se crea.

El campo Asunto del certificado se establece según el atributo Publisher del elemento Identity del archivo del manifiesto de origen (.appxmanifest).

  • Si creas un paquete local, el valor predeterminado del atributo Publisher es tu nombre de usuario.

  • Si creas un paquete para Tienda Windows o le asocias tu aplicación, el atributo Publisher se establece en el Publisher ID que se obtiene a partir de tu cuenta de desarrollador en Tienda cuando inicias sesión durante la creación del paquete.

El proceso de creación de certificados también agrega una propiedad al archivo de proyecto:

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

El valor de PackageCertificateKeyFile es la ruta de acceso relativa o la ruta de acceso completa del propio certificado de origen.

Si falta el certificado, se creará si el paquete se compila en el menú Tienda pero no si el paquete se compila en el símbolo del sistema. Cuando Visual Studio crea un certificado, se establecen los valores de las propiedades siguientes:

  • El valor de la extensión Restricciones básicas se establece en Tipo de asunto=Entidad final.

    Nota

    La extensión Restricciones básicas identifica si el asunto del certificado es una entidad de certificación (CA). Esta extensión también define la profundidad máxima de las rutas de acceso de las certificaciones que incluyen este certificado. La propiedad Restricciones básicas especifica si la clave pública certificada puede comprobar firmas de certificados.

  • El valor de la extensión Uso mejorado de clave (EKU) se establece en Firma de código.

Los certificados son válidos durante un año a partir de la fecha en que se crearon. Para obtener información sobre cómo renovar un certificado, consulta Renovar un certificado.

Sugerencia

Si aparece un error similar a "El certificado seleccionado no es válido para firmar porque expiró o tiene algún otro problema" durante el proceso de firma, usa el diseñador de manifiestos para crear un certificado de prueba que reemplace el antiguo.

Validar certificados

Durante el empaquetado, Visual Studio valida el certificado especificado de las maneras siguientes:

  • Comprueba la presencia de la extensión Restricciones básicas y su valor, que debe ser Tipo de asunto=Entidad final o sin especificar.

  • Comprueba el valor de la propiedad Uso mejorado de clave, que debe contener Firma de código y puede que también contenga Firma de vigencia. No se permite cualquier otro EKU.

  • Comprueba si el valor de la propiedad KeyUsage (KU), que debe ser Unset o DigitalSignature.

  • Comprueba la existencia de una clave privada.

  • Comprueba si el certificado está activo, no ha expirado y no se ha revocado.

En determinados escenarios, es posible que necesites controlar de forma más estrecha que el certificado se usa, y, por consiguiente, que las comprobaciones de validación se ejecutan para el certificado. La propiedad EnableSigningChecks de MSBuild controla cuál de las anteriores comprobaciones de certificado se realizan. Si estableces la propiedad en True (valor predeterminado), Visual Studio ejecuta todas las comprobaciones. Si estableces la propiedad en False, Visual Studio realiza las únicas tareas siguientes:

  • Comprueba si existe una clave privada.

  • Comprueba si el valor de la propiedad Uso mejorado de clave contiene Firma de código.

  • Comprueba si el certificado está activo, no ha expirado y no se ha revocado.

Nota

Cuando EnableSignignChecks se establece en False, es posible que el script de PowerShell no funcione porque el certificado personalizado podría no cumplir todas las reglas que se requieren para que el script instale el paquete de la aplicación. Para obtener más información, consulta Compartir un paquete de aplicación localmente (aplicaciones de la Tienda Windows).

Elegir un certificado alternativo

Visual Studio crea automáticamente un certificado cuando se crea el proyecto, pero también puede crear su propio certificado o usar un certificado existente para firmar un paquete.

Para crear o usar un certificado alternativo

  1. En el Explorador de soluciones, abre el menú contextual para el archivo .appxmanifest, elige Abrir con y, a continuación, Diseñador de manifiestos de aplicaciones.

  2. En Diseñador de manifiestos de aplicaciones, elige la pestaña Empaquetado y el botón Elegir certificado.

  3. En el cuadro de diálogo Elegir certificado, expande la lista Configurar certificado y después elige una de las opciones siguientes:

    • Elegir en almacén de certificados
      Elige uno de los certificados Personal en el almacén de certificados del sistema operativo.

    • Seleccionar del archivo
      Elige un archivo de certificado existente del sistema de archivos.

    • Crear certificado de prueba
      Crea un certificado con un Publisher ID a tu elección. También puedes crear una contraseña.

Con cualquier opción que elijas, se agregará un archivo de certificado al proyecto y a las propiedades del proyecto PackageCertificateThumbprint y PackageCertificateKeyFile se actualizan como corresponde.

Nota

Si aparece un error similar a "El certificado seleccionado no es válido para firmar porque expiró o tiene algún otro problema" durante el proceso de firma, usa el diseñador de manifiestos para crear un certificado personalizado que reemplace el antiguo.

Renovar un certificado

El certificado predeterminado generado por Visual Studio expira un año después de la fecha en que se creó el certificado. Antes de que expire el certificado, debes usar el diseñador de manifiestos de aplicaciones para volver a generar el certificado o, según se describe en el procedimiento anterior, suministrar un certificado diferente válido.

Para renovar el certificado

  1. En el Explorador de soluciones, abre el menú contextual para el archivo .appxmanifest, elige Abrir con y, a continuación, Diseñador de manifiestos de aplicaciones.

  2. En Diseñador de manifiestos de aplicaciones, elige la pestaña Empaquetado y el botón Elegir certificado.

  3. En el cuadro de diálogo Elegir certificado, expande la lista de Configurar certificado y, a continuación, elige Crear certificado de prueba.

  4. En el cuadro de diálogo de Crear certificado de prueba, haz clic en el botón Aceptar.

    Visual Studio vuelve a generar el certificado con una nueva fecha de expiración.

Eliminar o exportar un certificado

Quizás desees eliminar o exportar un certificado expirado o que esté en peligro, dañado o se haya reemplazado por otro certificado. Para obtener información sobre cómo eliminar o exportar un certificado, consulta el tema sobre Cómo usar la consola Certificados.

Modificar aplicaciones instaladas

Si se modifica algún archivo de un paquete instalado, la comprobación de la firma puede impedir que la aplicación se inicie. Para modificar un paquete, realiza los cambios en los archivos de código fuente originales mediante una licencia de desarrollador y después vuelve a implementar el paquete modificado. Para obtener más información sobre las licencias de desarrollador, consulta Obtener una licencia de desarrollador (aplicaciones de la Tienda Windows).

Vea también

Conceptos

Invalidar un manifiesto del paquete (aplicaciones de la Tienda Windows)

Empaquetar la aplicación de la Tienda Windows mediante Visual Studio 2012