Postupy: Vytváření dočasných certifikátů pro použití během vývoje

Při vývoji zabezpečené služby nebo klienta pomocí technologie Windows Communication Foundation (WCF) je často nutné zadat certifikát X.509, který se použije jako přihlašovací údaje. Certifikát je obvykle součástí řetězu certifikátů s kořenovou autoritou, která se nachází v úložišti důvěryhodných kořenových certifikačních autorit počítače. Řetěz certifikátů umožňuje nastavit obor sady certifikátů, kde obvykle kořenová autorita pochází z vaší organizace nebo organizační jednotky. Pokud chcete tento proces napodobit v době vývoje, můžete vytvořit dva certifikáty, které splňují požadavky na zabezpečení. První je certifikát podepsaný svým držitelem, který je umístěn v úložišti důvěryhodných kořenových certifikačních autorit, a druhý certifikát se vytvoří z prvního a umístí se do osobního úložiště umístění místního počítače nebo osobního úložiště aktuálního uživatele. Toto téma vás provede postupem vytvoření těchto dvou certifikátů pomocí rutiny PowerShell New-SelfSignedCertificate ).

Důležité

Certifikáty, které generuje rutina New-SelfSignedCertificate, jsou k dispozici pouze pro účely testování. Při nasazování služby nebo klienta nezapomeňte použít odpovídající certifikát poskytnutý certifikační autoritou. Může se jednat o certifikátový server Windows Serveru ve vaší organizaci nebo třetí stranu.

Rutina New-SelfSignedCertificate ve výchozím nastavení vytváří certifikáty podepsané svým držitelem a tyto certifikáty jsou nezabezpečené. Umístění certifikátů podepsaných svým držitelem do úložiště důvěryhodných kořenových certifikačních autorit umožňuje vytvořit vývojové prostředí, které přesněji simuluje vaše prostředí nasazení.

Další informace o vytváření a používání certifikátů naleznete v tématu Práce s certifikáty. Další informace o použití certifikátu jako přihlašovacích údajů naleznete v tématu Zabezpečení služeb a klientů. Kurz o používání technologie Microsoft Authenticode najdete v tématu Přehledy a kurzy služby Authenticode.

Vytvoření certifikátu kořenové autority podepsaného svým držitelem a export privátního klíče

Následující příkaz vytvoří certifikát podepsaný svým držitelem s názvem subjektu RootCA v osobním úložišti aktuálního uživatele.

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

Certifikát musíme exportovat do souboru PFX, aby se mohl importovat do místa, kde je potřeba v pozdějším kroku. Při exportu certifikátu s privátním klíčem je k jeho ochraně potřeba heslo. Heslo uložíme do SecureString souboru PFX a použijeme rutinu Export-PfxCertificate k exportu certifikátu s přidruženým privátním klíčem. Pomocí rutiny Export-Certificate také uložíme jenom veřejný certifikát do souboru CRT.

[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'

Vytvoření nového certifikátu podepsaného certifikátem kořenové autority

Následující příkaz vytvoří certifikát podepsaný RootCA názvem subjektu SignedByRootCA pomocí privátního klíče vystavitele.

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

Podobně uložíme podepsaný certifikát s privátním klíčem do souboru PFX a pouze veřejný klíč do souboru CRT.

[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

Instalace certifikátu v úložišti důvěryhodných kořenových certifikačních autorit

Po vytvoření certifikátu podepsaného svým držitelem ho můžete nainstalovat do úložiště důvěryhodných kořenových certifikačních autorit. Všechny certifikáty podepsané certifikáty v tomto okamžiku důvěřují počítači. Z tohoto důvodu odstraňte certifikát z úložiště, jakmile ho už nepotřebujete. Když odstraníte tento kořenový certifikát autority, stanou se všechny ostatní certifikáty podepsané tímto certifikátem neoprávněné. Certifikáty kořenové autority jsou jednoduše mechanismus, kdy je možné podle potřeby nastavit obor skupiny certifikátů. Například v aplikacích peer-to-peer není obvykle potřeba kořenovou autoritu, protože jednoduše důvěřujete identitě jednotlivce podle zadaného certifikátu.

Instalace certifikátu podepsaného svým držitelem do důvěryhodných kořenových certifikačních autorit

  1. Otevřete modul snap-in certifikátu. Další informace naleznete v tématu Postupy: Zobrazení certifikátů pomocí modulu snap-in konzoly MMC.

  2. Otevřete složku pro uložení certifikátu, a to buď místního počítače, nebo aktuálního uživatele.

  3. Otevřete složku Důvěryhodné kořenové certifikační autority.

  4. Klepněte pravým tlačítkem myši na složku Certifikáty a klepněte na příkaz Všechny úkoly a potom klepněte na tlačítko Importovat.

  5. Podle pokynů průvodce na obrazovce naimportujte rootCA.pfx do úložiště.

Použití certifikátů s WCF

Jakmile nastavíte dočasné certifikáty, můžete je použít k vývoji řešení WCF, která určují certifikáty jako typ přihlašovacích údajů klienta. Například následující konfigurace XML určuje zabezpečení zpráv a certifikát jako typ přihlašovacích údajů klienta.

Zadání certifikátu jako typu přihlašovacích údajů klienta

  1. V konfiguračním souboru pro službu nastavte pomocí následujícího kódu XML režim zabezpečení na zprávu a typ přihlašovacích údajů klienta na certifikát.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. V konfiguračním souboru klienta pomocí následujícího kódu XML určete, že se certifikát nachází v úložišti uživatele a lze jej najít vyhledáním hodnoty CohoWinery v poli SubjectName.

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

Další informace o používání certifikátů ve WCF naleznete v tématu Práce s certifikáty.

zabezpečení v rozhraní .NET Framework

Nezapomeňte odstranit všechny dočasné certifikáty kořenové autority z důvěryhodných kořenových certifikačních autorit a osobních složek tak, že kliknete pravým tlačítkem myši na certifikát a potom kliknete na Odstranit.

Viz také