Delen via


Een certificaat maken voor pakketondertekening

In dit artikel wordt uitgelegd hoe u een certificaat maakt en vertrouwt voor app-pakketondertekening met behulp van PowerShell-hulpprogramma's (voor CMD-hulpprogramma's, zie hier). Het is raadzaam om Visual Studio te gebruiken voor het verpakken van UWP-apps en het verpakken van desktop-apps, maar u kunt een app nog steeds handmatig verpakken als u Visual Studio niet hebt gebruikt om uw app te ontwikkelen.

Vereiste voorwaarden

  • Een verpakte of uitgepakte app
    Een app met een AppxManifest.xml-bestand. U moet verwijzen naar het manifestbestand tijdens het maken van het certificaat dat wordt gebruikt om het uiteindelijke app-pakket te ondertekenen. Zie Een app-pakket maken met het hulpprogramma MakeAppx.exe voor meer informatie over het handmatig verpakken van een app.

  • Public Key Infrastructure (PKI)-cmdlets
    U hebt PKI-cmdlets nodig om uw handtekeningcertificaat te maken en te exporteren. Zie Cmdlets voor openbare sleutelinfrastructuur voor meer informatie.

Een zelfondertekend certificaat maken

Een zelfondertekend certificaat is handig voor het testen van uw app voordat u klaar bent om het te publiceren naar de Store. Volg de stappen die in deze sectie worden beschreven om een zelfondertekend certificaat te maken.

Opmerking

Wanneer u een zelfondertekend certificaat maakt en gebruikt, kunnen alleen gebruikers die uw certificaat installeren en vertrouwen, uw toepassing uitvoeren. Dit is eenvoudig te implementeren voor testen, maar het kan voorkomen dat extra gebruikers uw toepassing installeren. Wanneer u klaar bent om uw toepassing te publiceren, wordt u aangeraden een certificaat te gebruiken dat is uitgegeven door een vertrouwde bron. Dit systeem van gecentraliseerde vertrouwen helpt ervoor te zorgen dat het toepassingsecosysteem verificatieniveaus heeft om gebruikers te beschermen tegen kwaadwillende actoren.

Het onderwerp van uw verpakte app bepalen

Als u een certificaat wilt gebruiken om uw app-pakket te ondertekenen, moet het onderwerp in het certificaat overeenkomen met de sectie Uitgever in het manifest van uw app.

De sectie Identiteit in het AppxManifest.xml-bestand van uw app ziet er bijvoorbeeld ongeveer als volgt uit:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

In dit geval is 'Publisher' 'CN=Contoso Software, O=Contoso Corporation, C=US' dat moet worden gebruikt voor het maken van uw certificaat.

New-SelfSignedCertificate gebruiken om een certificaat te maken

Gebruik de PowerShell-cmdlet New-SelfSignedCertificate om een zelfondertekend certificaat te maken. New-SelfSignedCertificate heeft verschillende parameters voor aanpassing, maar voor dit artikel richten we ons op het maken van een eenvoudig certificaat dat werkt met SignTool. Zie New-SelfSignedCertificate voor meer voorbeelden en gebruik van deze cmdlet.

Op basis van het AppxManifest.xml-bestand uit het vorige voorbeeld moet u de volgende syntaxis gebruiken om een certificaat te maken. In een PowerShell-prompt met verhoogde bevoegdheid:

New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"

Let op de volgende details over enkele van de parameters:

  • KeyUsage: Met deze parameter wordt gedefinieerd waarvoor het certificaat kan worden gebruikt. Voor een zelfondertekend certificaat moet deze parameter worden ingesteld op DigitalSignature.

  • TextExtension: Deze parameter bevat instellingen voor de volgende extensies:

    • Extended Key Usage (EKU): Deze extensie geeft aanvullende doeleinden aan waarvoor de gecertificeerde openbare sleutel kan worden gebruikt. Voor een zelfondertekend certificaat moet deze parameter de extensietekenreeks 2.5.29.37={text}1.3.6.1.5.5.7.3.3 bevatten, wat aangeeft dat het certificaat moet worden gebruikt voor het ondertekenen van programmacode.

    • Basisbeperkingen: Deze extensie geeft aan of het certificaat fungeert als een certificeringsautoriteit (CA) of niet. Voor een zelfondertekend certificaat moet deze parameter de extensietekenreeks 2.5.29.19={text} bevatten, die aangeeft dat het certificaat een eindentiteit is (geen CA).

Nadat u deze opdracht hebt uitgevoerd, wordt het certificaat gemaakt en toegevoegd aan het persoonlijke certificaatarchief van de gebruiker. Het resultaat van de opdracht produceert ook de vingerafdruk van het certificaat.

U kunt uw certificaat weergeven in een PowerShell-venster met behulp van de volgende opdrachten:

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

Hiermee worden alle certificaten in het persoonlijke certificaatarchief van de gebruiker weergegeven.

Als u een app wilt installeren die is ondertekend met dit certificaat, moet het certificaat worden geĆÆmporteerd in het certificaatarchief van Vertrouwde Personen op de Lokale Computer.

Het certificaat exporteren naar een PFX-bestand

Als u het zojuist gemaakte certificaat wilt importeren in het certificaatarchief vertrouwde personen voor lokale machines, moet u het eerst exporteren naar een PFX-bestand (Personal Information Exchange) met behulp van de cmdlet Export-PfxCertificate .

Wanneer u Export-PfxCertificate gebruikt, moet u een wachtwoord maken en gebruiken of de parameter '-ProtectTo' gebruiken om op te geven welke gebruikers of groepen toegang hebben tot het bestand zonder een wachtwoord. Houd er rekening mee dat er een fout wordt weergegeven als u de parameter '-Password' of '-ProtectTo' niet gebruikt. '-Password' wordt aanbevolen voor algemeen gebruik, terwijl '-ProtectTo' handig is wanneer uw gebruikersaccount wordt ondersteund door een domeincontroller.

Wachtwoordgebruik

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

ProtectTo-gebruik

Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>

Het certificaat importeren in de opslaglocatie 'Vertrouwde personen' van de lokale machine

Nu u het certificaat hebt geƫxporteerd naar een PFX-bestand, kunt u het importeren in het archief Vertrouwde personen van de lokale machine met behulp van de cmdlet Import-PfxCertificate vanuit een PowerShell-sessie voor beheerders.

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

Nu het certificaat is vertrouwd, kunt u uw app-pakket ondertekenen met SignTool. Zie Een app-pakket ondertekenen met SignTool voor de volgende stap in het handmatige verpakkingsproces.

Beveiligingsoverwegingen

Door een certificaat toe te voegen aan de archieven voor lokale machinecertificaten , heeft dit invloed op de certificaatvertrouwen van alle gebruikers op de computer. U wordt aangeraden deze certificaten te verwijderen wanneer ze niet meer nodig zijn om te voorkomen dat ze worden gebruikt om systeemvertrouwen in gevaar te brengen.