Anvisningar: Skapa tillfälliga certifikat för användning under utveckling

När du utvecklar en säker tjänst eller klient med Hjälp av Windows Communication Foundation (WCF) är det ofta nödvändigt att ange ett X.509-certifikat som ska användas som autentiseringsuppgifter. Certifikatet är vanligtvis en del av en kedja av certifikat med en rotutfärdare som finns i arkivet Betrodda rotcertifikatutfärdare på datorn. Med en certifikatkedja kan du omfångsbegränsa en uppsättning certifikat där rotutfärdare vanligtvis kommer från din organisation eller affärsenhet. För att emulera detta vid utvecklingstillfället kan du skapa två certifikat för att uppfylla säkerhetskraven. Det första är ett självsignerat certifikat som placeras i arkivet Betrodda rotcertifikatutfärdare, och det andra certifikatet skapas från det första och placeras antingen i det personliga arkivet på den lokala datorns plats eller i det personliga arkivet för den aktuella användarens plats. Det här avsnittet går igenom stegen för att skapa dessa två certifikat med hjälp av cmdleten PowerShell New-SelfSignedCertificate ).

Viktigt!

De certifikat som cmdleten New-SelfSignedCertificate genererar tillhandahålls endast i testsyfte. När du distribuerar en tjänst eller klient bör du använda ett lämpligt certifikat som tillhandahålls av en certifikatutfärdare. Detta kan antingen komma från en Windows Server-certifikatserver i din organisation eller från en tredje part.

Som standard skapar cmdleten New-SelfSignedCertificate certifikat som är självsignerade och dessa certifikat är osäkra. Genom att placera de självsignerade certifikaten i arkivet Betrodda rotcertifikatutfärdare kan du skapa en utvecklingsmiljö som simulerar distributionsmiljön närmare.

Mer information om hur du skapar och använder certifikat finns i Arbeta med certifikat. Mer information om hur du använder ett certifikat som autentiseringsuppgifter finns i Skydda tjänster och klienter. En självstudiekurs om hur du använder Microsoft Authenticode-teknik finns i Översikter och självstudier för Authenticode.

Skapa ett självsignerat rotutfärdarcertifikat och exportera den privata nyckeln

Följande kommando skapar ett självsignerat certifikat med ämnesnamnet "RootCA" i det aktuella personliga användararkivet.

$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature

Vi måste exportera certifikatet till en PFX-fil så att det kan importeras till den plats där det behövs i ett senare steg. När du exporterar ett certifikat med den privata nyckeln krävs ett lösenord för att skydda det. Vi sparar lösenordet i en SecureString och använder cmdleten Export-PfxCertificate för att exportera certifikatet med den associerade privata nyckeln till en PFX-fil. Vi sparar också bara det offentliga certifikatet i en CRT-fil med hjälp av cmdleten 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'

Så här skapar du ett nytt certifikat som signerats av ett rotcertifikatutfärdare

Följande kommando skapar ett certifikat signerat av RootCA med ämnesnamnet "SignedByRootCA" med utfärdarens privata nyckel.

$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert

På samma sätt sparar vi det signerade certifikatet med privat nyckel i en PFX-fil och bara den offentliga nyckeln i en CRT-fil.

[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

Installera ett certifikat i arkivet betrodda rotcertifikatutfärdare

När ett självsignerat certifikat har skapats kan du installera det i arkivet Betrodda rotcertifikatutfärdare. Alla certifikat som är signerade med certifikatet i det här läget är betrodda av datorn. Därför tar du bort certifikatet från arkivet så snart du inte längre behöver det. När du tar bort det här rotutfärdarcertifikatet blir alla andra certifikat som signerats med det obehöriga. Rotutfärdarcertifikat är helt enkelt en mekanism där en grupp certifikat kan begränsas efter behov. I peer-to-peer-program finns det till exempel vanligtvis inget behov av en rotutfärdare eftersom du helt enkelt litar på identiteten för en individ med det certifikat som tillhandahålls.

Så här installerar du ett självsignerat certifikat i betrodda rotcertifikatutfärdare

  1. Öppna snapin-modulen för certifikatet. Mer information finns i Så här visar du certifikat med MMC-snapin-modulen.

  2. Öppna mappen för att lagra certifikatet, antingen den lokala datorn eller den aktuella användaren.

  3. Öppna mappen Betrodda rotcertifikatutfärdare.

  4. Högerklicka på mappen Certifikat och klicka på Alla uppgifter och klicka sedan på Importera.

  5. Följ anvisningarna på skärmen för att importera RootCA.pfx till arkivet.

Använda certifikat med WCF

När du har konfigurerat de tillfälliga certifikaten kan du använda dem för att utveckla WCF-lösningar som anger certifikat som en typ av klientautentiseringsuppgifter. Följande XML-konfiguration anger till exempel meddelandesäkerhet och ett certifikat som klientautentiseringstyp.

Så här anger du ett certifikat som klientautentiseringstyp

  1. I konfigurationsfilen för en tjänst använder du följande XML för att ange säkerhetsläget till meddelande och klientens autentiseringstyp till certifikat.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. I konfigurationsfilen för en klient använder du följande XML för att ange att certifikatet finns i användarens arkiv och kan hittas genom att söka i fältet SubjectName efter värdet "CohoWinery".

    <behaviors>
      <endpointBehaviors>
        <behavior name="CertForClient">
          <clientCredentials>
            <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

Mer information om hur du använder certifikat i WCF finns i Arbeta med certifikat.

.NET Framework-säkerhet

Se till att ta bort eventuella temporära rotutfärdarcertifikat från mapparna Betrodda rotcertifikatutfärdare och Personliga mappar genom att högerklicka på certifikatet och sedan klicka på Ta bort.

Se även