Vorgehensweise: Erstellen von temporären Zertifikaten für die Verwendung während der Entwicklung

Wenn Sie mithilfe von Windows Communication Foundation (WCF) einen sicheren Dienst oder Client entwickeln, müssen Sie häufig ein X.509-Zertifikat angeben, das für die Anmeldeinformationen verwendet wird. Das Zertifikat ist normalerweise Teil einer Zertifikatskette mit einer Stammstelle, die im Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen des Computers enthalten ist. Wenn Sie über eine Zertifikatskette verfügen, können Sie einen Bereich mit Zertifikatsätzen angeben, wobei die Stammzertifizierungsstelle normalerweise von Ihrer Organisation bzw. Ihrem Geschäftsbereich stammt. Um dies zur Entwicklungszeit zu emulieren, können Sie zwei Zertifikate erstellen, um die Sicherheitsanforderungen zu erfüllen. Beim ersten Zertifikat handelt es sich um ein selbstsigniertes Zertifikat, das in den Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen eingefügt wird. Das zweite Zertifikat wird aus dem ersten Zertifikat erstellt und entweder in den persönlichen Speicher unter "Lokaler Computer" oder in den persönlichen Speicher unter "Aktueller Benutzer" eingefügt. In diesem Thema werden die Schritte zum Erstellen dieser beiden Zertifikate mithilfe des PowerShell New-SelfSignedCertificate)-Cmdlets beschrieben.

Wichtig

Die Zertifikate, die das Cmdlet New-SelfSignedCertificate generiert, werden nur zu Testzwecken bereitgestellt. Beim Bereitstellen eines Diensts oder Clients sollten Sie ein geeignetes Zertifikat einer Zertifizierungsstelle verwenden. Dies kann entweder von einem Windows Server-Zertifikatsserver Ihrer Organisation oder von einem Drittanbieter stammen.

Standardmäßig erstellt das Cmdlet New-SelfSignedCertificate Zertifikate, die selbstsigniert sind, wobei diese Zertifikate unsicher sind. Durch das Erstellen eines selbstsignierten Zertifikats, das in den Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen eingefügt wird, können sie eine Entwicklungsumgebung anlegen, die eine bessere Simulation Ihrer Bereitstellungsumgebung darstellt.

Weitere Informationen zum Erstellen und Verwenden von Zertifikaten finden Sie unter Verwenden von Zertifikaten. Weitere Informationen zum Verwenden eines Zertifikats für die Anmeldeinformationen finden Sie unter Sichern von Diensten und Clients. Ein Lernprogramm zur Verwendung der Microsoft Authenticode-Technologie finden Sie unter Authenticode Overviews and Tutorials.

So erstellen Sie ein selbstsigniertes Stammzertifizierungsstellen-Zertifikat und exportieren den privaten Schlüssel

Mit dem folgenden Befehl wird ein selbstsigniertes Zertifikat mit dem Antragstellernamen „RootCA“ im persönlichen Speicher des aktuellen Benutzers erstellt.

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

Wir müssen das Zertifikat in eine PFX-Datei exportieren, damit es in einem späteren Schritt dort importiert werden kann, wo es benötigt wird. Beim Exportieren eines Zertifikats mit dem privaten Schlüssel ist ein Kennwort erforderlich, um es zu schützen. Wir speichern das Kennwort in einem SecureString-Element und verwenden das Export-PfxCertificate-Cmdlet, um das Zertifikat mit dem zugeordneten privaten Schlüssel in eine PFX-Datei zu exportieren. Außerdem speichern wir nur das öffentliche Zertifikat mithilfe des Export-Certificate-Cmdlets in einer CRT-Datei.

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

So erstellen Sie ein neues von einem Stammzertifizierungsstellen-Zertifikat signiertes Zertifikat

Der folgende Befehl erstellt ein Zertifikat, das von der Stammzertifizierungsstelle RootCA mit dem Antragstellernamen „SignedByRootCA“ signiert wird, indem der private Schlüssel des Herausgebers verwendet wird.

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

Ebenso speichern wir das signierte Zertifikat mit privatem Schlüssel in einer PFX-Datei und nur den öffentlichen Schlüssel in einer CRT-Datei.

[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

Installieren eines Zertifikats im Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen

Nachdem ein selbstsigniertes Zertifikat erstellt wurde, können Sie es im Speicher der vertrauenswürdigen Stammzertifizierungsstellen installieren. Alle Zertifikate, die zu diesem Zeitpunkt mit dem Zertifikat signiert sind, werden vom Computer als vertrauenswürdig eingestuft. Aus diesem Grund sollten Sie das Zertifikat aus dem Speicher löschen, sobald Sie es nicht mehr benötigen. Wenn Sie dieses Stammzertifizierungsstellen-Zertifikat löschen, verlieren auch alle anderen Zertifikate, die zusammen damit signiert wurden, ihre Zertifizierung. Bei Stammzertifizierungsstellen-Zertifikaten handelt es sich einfach um einen Mechanismus, bei dem der Gültigkeitsbereich einer Gruppe von Zertifikaten festgelegt werden kann. Bei der Verwendung von Peer-to-Peer-Anwendungen ist eine Stammzertifizierungsstelle zum Beispiel normalerweise nicht erforderlich, weil Sie der Identität einer Person einfach aufgrund ihres bereitgestellten Zertifikats vertrauen.

So installieren Sie ein selbstsigniertes Zertifikat im Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen

  1. Öffnen Sie das Zertifikat-Snap-In. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen von Zertifikaten mit dem MMC-Snap-In.

  2. Öffnen Sie den Ordner, um das Zertifikat zu speichern, also entweder Lokaler Computer oder Aktueller Benutzer.

  3. Öffnen Sie den Ordner Vertrauenswürdige Stammzertifizierungsstellen .

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Zertifikate , und klicken Sie auf Alle Aufgabenund anschließend auf Importieren.

  5. Folgen Sie den Anweisungen des Assistenten auf dem Bildschirm, um die Datei RootCA.pfx in den Speicher zu importieren.

Verwenden von Zertifikaten mit WCF

Nach dem Einrichten der temporären Zertifikate können diese verwendet werden, um WCF-Lösungen zu entwickeln, mit denen Zertifikate als Clientanmeldeinformationstyp angegeben werden. So gibt beispielsweise die folgende XML-Konfiguration Nachrichtensicherheit und ein Zertifikat als Clientanmeldeinformationstyp an.

So geben Sie ein Zertifikat als Clientanmeldeinformationstyp an

  1. Verwenden Sie in der Konfigurationsdatei für einen Dienst die folgende XML, um den Sicherheitsmodus auf die Nachrichtenebene und den Clientanmeldeinformationstyp auf Zertifikate festzulegen:

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. Verwenden Sie in der Konfigurationsdatei für einen Client die folgende XML, um anzugeben, dass sich das Zertifikat im Speicher des Benutzers befindet und durch Durchsuchen des SubjectName-Felds nach dem Wert „CohoWinery“ gefunden wird:

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

Weitere Informationen zum Verwenden von Zertifikaten in WCF finden Sie unter Working with Certificates.

.NET Framework-Sicherheit

Achten Sie darauf, alle temporären Stammzertifizierungsstellen-Zertifikate aus den Ordnern Vertrauenswürdige Stammzertifizierungsstellen und Persönlich zu löschen, indem Sie mit der rechten Maustaste auf das Zertifikat klicken und anschließend auf Löschenklicken.

Siehe auch