Uw MSIX-pakket ondertekenen: uitgebreide handleiding

Deze handleiding begeleidt u bij het ondertekenen van een MSIX-pakket voor elke ontwikkelingsfase, van lokaal testen tot productiedistributie. Zie een overzicht van een MSIX-pakket ondertekenen voor een vergelijking van ondertekeningsopties en -kosten.

Een ondertekeningsbenadering kiezen

Fase Aanbevolen aanpak Windows versie
Lokale ontwikkeling en testen WinApp CLI (zelfondertekend certificaat) Windows 10 en hoger
Distribueren onder testers (sideloading) Zelfondertekend certificaat met stap voor certificaatvertrouwen Windows 10 en hoger
Productiedistributie Azure Artifact Signing (voorheen Trusted Signing) Windows 10 versie 1809 en hoger, Windows Server 2016 en hoger
Microsoft Store-distributie Ondertekend door de winkel bij de indiening Alle ondersteunde Windows versies

Ontwikkeling: Aanmelden voor lokale tests

Gebruik een zelfondertekend certificaat voor lokale ontwikkeling. Zelfondertekende pakketten kunnen alleen worden geïnstalleerd op computers waarop het certificaat expliciet wordt vertrouwd. Dit is opzettelijk en geschikt voor testen.

Belangrijk

De Windows-app Development CLI bevindt zich momenteel in public preview en vereist Windows 10 met WinGet geïnstalleerd.

De WinApp CLI verwerkt het genereren van certificaten en het aanmelden in één stap.

Stap 1: De WinApp CLI installeren

winget install -e --id Microsoft.WinAppCLI --source winget

Stap 2: Een zelfondertekend ontwikkelingscertificaat genereren

winapp cert generate --manifest .\appxmanifest.xml --output .\devcert.pfx --install

De --manifest vlag leest de naam van de uitgever rechtstreeks vanuit uw appxmanifest.xml. Met de --install vlag wordt het certificaat toegevoegd aan het vertrouwensarchief van de lokale machine, zodat u het pakket onmiddellijk kunt installeren.

Stap 3: Het pakket ondertekenen

winapp sign MyApp.msix --cert .\devcert.pfx

Optie B: PowerShell + SignTool (Windows 10 en hoger)

Gebruik deze methode als u de WinApp CLI niet gebruikt.

Stap 1: Een zelfondertekend certificaat maken

Voer het volgende uit in een PowerShell-prompt met verhoogde bevoegdheid. De Subject-waarde moet exact overeenkomen met de Publisher in uw 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"

Noteer de vingerafdruk in de uitvoer. U hebt deze nodig in de volgende stappen.

Stap 2: het certificaat exporteren naar een PFX-bestand

$password = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Thumbprint>" `
  -FilePath .\devcert.pfx -Password $password

Stap 3: Het certificaat lokaal vertrouwen

Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" `
  -FilePath .\devcert.pfx -Password $password

Stap 4: Het pakket ondertekenen

SignTool sign /fd SHA256 /a /f .\devcert.pfx /p "YourPassword" MyApp.msix

Zie Een app-pakket ondertekenen met SignTool voor het volledige gebruik van SignTool.


Testen: Distribueren naar testers met een zelfondertekend certificaat

Als u een zelfondertekend MSIX-pakket wilt installeren op de computer van een tester, moet het certificaat eerst op die computer worden vertrouwd.

Opmerking

Op Windows 10 versie 2004 en hoger en Windows 11 is sideloading standaard ingeschakeld. In eerdere Windows 10-versies moeten testers Sideload-apps inschakelen in Instellingen > Bijwerken en beveiliging > voor ontwikkelaars.

Testers het certificaat geven: Deel het .pfx bestand of .cer (alleen openbare sleutel) naast het .msix pakket.

Testers voeren het volgende uit in een PowerShell-prompt met verhoogde bevoegdheid:

# 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

Nadat het certificaat is vertrouwd, kunnen testers het .msix installeren door erop te dubbelklikken.

Belangrijk

Zelfondertekende certificaten mogen alleen worden gebruikt voor testen. Verwijder ze uit testermachines wanneer u ze niet meer nodig hebt. Voor een brede distributie gebruikt u in plaats daarvan een openbaar vertrouwde ondertekeningsmethode.


Productie: Azure Artifact Signing (voorheen Trusted Signing)

Van toepassing op: Windows 10 versie 1809 en hoger, Windows 11 (alle versies), Windows Server 2016 en hoger

Azure Artefactondertekening is de nieuwe naam voor wat eerder Vertrouwde Ondertekening werd genoemd. De service is identiek: alleen de naam is gewijzigd. Mogelijk ziet u 'Vertrouwde ondertekening' in bepaalde hulpprogramma's (zoals de azure/trusted-signing-action GitHub-actie en de winget pakket-id) omdat deze verwijzingen na verloop van tijd worden bijgewerkt.

Azure Artifact Signing is de aanbevolen optie voor het ondertekenen van productie-MSIX. Reputatie is gekoppeld aan uw geverifieerde identiteit in plaats van een specifiek certificaat, wat betekent dat uw uitgeversidentiteit in de loop van de tijd SmartScreen-reputatie bouwt wanneer gebruikers uw ondertekende apps installeren. Zie Een MSIX-pakketoverzicht ondertekenen voor geschiktheidsvereisten en kosteninformatie voordat u een account instelt.

