Firma de paquetes con Azure Key Vault

En la versión 17.8 de Visual Studio 2022 Preview 2 y posteriores, puede firmar los paquetes de la aplicación de escritorio y UWP con un certificado de Azure Key Vault. Esta herramienta envía el resumen del paquete de la aplicación (hash) a Azure Key Vault para la firma criptográfica con el certificado elegido. A continuación, el hash firmado se devuelve y se adjunta al paquete localmente.

Importante

Este proceso es seguro. La clave privada del certificado nunca abandona Azure Key Vault.

Requisitos previos

  • Una cuenta de Azure. Si aún no tiene una cuenta de Azure, comience aquí.
  • Una instancia de Azure Key Vault. Para más información, consulte Creación de un almacén.
  • Un certificado de firma de paquetes válido importado en Azure Key Vault. El certificado predeterminado generado por Azure Key Vault no funcionará para la firma de código. Para obtener más información sobre cómo crear un certificado de firma de paquetes, vea Crear un certificado para la firma de paquetes.

Importación de un certificado en Key Vault

Agregar un certificado a Key Vault es muy sencillo. En este ejemplo, se agrega un certificado de firma de código UWP válido denominado UwpSigningCert.pfx.

  1. En las páginas de propiedades de Key Vault, seleccione Certificados.
  2. Haga clic en Generar o Importar.
  3. En la pantalla Crear un certificado, elija los siguientes valores:
    • Método de creación de certificados: Importación.
    • Nombre del certificado: UwpSigningCert
    • Cargar archivo de certificado: UwpSigningCert.pfx
    • Certificado de descifrado: si el certificado está protegido con contraseña, escríbala en el campo Contraseña.
  4. Haga clic en Crear.

Nota:

Windows no confiará en este certificado autofirmado a menos que un administrador lo haya importado y haya indicado que es confianza. Mantenga todos los certificados protegidos, incluidos los certificados autofirmados.

Configure las directivas de acceso para su instancia de Key Vault

Puede controlar quién tiene acceso al contenido de su instancia de Key Vault mediante directivas de acceso. Las directivas de acceso de Key Vault conceden permisos independientes para claves, secretos y certificados. Puede conceder acceso a un usuario únicamente para las claves, pero no para los secretos. Los permisos de acceso para claves, secretos y certificados se administran en el nivel de almacén. Para obtener más información, consulte Seguridad de Azure Key Vault.

Nota:

Cuando se crea una instancia de Key Vault en una suscripción de Azure, esta se asocia automáticamente con el inquilino de Azure Active Directory de la suscripción. Cualquier persona que intente administrar o recuperar contenido de una instancia de Key Vault debe estar autenticada por Azure AD.

  1. En las páginas de propiedades de Key Vault, seleccione Directivas de acceso.
  2. Seleccione + Agregar directiva de acceso.
  3. Haga clic en el menú desplegable Permisos de los certificados y marque las casillas para Obtener y Enumerar en Operaciones de administración de certificados.
  4. Haga clic en el menú desplegable Permisos de los secretos y marque las casillas de Obtener y Lista en Operaciones de administración de certificados.
  5. Haga clic en Seleccionar la entidad de seguridad, busque el usuario al que va a conceder acceso y haga clic en Seleccionar.
  6. Haga clic en Agregar.
  7. Para asegurarse de guardar los cambios, haga clic en Guardar.

Nota:

No se recomienda conceder a los usuarios acceso directo a un almacén de claves. Lo ideal es que los usuarios se agreguen a un grupo de Azure AD al que se haya concedido acceso al almacén de claves.

Selección de un certificado de Key Vault en Visual Studio

El asistente para crear paquetes de aplicaciones en Visual Studio le permite elegir el certificado que se usará para firmar el paquete de la aplicación. Puede elegir el certificado de firma de paquetes a través de Azure Key Vault. Debe proporcionar el URI de la instancia de Key Vault que contiene el certificado, y la cuenta de Microsoft autenticada en Visual Studio debe tener los permisos correctos para acceder a esta.

  1. Abra el proyecto de aplicación para UWP o el proyecto de paquete de aplicación de Windows del escritorio en Visual Studio.
  2. Seleccione Publicar ->Paquete ->Crear paquetes de aplicaciones... para abrir el asistente para crear paquetes de aplicaciones.
  3. En la página Seleccionar el método de distribución, elija Instalación de prueba.
  4. En la página Seleccionar método de firma, haga clic en Seleccione de Azure Key Vault.
  5. Cuando aparezca el cuadro de diálogo Seleccionar un certificado de Azure Key Vault, use el selector de cuenta para elegir la cuenta para la que ha configurado una directiva de acceso.
  6. Escriba el URI de Key Vault. El URI se puede encontrar en la página Información general de Key Vault y se identifica mediante por el nombre DNS.
  7. Haga clic en el botón Ver metadatos.
  8. Cuando los certificados terminen de cargarse, seleccione el deseado de la lista (por ejemplo, UwpSigningCert).
  9. Haga clic en OK.

Descifrado del certificado con una contraseña de Azure Key Vault

Si usa un certificado protegido con contraseña local (.pfx) para firmar el paquete de la aplicación, puede ser difícil administrar la contraseña usada para descifrarlo. Al importar el certificado en el asistente para crear paquetes de aplicaciones, se le pedirá que escriba manualmente la contraseña. También existe una opción para elegir la contraseña de Azure Key Vault.

  1. Abra el proyecto de aplicación para UWP o el proyecto de paquete de aplicación de Windows del escritorio en Visual Studio.
  2. Seleccione Publicar ->Paquete ->Crear paquetes de aplicaciones... para abrir el asistente para crear paquetes de aplicaciones.
  3. En la página Seleccionar el método de distribución, elija Instalación de prueba.
  4. En la página Seleccionar método de firma, haga clic en Seleccionar de archivo.
  5. Cuando aparezca el cuadro de diálogo Este certificado está protegido por contraseña, haga clic en Seleccionar contraseña de Key Vault.
  6. Cuando aparezca el cuadro de diálogo Seleccionar una contraseña de Azure Key Vault, use el selector de cuenta para elegir la cuenta para la que ha configurado una directiva de acceso.
  7. Escriba el URI de Key Vault. El URI se puede encontrar en la página Información general de Key Vault y se identifica mediante por el nombre DNS.
  8. Haga clic en el botón Ver metadatos.
  9. Cuando las contraseñas terminen de cargarse, seleccione la deseada de la lista (por ejemplo, UwpSigningCertPassword).
  10. Haga clic en OK.

Habilitación del inicio de sesión en escenarios de CI/CD

Para habilitar el inicio de sesión en escenarios de CI/CD, debe configurar la canalización para usar DefaultAzureCredential para autenticarse con Azure Key Vault. DefaultAzureCredential intentará usar la identidad del agente de canalización para acceder a Key Vault, si tiene los permisos adecuados. Como alternativa, puede especificar una entidad de servicio o una identidad administrada que se usará para la autenticación.