Firma de código en Windows
La firma de código es obligatoria en Windows para permitir que tu aplicación aparezca listada en la Microsoft Store y para evitar una advertencia de SmartScreen de que tu aplicación no es de confianza y no se puede iniciar cuando se descarga desde el navegador.
No se requiere para ejecutar tu aplicación en Windows, siempre que tu usuario final esté de acuerdo con ignorar la advertencia de SmartScreen o tu usuario no realice la descarga a través del navegador. Esta guía cubre la firma a través de certificados OV (Validación de Organización) y Azure Key Vault. Si utilizas cualquier otro mecanismo de firma no documentado aquí, como certificados EV (Validación Extendida), consulta la documentación del emisor de tu certificado y dirígete a la sección del comando de firma personalizado.
Certificados OV
Sección titulada “Certificados OV”Requisitos previos
Sección titulada “Requisitos previos”- Windows: probablemente puedas usar otras plataformas, pero este tutorial utiliza características nativas de PowerShell.
- Una aplicación Tauri funcional
- Code signing certificate - you can acquire one of these on services listed in Documentación de Microsoft. There are likely additional authorities for non-EV certificates than included in that list, please compare them yourself and choose one at your own risk.
- ¡Por favor, asegúrate de obtener un certificado de firma de código, los certificados SSL no funcionan!
Primeros pasos
Sección titulada «Primeros pasos»Hay algunas cosas que debemos hacer para preparar Windows para la firma de código. Esto incluye convertir nuestro certificado a un formato específico, instalar este certificado y decodificar la información requerida del certificado.
-
Convierte tu
Sección titulada “Convierte tu .cer a .pfx”.cera.pfx-
Necesitarás lo siguiente:
- archivo de certificado (el mío es
cert.cer) - archivo de clave privada (el mío es
private-key.key)
- archivo de certificado (el mío es
-
Abre un símbolo del sistema y cámbiate a tu directorio actual usando
cd Documents/Certs -
Convierte tu
.cera un.pfxusandoopenssl pkcs12 -export -in cert.cer -inkey private-key.key -out certificate.pfx -
Se te solicitará ingresar una contraseña de exportación ¡NO LA OLVIDES!
-
-
Importa tu archivo
Sección titulada “Importa tu archivo .pfx en el almacén de claves (keystore).”.pfxen el almacén de claves (keystore).-
Ahora necesitamos importar nuestro archivo
.pfx. -
Asigna tu contraseña de exportación a una variable usando
$WINDOWS_PFX_PASSWORD = 'MYPASSWORD' -
Ahora importa el certificado usando
Import-PfxCertificate -FilePath certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $WINDOWS_PFX_PASSWORD -Force -AsPlainText)
-
-
Preparar Variables
Sección titulada “Preparar Variables”-
Inicio ➡️
certmgr.mscpara abrir la gestión de certificados personales, luego abre Personal/Certificados. -
Busca el certificado que acabamos de importar y haz doble clic en él, luego haz clic en la pestaña Detalles.
-
El algoritmo de hash de firma será nuestro
digestAlgorithm. (Pista: es probable que seasha256) -
Desplázate hacia abajo hasta Huella digital (Thumbprint). Debería haber un valor como
A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0. Esta es nuestracertificateThumbprint. -
También necesitamos una URL de marca de tiempo (timestamp URL); se trata de un servidor de hora utilizado para verificar la hora de la firma del certificado. Estoy usando
http://timestamp.comodoca.com, pero de quien hayas obtenido tu certificado probablemente también tenga uno.
-
Prepara el archivo tauri.conf.json
Sección titulada “Prepara el archivo tauri.conf.json”-
Ahora que tenemos nuestra
certificateThumbprint,digestAlgorithmytimestampUrl, abriremos eltauri.conf.json. -
En el
tauri.conf.jsonbuscarás la seccióntauri->bundle->windows. Hay tres variables para la información que hemos capturado. Complétala como se muestra a continuación.
"windows": { "certificateThumbprint": "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0", "digestAlgorithm": "sha256", "timestampUrl": "http://timestamp.comodoca.com"}-
Guarda y ejecuta
tauri build -
En la salida de la consola, deberías ver la siguiente salida.
info: signing appinfo: running signtool "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0\\x64\\signtool.exe"info: "Done Adding Additional Store\r\nSuccessfully signed: APPLICATION FILE PATH HERELo cual muestra que has firmado con éxito el .exe.
¡Y eso es todo! Has configurado con éxito tu aplicación Tauri para la firma en Windows.
Firma tu aplicación con GitHub Actions.
Sección titulada “Firma tu aplicación con GitHub Actions.”También podemos crear un flujo de trabajo para firmar la aplicación con GitHub Actions.
Secretos de GitHub
Sección titulada “Secretos de GitHub”Necesitamos agregar algunos secretos de GitHub para la configuración adecuada de la GitHub Action. A estos se les puede dar el nombre que desees.
- Puedes consultar la guía de secretos encriptados sobre cómo agregar secretos de GitHub.
Los secretos que usamos son los siguientes
| Secretos de GitHub | Valor para la Variable |
|---|---|
| WINDOWS_CERTIFICATE | Versión codificada en Base64 de tu certificado .pfx, se puede hacer con este comando certutil -encode certificate.pfx base64cert.txt |
| WINDOWS_CERTIFICATE_PASSWORD | Contraseña de exportación del certificado utilizada al crear el certificado .pfx |
Modificaciones del Flujo de Trabajo
Sección titulada “Modificaciones del Flujo de Trabajo”-
Necesitamos agregar un paso en el flujo de trabajo para importar el certificado en el entorno de Windows. Este flujo de trabajo logra lo siguiente
- Asignar secretos de GitHub a variables de entorno
- Crea un nuevo directorio
certificate - Importa
WINDOWS_CERTIFICATEen tempCert.txt - Usa
certutilpara decodificar el tempCert.txt de base64 a un archivo.pfx. - Eliminar tempCert.txt
- Importa el archivo
.pfxen el almacén de Certificados de Windows y convierte laWINDOWS_CERTIFICATE_PASSWORDa una cadena segura para usarla en el comando de importación.
-
Utilizaremos la plantilla de publicación de plantilla de
tauri-action.
name: 'publish'on: push: branches: - release
jobs: publish-tauri: strategy: fail-fast: false matrix: platform: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 - name: setup node uses: actions/setup-node@v1 with: node-version: 12 - name: install Rust stable uses: actions-rs/toolchain@v1 with: toolchain: stable - name: install webkit2gtk (ubuntu only) if: matrix.platform == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.0 - name: install app dependencies and build it run: yarn && yarn build - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version releaseName: 'App v__VERSION__' releaseBody: 'See the assets to download this version and install.' releaseDraft: true prerelease: false- Justo encima de
-name: install app dependencies and build itquerrás agregar el siguiente paso
- name: import windows certificate if: matrix.platform == 'windows-latest' env: WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }} WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }} run: | New-Item -ItemType directory -Path certificate Set-Content -Path certificate/tempCert.txt -Value $env:WINDOWS_CERTIFICATE certutil -decode certificate/tempCert.txt certificate/certificate.pfx Remove-Item -path certificate -include tempCert.txt Import-PfxCertificate -FilePath certificate/certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $env:WINDOWS_CERTIFICATE_PASSWORD -Force -AsPlainText)-
Guarda y haz push a tu repositorio.
-
¡Tu flujo de trabajo ahora puede importar tu certificado de Windows e importarlo en el runner de GitHub, permitiendo la firma de código automatizada!
Azure Key Vault
Sección titulada “Azure Key Vault”Puedes firmar los ejecutables de Windows proporcionando un certificado y credenciales de Azure Key Vault.
- Key Vault
En el Portal de Azure navega hasta el servicio Key vaults para crear un nuevo key vault haciendo clic en el botón “Crear”. Recuerda el “Nombre del key vault”, ya que necesitarás esa información para configurar la URL del certificado.
- Certificado
Después de crear un key vault, selecciónalo y ve a la página “Objetos > Certificados” para crear un nuevo certificado y haz clic en el botón “Generar/Importar”. Recuerda el “Nombre del certificado”, ya que necesitarás esa información para configurar la URL del certificado.
- Configuración de Tauri
relic utiliza un archivo de configuración para determinar qué clave de firma debe usar. Para Azure Key Vault también necesitas la URL del certificado.
Crea un archivo relic.conf en la carpeta src-tauri y configura relic para que use tu certificado:
tokens: azure: type: azure
keys: azure: token: azure id: https://\<KEY_VAULT_NAME\>.vault.azure.net/certificates/\<CERTIFICATE_NAME\>Ten en cuenta que debes reemplazar <KEY_VAULT_NAME> y <CERTIFICATE_NAME> con los nombres apropiados de los pasos anteriores.
Para configurar Tauri para que use tu configuración de Azure Key Vault para la firma, cambia el valor de configuración bundle > windows > signCommand:
{ "bundle": { "windows": { "signCommand": "relic sign --file %1 --key azure --config relic.conf" } }}- Credenciales
relic debe autenticarse con Azure para poder cargar el certificado.
En la página de inicio del portal de Azure, ve al servicio “Microsoft Entra ID” y dirígete a la página “Administrar > Registros de aplicaciones”.
Haz clic en “Nuevo registro” para crear una nueva aplicación. Después de crear la aplicación, serás redirigido a la página de detalles de la aplicación donde podrás ver los valores de “ID de la aplicación (cliente)” e “ID del directorio (inquilino)”.
Establece estos ID en las variables de entorno AZURE_CLIENT_ID y AZURE_TENANT_ID respectivamente.
En la página “Administrar > Certificados y secretos”, haz clic en el botón “Nuevo secreto de cliente” y establece el texto de la columna “Valor” como la variable de entorno AZURE_CLIENT_SECRET.
Después de configurar todas las credenciales, regresa a la página de tu key vault y navega a la página “Control de acceso (IAM)”. Debes asignar los roles “Usuario de certificado de Key Vault” y “Usuario de criptografía de Key Vault” a tu aplicación recién creada.
¡Después de configurar todas estas variables, ejecutar tauri build producirá instaladores de Windows firmados!
Comando de firma personalizado
Sección titulada “Comando de firma personalizado”En la documentación de Azure Key Vault anterior, utilizamos una potente configuración de firma de Windows en Tauri para forzar a la CLI de Tauri a usar un comando de shell especial para firmar ejecutables de instaladores de Windows. La opción de configuración bundle > windows > signCommand se puede utilizar con cualquier herramienta de firma de código que pueda firmar ejecutables de Windows.
Azure Artifact Signing
Sección titulada “Azure Artifact Signing”Puedes firmar los ejecutables de Windows proporcionando un certificado y credenciales de Azure Artifact Signing (anteriormente llamado Azure Code Signing/Azure Trusted Signing). Si aún no tienes una cuenta de Azure Artifact Signing, puedes seguir este tutorial.
Requisitos previos
Sección titulada “Requisitos previos”Si quieres firmar con GitHub Actions, todo debería estar instalado.
- Cuenta de Artifact Signing y permisos configurados
- .NET (se recomienda .NET 8)
- Azure CLI
- Signtool (se recomienda SDK de Windows 11 10.0.26100.0 o posterior)
Primeros pasos
Sección titulada «Primeros pasos»Necesitas instalar artifact-signing-cli y configurar tus variables de entorno.
-
Instalar artifact-signing-cli
Sección titulada “Instalar artifact-signing-cli”cargo install artifact-signing-cli
-
Configurar variables de entorno
Sección titulada “Configurar variables de entorno”- artifact-signing-cli needs the following environment variables to be set, don’t forget to add these as Github Actions secretos:
AZURE_CLIENT_ID: El ID de cliente de tu Registro de AplicaciónAZURE_CLIENT_SECRET: El secreto de cliente del Registro de AplicaciónAZURE_TENANT_ID: El ID de inquilino de tu directorio de Azure, también puedes obtenerlo desde tu Registro de Aplicación
- artifact-signing-cli needs the following environment variables to be set, don’t forget to add these as Github Actions secretos:
-
Modifica tu archivo
Sección titulada “Modifica tu archivo tauri.conf.json”tauri.conf.json- You can modify your
tauri.conf.jsonor you can create a specific config file for Windows. Replace the URL and the certificate name with your own values.- -e: El endpoint de tu cuenta de Azure Artifact Signing
- -a: El nombre de tu cuenta de Azure Artifact Signing
- -c: El nombre del perfil de certificado dentro de tu cuenta de Azure Artifact Signing
- -d: La descripción del contenido firmado (opcional). Al firmar un instalador .msi, esta descripción aparecerá como el nombre del instalador en la solicitud de UAC o será una cadena aleatoria de caracteres si no se establece.
tauri.conf.json {"bundle": {"windows": {"signCommand": "artifact-signing-cli -e https://wus2.codesigning.azure.net -a MyAccount -c MyProfile -d MyApp %1"}}} - You can modify your
© 2026 Colaboradores de Tauri. CC-BY / MIT