Een MSIX-pakket ondertekenen

App-pakketondertekening is een vereiste stap bij het maken van een MSIX-pakket dat kan worden geïmplementeerd. Windows vereist dat MSIX-pakketten zijn ondertekend met een geldig certificaat voor ondertekening van code.

Als u een Windows-toepassing wilt installeren, moet het pakket niet alleen ondertekend worden, maar ook vertrouwd zijn op het apparaat. Dit betekent dat het certificaat moet worden gekoppeld aan een van de vertrouwde rootcertificaten op het apparaat. Standaard vertrouwt Windows certificaten van de meeste certificeringsinstanties die certificaten voor codeondertekening bieden.

Als u een MSIX-bundel maakt, hoeft u bovendien niet alle pakketten in de bundel afzonderlijk te ondertekenen. Alleen de bundel moet worden ondertekend; de handtekening dekt de pakketten binnen de bundel.

Opties voor ondertekening

Kies een ondertekeningsbenadering op basis van uw scenario:

Scenariobeschrijving Option Cost
Ontwikkelen en lokaal testen Zelfondertekend certificaat Gratis
Productiedistributie (aanbevolen) Azure Artifact Signing (voorheen Vertrouwde ondertekening) Basic: ca. $10/maand
Alternatieve productiedistributie OV-code-ondertekeningscertificaat van een CA $300-500/jaar
Microsoft Store-distributie Ondertekend door de winkel bij de indiening Gratis

Opmerking

Azure Artifact Signing (voorheen bekend als Trusted Signing) is Microsofts beheerde service voor codeondertekening en is de aanbevolen optie voor de ondertekening van productie-MSIX. Belangrijkste kenmerken:

  • Reputatie op basis van identiteit: Reputatie is gekoppeld aan uw geverifieerde uitgeversidentiteit in plaats van een specifiek certificaat, zodat deze wordt verzameld over builds. Echter, zoals bij elke distributie die niet via de Store verloopt, zullen nieuwe apps nog steeds SmartScreen-waarschuwingen weergeven totdat er voldoende downloadgeschiedenis is opgebouwd. Dit proces duurt doorgaans enkele weken. Zie SmartScreen-reputatie voor Windows app-ontwikkelaars.
  • Kortstondige certificaten: er wordt dagelijks een nieuw certificaat uitgegeven en elk certificaat blijft ongeveer 3 dagen geldig, waardoor het zo nodig tijdsspecifieke intrekking mogelijk is.
  • CI/CD ready: ondersteunt GitHub Actions (azure/trusted-signing-action) en Azure DevOps out-of-the-box.

Geschiktheid voor openbare vertrouwenscertificaten: beschikbaar voor organisaties in de VS, Canada, de Europese Unie en het Verenigd Koninkrijk, en voor individuele ontwikkelaars in de VS en Canada. Organisaties moeten een verifieerbare belastinggeschiedenis van drie of meer jaar hebben. Zie Belangrijke informatie voor identiteitsvalidatie.

Aantekening met SignTool vereist extra installatie: SignTool werkt alleen met Artifact Signing als u de Clienthulpprogramma's voor artefactondertekening gebruikt, waaronder de vereiste dlib-invoegtoepassing en .NET 8 runtime. U moet ook een metadata.json bestand opgeven met uw accounteindpunt en certificaatprofiel. Een standaard Windows SDK SignTool-aanroep op zichzelf werkt niet met Artifact Signing. De eenvoudigste installatie is:

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

Zie SignTool instellen met Artifact Signing voor de volledige installatie.

AzureSignTool is een afzonderlijk communityhulpprogramma voor ondertekening met certificaten die zijn opgeslagen in Azure Key Vault. Het biedt geen ondersteuning voor Ondertekening van artefacten. De twee zijn afzonderlijke services. Zie Pakketten ondertekenen met Azure Key Vault voor Azure Key Vault-gebaseerde aanmelding bij Visual Studio.

WinApp CLI

De WinApp CLI biedt handige opdrachten voor het ondertekenen van ontwikkeling:

  • winapp cert generate — een zelfondertekend certificaat maken voor ontwikkeling
  • winapp sign — een MSIX-pakket of uitvoerbaar bestand ondertekenen met een certificaat
  • winapp tool signtool — open SignTool rechtstreeks vanuit de Windows SDK

Onderwerpen over ondertekening

