Configuración de integraciones de firma para usar la Firma de confianza
La firma de confianza admite actualmente las siguientes integraciones de firma:
- SignTool
- Acciones de GitHub
- Tareas de Azure DevOps
- PowerShell para Authenticode
- Azure PowerShell (directiva de CI de App control para empresas)
- SDK de firma de confianza
Trabajamos constantemente para admitir más integraciones de firma. Actualizamos la lista de integración admitida cuando hay más integraciones disponibles.
En este artículo se explica cómo configurar cada integración de firma compatible con Firma de confianza.
Configuración de SignTool para usar la Firma de confianza
En esta sección se explica cómo configurar SignTool para usarlo con la firma de confianza.
Requisitos previos
Para completar los pasos de este artículo, necesitará lo siguiente:
- Una cuenta de firma de confianza, validación de identidades y perfil de certificado.
- Asignación individual o de grupo del rol Firmante de perfil de certificado de firma de confianza.
- Actualización de Windows 10 versión 1809/octubre de 2018 o posterior, Windows 11 (todas las versiones) o Windows Server 2016 o posterior
Instalador de herramientas de cliente de firma de confianza
Herramientas de cliente de firma de confianza para SignTool.exe es un complemento de biblioteca que requiere los siguientes componentes:
- Windows SDK SignTool.exe (versión mínima: 10.0.2261.755)
- .NET 8 Runtime
- Microsoft Visual C++ Redistributable
- Dlib del cliente de firma de confianza
Para simplificar esta configuración, hay un paquete de instalador MSI que está disponible para su descarga junto con un Setup.exe.
Instalación desde el Administrador de paquetes de Windows
El instalador herramientas de cliente de firma de confianza está disponible en el Administrador de paquetes de Windows (WinGet).
Nota:
winget está disponible de forma predeterminada en Windows 11 y versiones modernas de Windows 10. Sin embargo, es posible que no esté instalado en versiones anteriores de Windows. Consulte la documentación de winget para obtener instrucciones de instalación.
winget install -e --id Microsoft.Azure.TrustedSigningClientTools
La opción -e
es asegurarse de que el paquete oficial herramientas de cliente de firma de confianza está instalado. Este comando instala la versión más reciente de forma predeterminada. Para especificar una versión, agregue a -v <version>
con la versión que desee al comando.
Instalación desde PowerShell
Para instalar las herramientas de cliente de firma de confianza mediante PowerShell, inicie PowerShell como administrador y ejecute el siguiente comando:
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri "https://download.microsoft.com/download/6d9cb638-4d5f-438d-9f21-23f0f4405944/TrustedSigningClientTools.msi" -OutFile .\TrustedSigningClientTools.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I TrustedSigningClientTools.msi /quiet'; Remove-Item .\TrustedSigningClientTools.msi
Resumen de los pasos de configuración manual
- Descargue e instale SignTool.
- Descarga e instalación del runtime de .NET 8.
- Descargar e instalar el paquete de Firma de confianza dlib.
- Crear un archivo JSON para proporcionar la cuenta de firma de confianza y un perfil de certificado.
- Para firmar un archivo, invoque SignTool.
Descargar e instalar SignTool
La firma de confianza requiere el uso de SignTool para firmar archivos en Windows, específicamente la versión de SignTool.exe que se encuentra en Windows 10 SDK 10.0.2261.755 o posterior. Puede instalar el SDK completo de Windows 10 a través del Instalador de Visual Studio o descargar e instalarlo por separado.
Para descargar e instalar SignTool:
Descargue la versión más reciente de SignTool y Windows Build Tools NuGet en Microsoft.Windows.SDK.BuildTools.
Instale SignTool desde Windows SDK (versión mínima: 10.0.2261.755, 20348 la versión de Windows SDK no es compatible con nuestra dlib).
Otra opción es usar el archivo nuget.exe más reciente para descargar y extraer el paquete de herramientas de compilación de Windows SDK NuGet más reciente mediante PowerShell:
Descargue nuget.exe ejecutando el siguiente comando de descarga:
Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe
Descargue y extraiga el paquete NuGet de herramientas de compilación de Windows SDK mediante la ejecución del siguiente comando de instalación:
.\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
Descarga e instalación del runtime de NET 8.0
Los componentes que SignTool usa para interactuar con la firma de confianza requieren la instalación de Runtime de .NET 8.0 Solo necesita el entorno de ejecución principal de .NET 8.0. Asegúrese de instalar el entorno de ejecución de plataforma correcto en función de la versión de SignTool que quiera ejecutar. O bien, puede simplemente instalar ambos
Por ejemplo:
- Para x64 SignTool.exe: Descargar Runtime de .NET 8.0: del instalador de Windows x64
- Para la SignTool.exe x86: Descargar Runtime de .NET 8.0: del instalador de Windows x86
Descarga e instalación del paquete dlib de Firma de confianza
Para descargar e instalar el paquete dlib firma de confianza (un archivo de .zip):
Descargue el Paquete Dlib de firma de confianza.
Extraiga el contenido comprimido de la biblioteca de Firma de confianza e instálelo en el nodo de firma que prefiera. El nodo debe ser el nodo donde se usa SignTool para firmar archivos.
Otra opción es descargar el paquete Trusted Signing dlib a través de NuGet de forma similar al paquete NuGet de herramientas de compilación del SDK de Windows:
.\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
Cree un archivo JSON
Para firmar mediante la firma de confianza, debe proporcionar los detalles de la cuenta de firma de confianza y el perfil de certificado que se crearon como parte de los requisitos previos. Para proporcionar esta información sobre un archivo JSON, complete estos pasos:
Cree un archivo JSON (por ejemplo, metadata.json).
Agregue los valores específicos de la cuenta de Firma de confianza y el perfil de certificado al archivo JSON. Para obtener más información, consulte el archivo metadata.sample.json que se incluye en el paquete Trusted Signing dlib o use el ejemplo siguiente:
{ "Endpoint": "<Trusted Signing account endpoint>", "CodeSigningAccountName": "<Trusted Signing account name>", "CertificateProfileName": "<Certificate profile name>", "CorrelationId": "<Optional CorrelationId value>" }
El valor del URI de
"Endpoint"
debe ser un identificador URI que se alinee con la región donde ha creado la cuenta de firma de confianza y el perfil de certificado al configurar estos recursos. En la tabla se muestran las regiones y sus URI correspondientes.Region Campos de clase de región Valor del URI del punto de conexión Este de EE. UU. EastUS https://eus.codesigning.azure.net
Oeste de EE. UU. 3 [1] WestUS3 https://wus3.codesigning.azure.net
Centro-Oeste de EE. UU. WestCentralUS https://wcus.codesigning.azure.net
Oeste de EE. UU. 2 WestUS2 https://wus2.codesigning.azure.net
Norte de Europa Norte de Europa https://neu.codesigning.azure.net
Oeste de Europa Oeste de Europa https://weu.codesigning.azure.net
1 El campo opcional
"CorrelationId"
es un valor de cadena opaco que puede proporcionar para correlacionar las solicitudes de signo con sus propios flujos de trabajo, como identificadores de compilación o nombres de máquina.
Autenticación
Esta tarea realiza la autenticación mediante DefaultAzureCredential, que intenta una serie de métodos de autenticación en orden. Si se produce un error en un método, intenta el siguiente hasta que la autenticación se realice correctamente.
Cada método de autenticación se puede deshabilitar individualmente para evitar intentos innecesarios.
Por ejemplo, al autenticarse con EnvironmentCredential específicamente, deshabilite las demás credenciales con las siguientes entradas:
ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true
Del mismo modo, si se usa por ejemplo una AzureCliCredential, queremos omitir el intento de autenticación con los varios métodos que vienen antes de él en orden.
Usar SignTool para firmar un archivo
Para invocar SignTool para firmar un archivo:
Tome nota de dónde se encuentran las herramientas de compilación del SDK, el Azure.CodeSigning.Dlib, y el archivo de metadata.json (de las secciones anteriores).
Reemplace los marcadores de posición de la ruta de acceso siguiente por los valores específicos que anotó en el paso 1:
& "<Path to SDK bin folder>\x64\signtool.exe" sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib "<Path to Trusted Signing dlib bin folder>\x64\Azure.CodeSigning.Dlib.dll" /dmdf "<Path to metadata file>\metadata.json" <File to sign>
- Tanto la versión x86 como la x64 de SignTool se incluyen en Windows SDK. Asegúrese de hacer referencia a la versión correspondiente de Azure.CodeSigning.Dlib.dll. El ejemplo anterior es para la versión x64 de SignTool.
- Asegúrese de usar la versión recomendada de Windows SDK en las dependencias que aparecen al principio de este artículo o el archivo dlib no funcionará.
Los certificados de firma de confianza tienen una validez de tres días, por lo que la marca de tiempo es fundamental para la validación correcta continua de una firma más allá de ese período de validez de tres días. La firma de confianza recomienda el uso de la entidad de marca de tiempo RSA pública de Microsoft de firma de confianza: http://timestamp.acs.microsoft.com/
.
Uso de otras integraciones de firma con firma de confianza
También puede usar las siguientes herramientas o plataformas para configurar integraciones de registro con firma de confianza.
Acciones de GitHub: para obtener información sobre cómo usar una acción de GitHub para la firma de confianza, consulte Firma de confianza: acciones en Marketplace de GitHub. Complete las instrucciones para configurar y usar una acción de GitHub.
Tarea de Azure DevOps: para usar la tarea Firma de confianza de Azure DevOps, consulte Firma de confianza en Visual Studio Marketplace. Complete las instrucciones para la instalación.
PowerShell para Authenticode: para usar PowerShell para la firma de confianza, consulte Firma de confianza en la Galería de PowerShell para instalar el módulo de PowerShell.
Azure PowerShell: directiva de CI de Control de aplicaciones para empresas: para usar la firma de directivas de Firma de confianza para la integridad de código (CI), siga las instrucciones de Firmar una nueva directiva de CI y consulte Módulo Az.CodeSigning de PowerShell.
SDK de firma de confianza: para crear su propia integración de firma, puede usar nuestro SDK de Firma de confianza de código abierto.
Azure.Developer.TrustedSigning.CryptoProvider: simplifica la integración del servicio con un proveedor criptográfico de .NET que abstrae la integración del punto de conexión de servicio del consumidor.