Firma de código (Code Signing) con Azure Key Vault
Firma de código (Code Signing) con Azure Key Vault
El certificado Code Signing para la firma del código tiene que almacenarse de forma segura. Para ello también puede utilizar fácilmente HSM en la nube, mediante el servicio Azure Key Vault. Nuestro tutorial le ayudará a instalar y configurar Azure Key Vault, pero en él encontrará también el pedido de firma que tendrá que elaborar utilizando los datos de Azure. Así que le ayudará con todo.
El certificado para Code Signing se debe almacenar de forma segura
Los certificados de firma de código sólo se emiten para dispositivos seguros: deben estar en el HSM. Esto puede adoptar dos formas: hardware tradicional, cuya adquisición es costosa, o basado en la nube, que realiza la misma tarea. Azure Key Vault, que vamos a utilizar hoy, cumple con el estándar FIPS 140-2 Nivel 2 y 3, por lo que puede utilizarse para almacenar certificados Code Singing. Para obtener más información sobre el servicio, visite la página del servicio Azure Key Vault.
Instalación y configuración de Azure Key Vault
Existe, por supuesto, una alternativa a KeyLocker. Muchos clientes utilizan los servicios en la nube de Azure que permiten un almacenamiento seguro de las claves (HSM). Con Azure Key Vault, podrá almacenar su certificado Code Signing en la nube y no tener que ocuparse de nada más.
Para firmar utilizando un certificado en Azure, debe hacer lo siguiente:
Introducir el certificado en Azure key vault (crear CSR, importar la respuesta después),
Crear la aplicación para firmar,
Añadir la aplicación en Access Policies de su Key Vault,
Instalar el software de soporte en su dispositivo.
Ahora vamos a ver los pasos individuales. Aquí están simplificados para los usuarios avanzados, si necesita tutorial detallado, puede utilizar este tutorial en GitHub. Puede ignorar la parte sobre la compra y verificación de un certificado, ya que se hace a través de nosotros.
Adquisición del certificado Code Signing y su configuración en Azure
Conseguir el certificado para firmar código es fácil. Primero comprará un certificado Code Signing con almacenamiento en el HSM en SSLmarket. Luego creará un CSR en Azure que nos enviará. Una vez emitido el certificado, le enviaremos la clave pública firmada (=certificado) y usted importará esta respuesta a Azure.
En Azure Key Vault, vaya a Certificates en el menú a la izquierda y haga clic en Create a certificate. En el formulario general, elija el nombre del certificado, luego Common name (tenga en cuenta que se muestra como el nombre del firmante) y elija Certificate issued by non-integrated CA como tipo de AC. Seleccione PEM como formato.
Crear CSR en Azure
Es necesario configurar Advanced Policy Configuration manualmente, así que haga clic en Not configured y configure lo siguiente:
Extended Key Usages (EKU) en 1.3.6.1.5.5.7.3.3
Key Size para RSA como mínimo 3072b, para EC como mínimo P-256
Clave privada como Not expordable, si se trata de un certificado CS EV
Advanced policy configuration
En la categoría In progress, failed or cancelled verá el certificado nuevo, vaya a su detalle y haga clic en Certificate Operation, lo cual abrirá otro detalle en el que podrá descargar el CSR. Después, en el mismo lugar se importará el certificado emitido a través de Merge Signed Request.
Descarga del CSR en Certificate Operation
Utilice el CSR descargado para solicitar un certificado a SSLmarket, puede utilizarlo para OV y EV Code Signing almacenado en el HSM.
Creación de la aplicación
Además de crear Key Vault en Resource Group y almacenar el certificado, es necesario crear una aplicación en Microsoft Entra ID (anteriormente Azure Active Directory) y su secret; ambos se utilizan para la autenticación y el acceso al Vault.
Vaya a la vista general de Microsoft Entra ID y seleccione App registrations en el menú a la izquierda. A continuación, introduzca un nuevo registro de aplicación, asígnele un nombre y seleccione la opción de acceso Accounts in this organizational directory only (Default Directory only - Single tenant). Después de crear la aplicación verá el Application ID que se necesita para firmar como "client ID".
Vaya al detalle de la aplicación en el menú a la izquierda a la agenda Certificates & secrets. Aquí, cree un nuevo Client secret y nómbrelo. Copie el Secret (Value) y guárdelo, porque no lo volverá a ver.
Configuración de Access Policies
Ahora tenemos que volver a Key Vault.
Primero, cambie al modelo de derechos de Azure role-based access (RBAC) a Vault access policy.
modelo de Azure Permission
En el menú a la izquierda, seleccione Access Policies y haga clic en Create. Cree la Access policy que se aplicará a la aplicación que ha creado. Como mínimo, se requieren los siguientes permisos:
Key permissions - Get, List
Secret permissions - Get, List
Certificate permissions - Get, List
Cryptographic Operations - Verify, Sign
Seleccionará la aplicación en el segundo paso y podrá buscarla por su nombre.
Azure - Create Acess Policy
Eso es todo lo que necesita configurar en la interfaz de Azure.
.net ASP.NET Core Runtime 6.0.2, Windows x64; download
Azure SignTool, instale con cmd: dotnet tool install --global AzureSignTool
¡Enhorabuena!, ahora puede utilizar Azure SignTool para firmar código utilizando un certificado almacenado en Key Vault.
Firmar con el certificado en Azure Key Vault
Ahora que todo está listo para firmar, lo más importante es tener toda la información que necesitamos para la orden de firma. Tiene el siguiente aspecto:
kvu es el URL Azure Key Vault. Podrá encontrarlo en la página principal como DNS Name.
kvi es el application id Azure app, que ha instalado.
kvc es el friendly name del certificado que quiere utilizar. Usted eligió esa denominación.
kvs es el client secret, que ha generado para la aplicación.
tr es el URL timestamp del servidor. Asegúrese de utilizar la marca de tiempo para garantizar que la firma sea de confianza incluso después de que caduque el certificado.
v determina la situación del archivo que está firmando.
Todo lo anterior se puede encontrar en la interfaz de Azure.
Avenida de Europa 26, EDIFICIO ÁTICA 5, 2ª planta 28224 Pozuelo de Alarcón, Madrid
N.º de registro: 49437381 NIF: CZ49437381
Estimado visitante, pulsionando en el botón ESTOY DE ACUERDO nos otorga consentimiento a nosotros y a nuestros socios para utilizar cookies para objetivos imprescindibles, analíticos y mercadotécnicos en este dispositivo. Mediante la opción Configuración puede elegir los grupos de cookies que está permitido procesar, o cuyo procesamiento eventualmente se puede prohibir por completo. Las cookies siempre son guardadas, para mantener la funcionalidad de la presentación web.
En esta ventana puede elegir las categorías de cookies según sus propias preferencias.
Estas cookies garantizan un funcionamiento impecable de su sitio web. Permiten por ejemplo introducir un servicio en el pedido, guardar los datos con respecto a la seguridad del sitio web, acceder al sitio web y otros. No es posible desactivar las cookies imprescindibles puesto que un funcionamiento correcto del sitio web se vería afectado.
Las cookies preferenciales permiten que el sitio web recuerde una información que cambia el comportamiento o forma del sitio web. Se trata por ejemplo de una lengua preferida o una región en que se encuentra.
Gracias a herramientas como por ejemplo Google analytics podemos ver cómo utiliza el sitio web, de qué fuentes y tecnologías. A partir de estos datos podemos perfeccionar constantemente el sitio web, para que sea lo más agradable para usted. Todos los datos son anonimizados, así pues no podemos identificar usuarios concretos.
Junto con las herramientas de terceros podemos mostrar la publicidad preferida por usted en las redes de socios justo según sus intereses. En caso de un desacuerdo es altamente probable que no se tengan en cuenta sus intereses y preferencias y la publicidad se le mostrará globalmente. Todos los perfiles de sus intereses son sudonimizados y gracias a ello no es posible identificar directamente su persona.