Onderwerp Beschrijving
Vereisten voor ondertekening Vereisten voor het ondertekenen van een app-pakket.
SignTool gebruiken SignTool van de Windows SDK gebruiken om een app-pakket te ondertekenen.
Pakketten toewijzen met Azure Key Vault Pakketten ondertekenen met behulp van een certificaat dat is opgeslagen in Azure Key Vault vanuit Visual Studio.
Onderteken een MSIX-pakket met Device Guard-ondertekening Uw app ondertekenen met Device Guard-ondertekening.
Niet-ondertekende pakketten maken om te testen Een niet-ondertekend MSIX-pakket maken voor testen.
Azure Artifactondertekening Microsoft beheerde ondertekeningsservice (voorheen Trusted Signing) voor msix-productiepakketten.

Tijdstempel

Het wordt ten zeerste aanbevolen om tijdstempels te gebruiken bij het ondertekenen van uw app met een certificaat. Tijdstempels behouden de handtekening waardoor het app-pakket kan worden geaccepteerd door het app-implementatieplatform, zelfs nadat het certificaat is verlopen. Op het moment van de pakketinspectie maakt de tijdstempel het mogelijk om de handtekening van het pakket te valideren met betrekking tot het tijdstip waarop het is ondertekend. Hierdoor kunnen pakketten worden geaccepteerd, zelfs nadat het certificaat niet meer geldig is. Pakketten die niet zijn voorzien van een tijdstempel, worden geëvalueerd op basis van de huidige tijd en als het certificaat niet meer geldig is, accepteert Windows het pakket niet.

Hieronder volgen de verschillende scenario's rond app-ondertekening met/zonder tijdstempels:

Scenariobeschrijving App wordt ondertekend zonder tijdstempels App is ondertekend met tijdstempels
Certificaat is geldig App wordt geïnstalleerd App wordt geïnstalleerd
Certificaat is ongeldig (verlopen) App kan niet worden geïnstalleerd De app wordt geïnstalleerd zodra de authenticiteit van het certificaat is geverifieerd bij ondertekening door de tijdstempelautoriteit

Opmerking

Als de app met succes op een apparaat is geïnstalleerd, blijft deze actief, zelfs nadat het certificaat is verlopen, ongeacht of het een tijdstempel heeft of niet.

Handhaving van de integriteit van pakketten

Naast ervoor te zorgen dat alleen vertrouwde toepassingen op een apparaat worden geïnstalleerd, is het extra voordeel van het ondertekenen van een MSIX-pakket dat Windows de integriteit van uw pakket en de inhoud ervan kunt afdwingen nadat het op een apparaat is geïmplementeerd. Door te koppelen aan de AppxBlockMap.xml en AppxSignature.p7x in een ondertekend pakket, kan Windows validatiecontroles uitvoeren op de integriteit van een pakket en de inhoud ervan tijdens runtime en tijdens Windows Defender scans. Als een pakket wordt geacht te worden gemanipuleerd Windows het starten van toepassingen en het starten van een herstelwerkstroom blokkeert om het pakket te herstellen of opnieuw te installeren. Voor pakketten die niet worden gedistribueerd via de Microsoft Store, wordt pakketintegriteit afgedwongen als het pakket het element uap10:PackageIntegrity declareert en wordt geïmplementeerd op Windows 2004 en hoger. Hieronder vindt u een voorbeeldverklaring van de handhaving van de integriteit van verpakkingen in de AppxManifest.xml:

<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"  
IgnorableNamespaces="uap10">
...
  <Properties>
    <uap10:PackageIntegrity>
      <uap10:Content Enforcement="on" />
    </uap10:PackageIntegrity>
  </Properties>
...
</Package>

Modus van het apparaat

Windows 10 stelt gebruikers in staat de modus te selecteren waarin hun apparaat moet draaien in de Instellingen-app. De modi zijn Microsoft Store apps, Sideload-apps en ontwikkelaarsmodus.

Microsoft Store-apps is de veiligste omdat het alleen de installatie van apps vanaf de Microsoft Store toestaat. Apps in de Microsoft Store doorlopen het certificeringsproces om ervoor te zorgen dat de apps veilig zijn voor gebruik.

Sideload-apps en de ontwikkelaarsmodus zijn toleranter voor apps die zijn ondertekend door andere certificaten, zolang die certificaten worden vertrouwd en gekoppeld aan een van de vertrouwde rootsgroepen op het apparaat. Selecteer alleen de ontwikkelaarsmodus als u een ontwikkelaar bent en Windows 10 apps bouwt of foutopsporing opspoort. Meer informatie over de ontwikkelaarsmodus en wat deze biedt, is hier te vinden.

Opmerking

Vanaf Windows 10 versie 2004 is sideload-optie standaard ingeschakeld. Als gevolg hiervan is de ontwikkelaarsmodus nu een schakelaar. Ondernemingen kunnen Sideloading nog steeds uitschakelen via beleid.