Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta guía le guía a través de la firma de un paquete MSIX para cada fase de desarrollo, desde pruebas locales a través de la distribución de producción. Para obtener una comparación de las opciones y los costos de firma, consulte Introducción a la firma de un paquete MSIX.
Elección de un enfoque de firma
| Etapa | Enfoque recomendado | versión de Windows |
|---|---|---|
| Desarrollo y pruebas locales | CLI de WinApp (certificado autofirmado) | Windows 10 y versiones posteriores |
| Distribuir a evaluadores (carga lateral) | Certificado autofirmado con el proceso de confianza del certificado | Windows 10 y versiones posteriores |
| Distribución de producción | Firma de Artefactos de Azure (anteriormente Firma de Confianza) | Windows 10 versión 1809 y posteriores, Windows Server 2016 y versiones posteriores |
| distribución de Microsoft Store | Firmado por la Tienda al ser enviado | Todas las versiones de Windows admitidas |
Desarrollo: firma de código para pruebas locales
Para el desarrollo local, use un certificado autofirmado. Los paquetes autofirmados solo se pueden instalar en máquinas en las que el certificado es de confianza explícita; esto es intencionado y adecuado para las pruebas.
Opción A: CLI de WinApp (recomendado para proyectos nuevos)
Importante
La CLI de desarrollo de Aplicación de Windows está actualmente en public preview y requiere Windows 10 con WinGet instalado.
La CLI de WinApp controla la generación de certificados y el inicio de sesión en un solo paso.
Paso 1: Instalación de la CLI de WinApp
winget install -e --id Microsoft.WinAppCLI --source winget
Paso 2: Generación de un certificado de desarrollo autofirmado
winapp cert generate --manifest .\appxmanifest.xml --output .\devcert.pfx --install
El --manifest indicador lee el nombre del editor directamente desde appxmanifest.xml. La --install marca agrega el certificado al almacén de confianza del equipo local, por lo que puede instalar inmediatamente el paquete.
Paso 3: Firmar el paquete
winapp sign MyApp.msix --cert .\devcert.pfx
Opción B: PowerShell + SignTool (Windows 10 y versiones posteriores)
Use este enfoque si no usa la CLI de WinApp.
Paso 1: Crear un certificado autofirmado
Ejecute lo siguiente en una consola de PowerShell con permisos administrativos. El valor Subject debe coincidir exactamente con el Publisher en la appxmanifest.xml:
New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature `
-Subject "CN=MyPublisher" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") `
-FriendlyName "MyApp Dev Cert"
Anote la huella digital en la salida: la necesitará en los pasos siguientes.
Paso 2: Exportar el certificado a un archivo PFX
$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Thumbprint>" `
-FilePath .\devcert.pfx -Password $password
Paso 3: Confiar en el certificado localmente
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
-FilePath .\devcert.pfx -Password $password
Paso 4: Firmar el paquete
SignTool sign /fd SHA256 /a /f .\devcert.pfx /p "YourPassword" MyApp.msix
Para obtener el uso completo de SignTool, consulte Firmar un paquete de aplicación mediante SignTool.
Pruebas: distribuir a evaluadores con un certificado autofirmado
Para instalar un paquete MSIX autofirmado en la máquina de un evaluador, primero se debe reconocer el certificado como confiable en dicha máquina.
Nota:
En Windows 10 versión 2004 y posteriores y Windows 11, el sideloading está habilitado de forma predeterminada. En versiones anteriores de Windows 10, los evaluadores deben habilitar las aplicaciones de carga lateral en Configuración > Actualización y seguridad > Para desarrolladores.
Asigne a los evaluadores el certificado: Comparta el .pfx archivo o .cer (solo clave pública) junto con el .msix paquete.
Los evaluadores ejecutan lo siguiente en una consola de PowerShell con permisos elevados:
# If you shared a .pfx file (testers need the password)
Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
-FilePath .\devcert.pfx -Password (ConvertTo-SecureString "YourPassword" -Force -AsPlainText)
# If you shared a .cer file (public key only, no password needed)
Import-Certificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -FilePath .\devcert.cer
Después de confiar en el certificado, los testers pueden instalar el .msix haciendo doble clic.
Importante
Los certificados autofirmados solo se deben usar para las pruebas. Quítelos de las máquinas de prueba cuando ya no sean necesarias. Para una distribución amplia, use en su lugar un método de firma de confianza pública.
Producción: firma de artefactos de Azure (anteriormente Firma de confianza)
Applies to: Windows 10 versión 1809 y posteriores, Windows 11 (todas las versiones), Windows Server 2016 y versiones posteriores
Azure Firma de Artefactos es el nuevo nombre para lo que anteriormente se llamaba Firma de Confianza. El servicio es idéntico, solo el nombre ha cambiado. Es posible que todavía vea "Firma de confianza" en algunas herramientas (como la acción de GitHub azure/trusted-signing-action y el identificador de paquete winget) a medida que esas referencias se actualizan con el tiempo.
Azure Artifact Signing es la opción recomendada para la firma MSIX de producción. La reputación está vinculada a su identidad comprobada en lugar de a un certificado específico, lo que significa que la identidad del publicador crea la reputación de SmartScreen a lo largo del tiempo a medida que los usuarios instalan las aplicaciones firmadas. Consulte Firmar un paquete MSIX: descripción general para conocer los requisitos de idoneidad y la información de costos antes de configurar una cuenta.
Importante
Disponibilidad de firmas de artefactos de Azure: Organizaciones en Estados Unidos, Canadá, la Unión Europea y el Reino Unido pueden registrarse. Actualmente, los desarrolladores individuales están limitados a estados Unidos y Canadá. Si es un desarrollador individual fuera de esas regiones, use un certificado de firma de código de OV de una Autoridad de Certificación (consulte Producción: certificado de firma de código de OV a continuación).
Nota:
La firma de artefactos de Azure no proporciona confianza instantánea de SmartScreen. Al igual que los certificados OV, las aplicaciones mostrarán inicialmente una advertencia de SmartScreen hasta que la identidad del publicador genere suficiente reputación de descarga, normalmente varias semanas y cientos de instalaciones limpias. Este es el comportamiento esperado para los nuevos publicadores. Para obtener más información sobre cómo funciona la reputación de SmartScreen y qué esperar como nuevo editor, consulte reputación de SmartScreen para desarrolladores de aplicaciones de Windows.
Prerrequisitos
- Una cuenta de firma de artefactos con la validación de identidad completada y un perfil de certificado creado. Consulte la guía rápida de firma de artefactos.
- El rol Firmante de un Perfil de Certificado de Firma Confiable asignado a la identidad que se usa para firmar.
Paso 1: Instalar las herramientas del cliente para firmar artefactos
Las herramientas cliente de firma de artefactos incluyen el complemento dlib necesario, una versión compatible de SignTool y el entorno de ejecución de .NET 8. La sintaxis estándar de SignTool no funciona para la firma de artefactos sin este paquete.
winget install -e --id Microsoft.Azure.ArtifactSigningClientTools
Si WinGet no está disponible (por ejemplo, en un agente de compilación de Windows Server), instale a través de PowerShell como administrador:
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri "https://download.microsoft.com/download/70ad2c3b-761f-4aa9-a9de-e7405aa2b4c1/ArtifactSigningClientTools.msi" -OutFile .\ArtifactSigningClientTools.msi
Start-Process msiexec.exe -Wait -ArgumentList '/I ArtifactSigningClientTools.msi /quiet'
Remove-Item .\ArtifactSigningClientTools.msi
Paso 2: Creación de un archivo JSON de metadatos
Cree un archivo llamado metadata.json que contenga los detalles de su cuenta de firma de artefactos. El URI del punto de conexión debe coincidir con la región de Azure en la que creó su cuenta (encuéntrela en el portal de Azure bajo su cuenta de firma de artefactos como Cuenta URI):
{
"Endpoint": "https://<region>.codesigning.azure.net/",
"CodeSigningAccountName": "<your-account-name>",
"CertificateProfileName": "<your-certificate-profile-name>"
}
Para obtener la lista completa de URI de punto de conexión específicos de la región, consulte Integraciones de firma.
Paso 3: Autenticación
Establezca las credenciales de Azure como variables de entorno (use credenciales de registro de aplicaciones para CI/CD):
$env:AZURE_CLIENT_ID = "<your-client-id>"
$env:AZURE_TENANT_ID = "<your-tenant-id>"
$env:AZURE_CLIENT_SECRET = "<your-client-secret>"
Como alternativa, ejecute az login para realizar una firma local interactiva.
Paso 4: Firmar el paquete
Utilice el SignTool instalado con las herramientas de cliente de firma de artefactos. La /dlib marca apunta al complemento dlib instalado en el paso anterior:
signtool sign /v /fd SHA256 `
/tr "https://timestamp.acs.microsoft.com" /td SHA256 `
/dlib "C:\Program Files (x86)\Microsoft\ArtifactSigningClientTools\bin\Azure.CodeSigning.Dlib.dll" `
/dmdf .\metadata.json `
MyApp.msix
Sugerencia
Use la /debug bandera para obtener una salida detallada si la firma falla; muestra los detalles de la cadena de certificados y la autenticación.
CI/CD: Acciones de GitHub
Use el oficial azure/trusted-signing-action:
- name: Sign MSIX with Azure Artifact Signing
uses: azure/trusted-signing-action@v0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
endpoint: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
files-folder: ${{ github.workspace }}\output
files-folder-filter: msix
Para Azure DevOps, consulte Configurar Azure DevOps con Firma Confiable.
Producción: distribución de Microsoft Store
Aplicable a: Todas las versiones de Windows compatibles
Si vas a distribuir a través de la Microsoft Store, no necesitas firmar el paquete tú mismo: la Tienda la firma durante el proceso de envío. Compile el paquete y envíelo a través del Centro de partners. El Almacén proporciona una firma digital de confianza global y maneja toda la gestión de certificados.
Producción: certificado OV de firma de código
Applies to: Windows 10 y versiones posteriores
Si la firma de artefactos no está disponible para su región o situación, puede adquirir un certificado de firma de código OV (validación de organización) de una autoridad de certificación (CA) como DigiCert, Sectigo o GlobalSign. Los costos suelen oscilar entre 300 y 500 USD al año.
Una vez que tenga un archivo PFX desde la ENTIDAD de certificación:
SignTool sign /fd SHA256 /a /f .\cert.pfx /p "YourPassword" `
/tr http://timestamp.digicert.com /td SHA256 `
MyApp.msix
Para obtener opciones de firma completas, consulte Firmar un paquete de aplicación mediante SignTool.
Nota:
Los certificados OV no proporcionan confianza instantánea de SmartScreen. La reputación se construye a lo largo del tiempo a medida que los paquetes firmados se instalan sin ser marcados. Para obtener más información, consulte la reputación de SmartScreen para desarrolladores de aplicaciones de Windows.