Belangrijk

Azure Beschikbaarheid van artefactondertekening: Organisaties in de Verenigde Staten, Canada, de Europese Unie en het Verenigd Koninkrijk kunnen zich registreren. Individuele ontwikkelaars zijn momenteel beperkt tot de VS en Canada. Als u een afzonderlijke ontwikkelaar buiten deze regio's bent, gebruikt u in plaats daarvan een OV-codeondertekeningscertificaat van een CA (zie Productie: certificaat voor ov-codeondertekening hieronder).

Opmerking

Ondertekening met Azure Artifact Signing biedt geen direct SmartScreen-vertrouwen. Net als OV-certificaten tonen uw apps in eerste instantie een SmartScreen-waarschuwing totdat uw uitgeversidentiteit voldoende downloadreputatie bouwt, meestal enkele weken en honderden schone installaties. Dit is verwacht gedrag voor nieuwe uitgevers. Zie SmartScreen-reputatie voor Windows app-ontwikkelaars voor meer informatie over de werking en wat u als nieuwe uitgever kunt verwachten.

Vereiste voorwaarden

  • Een artefactondertekeningsaccount met identiteitsvalidatie voltooid en een certificaatprofiel gemaakt. Zie de Quickstart Artefactondertekening.
  • De rol Profielondertekening voor vertrouwd handtekeningcertificaat die is toegewezen aan de identiteit die wordt gebruikt voor ondertekening.

Stap 1: Artefactondertekeningshulpprogramma's installeren

De clienthulpprogramma's voor artefactondertekening bevatten de vereiste dlib-invoegtoepassing, een compatibele versie van SignTool en de .NET 8 runtime. De syntaxis van Standard SignTool werkt niet met Artifact Signing zonder dit pakket.

winget install -e --id Microsoft.Azure.ArtifactSigningClientTools

Als WinGet niet beschikbaar is (bijvoorbeeld op een Windows Server buildagent), installeert u deze als beheerder via PowerShell:

$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

Stap 2: Een JSON-bestand met metagegevens maken

Maak een bestand met de naam metadata.json met de details van uw artefactondertekeningsaccount. De eindpunt-URI moet overeenkomen met de Azure regio waar u uw account hebt gemaakt (zoek deze in de Azure-portal onder uw artefactondertekeningsaccount als Account-URI):

{
  "Endpoint": "https://<region>.codesigning.azure.net/",
  "CodeSigningAccountName": "<your-account-name>",
  "CertificateProfileName": "<your-certificate-profile-name>"
}

Zie Ondertekeningsintegraties voor de volledige lijst met regiospecifieke eindpunt-URI's.

Stap 3: Verifiëren

Stel uw Azure-referenties in als omgevingsvariabelen (gebruik app-registratiereferenties voor CI/CD):

$env:AZURE_CLIENT_ID     = "<your-client-id>"
$env:AZURE_TENANT_ID     = "<your-tenant-id>"
$env:AZURE_CLIENT_SECRET = "<your-client-secret>"

U kunt ook uitvoeren az login voor interactieve lokale ondertekening.

Stap 4: Het pakket ondertekenen

Gebruik de SignTool die is geïnstalleerd met de clienttools voor artefactondertekening. De /dlib vlag verwijst naar de dlib-invoegtoepassing die in de vorige stap is geïnstalleerd:

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

Aanbeveling

Gebruik de /debug vlag om gedetailleerde uitvoer te krijgen als de ondertekening mislukt. Hierin worden certificaatketen- en verificatiedetails weergegeven.

CI/CD: GitHub Actions

Gebruik de officiële 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

Zie Set up Azure DevOps with Trusted Signing voor Azure DevOps.


Productie: Distributie via de Microsoft Store

Van toepassing op: Alle ondersteunde Windows-versies

Als u distribueert via de Microsoft Store, hoeft u het pakket niet zelf te ondertekenen. De Store ondertekent het tijdens het indieningsproces. Bouw uw pakket en verzend het via partnercentrum. De Store biedt een wereldwijd vertrouwde handtekening en verwerkt alle certificaatbeheer.


Productie: OV-codeondertekeningscertificaat

Van toepassing op: Windows 10 en hoger

Als ondertekening van artefacten niet beschikbaar is voor uw regio of situatie, kunt u een OV-certificaat (Organisatievalidatie) voor ondertekening van code kopen bij een certificeringsinstantie (CA), zoals DigiCert, Sectigo of GlobalSign. Kosten variëren doorgaans van $ 300-500 per jaar.

Zodra u een PFX-bestand van uw CA hebt:

SignTool sign /fd SHA256 /a /f .\cert.pfx /p "YourPassword" `
  /tr http://timestamp.digicert.com /td SHA256 `
  MyApp.msix

Zie Een app-pakket ondertekenen met SignTool voor volledige ondertekeningsopties.

Opmerking

OV-certificaten bieden geen directe SmartScreen-vertrouwensrelatie. Reputatie wordt opgebouwd in de loop van de tijd naarmate uw ondertekende pakketten worden geïnstalleerd zonder als onbetrouwbaar te worden gemarkeerd. Zie SmartScreen-reputatie voor Windows app-ontwikkelaars voor meer informatie.