Procedure: Tijdelijke certificaten maken voor gebruik tijdens de ontwikkeling
Bij het ontwikkelen van een beveiligde service of client met behulp van WCF (Windows Communication Foundation), is het vaak nodig om een X.509-certificaat op te geven dat moet worden gebruikt als referentie. Het certificaat maakt doorgaans deel uit van een keten van certificaten met een basisinstantie in het archief vertrouwde basiscertificeringsinstanties van de computer. Als u een certificaatketen hebt, kunt u een reeks certificaten instellen waarbij doorgaans de basisinstantie afkomstig is van uw organisatie of bedrijfseenheid. Als u dit tijdens de ontwikkeling wilt emuleren, kunt u twee certificaten maken om te voldoen aan de beveiligingsvereisten. De eerste is een zelfondertekend certificaat dat in het archief vertrouwde basiscertificeringsinstanties wordt geplaatst en het tweede certificaat wordt gemaakt van het eerste en wordt in het persoonlijke archief van de locatie van de lokale computer of het persoonlijke archief van de huidige gebruikerslocatie geplaatst. In dit onderwerp worden de stappen beschreven voor het maken van deze twee certificaten met behulp van de cmdlet New-SelfSignedCertificate) van PowerShell.
Belangrijk
De certificaten die door de cmdlet New-SelfSignedCertificate worden gegenereerd, zijn alleen beschikbaar voor testdoeleinden. Wanneer u een service of client implementeert, moet u ervoor zorgen dat u een geschikt certificaat gebruikt dat wordt geleverd door een certificeringsinstantie. Dit kan afkomstig zijn van een Windows Server-certificaatserver in uw organisatie of een derde partij.
De cmdlet New-SelfSignedCertificate maakt standaard certificaten die zelfondertekend zijn en deze certificaten zijn onveilig. Als u de zelfondertekende certificaten in het archief vertrouwde basiscertificeringsinstanties plaatst, kunt u een ontwikkelomgeving maken die uw implementatieomgeving nauwkeuriger simuleert.
Zie Werken met certificaten voor meer informatie over het maken en gebruiken van certificaten. Zie Services en clients beveiligen voor meer informatie over het gebruik van een certificaat als referentie. Zie Authenticode Overviews and Tutorials (Overzichten en zelfstudies van Authenticode) voor een zelfstudie over het gebruik van Microsoft Authenticode-technologie.
Een zelfondertekend basiscertificeringsinstantiecertificaat maken en de persoonlijke sleutel exporteren
Met de volgende opdracht maakt u een zelfondertekend certificaat met de onderwerpnaam RootCA in het persoonlijke archief van de huidige gebruiker.
$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature
We moeten het certificaat exporteren naar een PFX-bestand, zodat het kan worden geïmporteerd naar de locatie waar het in een latere stap nodig is. Wanneer u een certificaat exporteert met de persoonlijke sleutel, is er een wachtwoord nodig om het te beveiligen. We slaan het wachtwoord op in een SecureString
en gebruiken de cmdlet Export-PfxCertificate om het certificaat te exporteren met de bijbehorende persoonlijke sleutel naar een PFX-bestand. We slaan ook alleen het openbare certificaat op in een CRT-bestand met behulp van de cmdlet Export-Certificate .
[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'
Een nieuw certificaat maken dat is ondertekend door een basiscertificeringsinstantiecertificaat
Met de volgende opdracht maakt u een certificaat dat is ondertekend door de met de RootCA
onderwerpnaam 'SignedByRootCA' met behulp van de persoonlijke sleutel van de verlener.
$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert
Op dezelfde manier slaan we het ondertekende certificaat met een persoonlijke sleutel op in een PFX-bestand en alleen de openbare sleutel in een CRT-bestand.
[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt
Een certificaat installeren in het archief met vertrouwde basiscertificeringsinstanties
Zodra een zelfondertekend certificaat is gemaakt, kunt u het installeren in het archief vertrouwde basiscertificeringsinstanties. Certificaten die op dit moment zijn ondertekend met het certificaat, worden vertrouwd door de computer. Verwijder daarom het certificaat uit het archief zodra u het niet meer nodig hebt. Wanneer u dit basiscertificeringsinstantiecertificaat verwijdert, worden alle andere certificaten die ermee zijn ondertekend, niet geautoriseerd. Basiscertificeringsinstanties zijn gewoon een mechanisme waarbij een groep certificaten zo nodig kan worden beperkt. In peer-to-peertoepassingen is er doorgaans geen basisinstantie nodig, omdat u gewoon de identiteit van een persoon vertrouwt door het opgegeven certificaat.
Een zelfondertekend certificaat installeren in de vertrouwde basiscertificeringsinstanties
Open de certificaatmodule. Zie Instructies voor meer informatie : Certificaten weergeven met de MMC-module.
Open de map om het certificaat op te slaan, de lokale computer of de huidige gebruiker.
Open de map Vertrouwde basiscertificeringsinstanties .
Klik met de rechtermuisknop op de map Certificaten en klik op Alle taken en klik vervolgens op Importeren.
Volg de instructies van de wizard op het scherm om de RootCA.pfx in de store te importeren.
Certificaten gebruiken met WCF
Zodra u de tijdelijke certificaten hebt ingesteld, kunt u deze gebruiken om WCF-oplossingen te ontwikkelen waarmee certificaten worden opgegeven als clientreferentietype. De volgende XML-configuratie geeft bijvoorbeeld berichtbeveiliging en een certificaat op als het clientreferentietype.
Een certificaat opgeven als het clientreferentietype
Gebruik in het configuratiebestand voor een service de volgende XML om de beveiligingsmodus in te stellen op bericht en het clientreferentietype op certificaat.
<bindings> <wsHttpBinding> <binding name="CertificateForClient"> <security> <message clientCredentialType="Certificate" /> </security> </binding> </wsHttpBinding> </bindings>
Gebruik in het configuratiebestand voor een client de volgende XML om op te geven dat het certificaat wordt gevonden in het archief van de gebruiker en kan worden gevonden door te zoeken in het veld Onderwerpnaam voor de waarde 'CohoWinery'.
<behaviors> <endpointBehaviors> <behavior name="CertForClient"> <clientCredentials> <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" /> </clientCredentials> </behavior> </endpointBehaviors> </behaviors>
Zie Werken met certificaten voor meer informatie over het gebruik van certificaten in WCF.
.NET Framework-beveiliging
Verwijder alle tijdelijke basiscertificeringsinstanties uit de vertrouwde basiscertificeringsinstanties en persoonlijke mappen door met de rechtermuisknop op het certificaat te klikken en vervolgens op Verwijderen te klikken.