Signera MSIX-paketet: guide från slutpunkt till slutpunkt

Den här guiden vägleder dig genom att signera ett MSIX-paket för varje utvecklingsfas – från lokal testning till produktionsdistribution. För en jämförelse av signeringsalternativ och kostnader, se Översikt över att signera ett MSIX-paket.

Välj en signeringsmetod

Etapp Rekommenderat tillvägagångssätt Windows-version
Lokal utveckling och testning WinApp CLI (självsignerat certifikat) Windows 10 och senare
Distribuera till testare (sidladdning) Självsignerat certifikat med certifikatförtroendesteg Windows 10 och senare
Produktionsdistribution Azure Artifact Signing (tidigare känd som Trusted Signing) Windows 10 version 1809 och senare Windows Server 2016 och senare
Microsoft Store distribution Signerad av butiken vid inskickning Alla Windows versioner som stöds

Utveckling: Signera för lokal testning

Använd ett självsignerat certifikat för lokal utveckling. Självsignerade paket kan bara installeras på datorer där certifikatet uttryckligen är betrott – detta är avsiktligt och lämpligt för testning.

Viktigt!

CLI för Windows App Development finns för närvarande i public preview och kräver Windows 10 med WinGet installerat.

WinApp CLI hanterar certifikatgenerering och inloggning i ett enda steg.

Steg 1: Installera WinApp CLI

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

Steg 2: Generera ett självsignerat utvecklingscertifikat

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

Flaggan --manifest läser utgivarnamnet direkt från din appxmanifest.xml. Flaggan --install lägger till certifikatet i det lokala datorförtroendearkivet, så att du omedelbart kan installera paketet.

Steg 3: Signera paketet

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

Alternativ B: PowerShell + SignTool (Windows 10 och senare)

Använd den här metoden om du inte använder WinApp CLI.

Steg 1: Skapa ett självsignerat certifikat

Kör följande i en upphöjd PowerShell-prompt. Värdet Subject måste exakt matcha Publisher i din 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"

Observera tumavtrycket i utdata – du behöver det i nästa steg.

Steg 2: Exportera certifikatet till en PFX-fil

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

Steg 3: Lita på certifikatet lokalt

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

Steg 4: Signera paketet

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

Fullständig SignTool-användning finns i Signera ett apppaket med SignTool.


Testning: Distribuera till testare med ett självsignerat certifikat

För att installera ett självsignerat MSIX-paket på en testares dator måste certifikatet först accepteras på den datorn.

Anmärkning

Windows 10 version 2004 och senare och Windows 11 är sidoinstallation aktiverat som standard. I tidigare Windows 10 versioner måste testare aktivera Sideload-appar i Inställningar Uppdatering & Säkerhet För utvecklare.

Ge testarna certifikatet:.pfx Dela filen eller .cer (endast offentlig nyckel) tillsammans med .msix paketet.

Testare kör följande i en upphöjd PowerShell-prompt:

# 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

När du har litat på certifikatet kan testarna installera .msix genom att dubbelklicka på det.

Viktigt!

Självsignerade certifikat bör endast användas för testning. Ta bort dem från testmaskiner när de inte längre behövs. För bred distribution använder du en offentligt betrodd signeringsmetod i stället.


Produktion: Azure artefaktsignering (tidigare signering med tillit)

Gäller för: Windows 10 version 1809 och senare, Windows 11 (alla versioner), Windows Server 2016 och senare

Azure Artifact Signing är det nya namnet på det som tidigare kallades betrodd signering. Tjänsten är identisk – endast namnet har ändrats. Du kan fortfarande se "Betrodd signering" i vissa verktyg (till exempel åtgärden azure/trusted-signing-action GitHub och winget paket-ID) eftersom dessa referenser uppdateras över tid.

Azure Artefaktsignering är det rekommenderade alternativet för MSIX-signering i produktion. Ryktet är kopplat till din verifierade identitet snarare än ett specifikt certifikat, vilket innebär att din utgivaridentitet skapar SmartScreen-rykte över tid när användare installerar dina signerade appar. Se Signera en MSIX-paketöversikt för berättigandekrav och kostnadsinformation innan du konfigurerar ett konto.

Viktigt!

Tillgängligheten för Azure artefaktsignering: Organisationer i USA, Kanada, Europeiska unionen och Storbritannien kan registrera sig. Enskilda utvecklare är för närvarande begränsade till USA och Kanada. Om du är en enskild utvecklare utanför dessa regioner använder du ett OV-kodsigneringscertifikat från en certifikatutfärdare i stället (se Certifikat för signering av OV-kod nedan).

Anmärkning

Signering med Azure Artefaktsignering ger inte omedelbart SmartScreen-förtroende. Precis som OV-certifikat visar dina appar inledningsvis en SmartScreen-varning tills din utgivaridentitet skapar tillräckligt med nedladdningsrykte – vanligtvis flera veckor och hundratals rena installationer. Det här är ett förväntat beteende för nya utgivare. Mer information om hur SmartScreen-rykte fungerar och vad du kan förvänta dig som ny utgivare finns i SmartScreen-rykte för Windows apputvecklare.

Förutsättningar

  • Ett artefaktsigneringskonto med identitetsverifiering slutfört och en certifikatprofil har skapats. Se snabbstarten för artefaktsignering.
  • Signer-rollen För betrodd signeringscertifikatprofil tilldelad till den identitet som används för signering.

Steg 1: Installera klientverktyg för artefaktsignering

Verktygen för artefaktsigneringsklient innehåller det nödvändiga dlib-plugin, en kompatibel version av SignTool och .NET 8-runtime-miljön. Standard SignTool-syntaxen fungerar inte med artefaktsignering utan det här paketet.

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

Om WinGet inte är tillgängligt (till exempel på en Windows Server build-agent) installerar du via PowerShell som administratör:

$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

Steg 2: Skapa en metadata-JSON-fil

Skapa en fil med namnet metadata.json med information om artefaktsigneringskontot. Slutpunkts-URI:n måste matcha den Azure region där du skapade ditt konto (hitta den i Azure-portalen under ditt artefaktsigneringskonto som Konto-URI):

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

En fullständig lista över regionspecifika slutpunkts-URI:er finns i Signeringsintegreringar.

Steg 3: Autentisera

Ange dina Azure autentiseringsuppgifter som miljövariabler (använd autentiseringsuppgifter för appregistrering för CI/CD):

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

Alternativt kan du köra az login för interaktiv lokal signering.

Steg 4: Signera paketet

Använd SignTool som installerats med Artifact Signing Client Tools. Flaggan /dlib pekar på det dlib-plugin-program som installerades i föregående steg:

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

Tips/Råd

/debug Använd flaggan för att få detaljerade utdata om signeringen misslyckas – den visar information om certifikatkedjan och autentiseringen.

CI/CD: GitHub Actions

Använd den officiella 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

För Azure DevOps, se Set up Azure DevOps with Trusted Signing.


Produktion: Microsoft Store distribution

Gäller för: Alla Windows-versioner som stöds

Om du distribuerar via Microsoft Store behöver du inte signera paketet själv – Store signerar det under sändningsprocessen. Skapa ditt paket och skicka det via Partnercenter. Store tillhandahåller en globalt betrodd signatur och hanterar all certifikathantering.


Produktion: OV-kodsigneringscertifikat

Gäller för: Windows 10 och senare

Om artefaktsignering inte är tillgängligt för din region eller situation kan du köpa ett OV-kodsigneringscertifikat (organisationsverifiering) från en certifikatutfärdare (CA) som DigiCert, Sectigo eller GlobalSign. Kostnaderna varierar vanligtvis från 300–500 USD per år.

När du har en PFX-fil från din certifikatutfärdare:

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

Fullständiga signeringsalternativ finns i Signera ett apppaket med SignTool.

Anmärkning

OV-certifikat ger inte omedelbart SmartScreen-förtroende. Ryktet byggs med tiden när dina signerade paket installeras utan att bli markerade. Mer information finns i SmartScreen-rykte för Windows apputvecklare.