Gewusst wie: Erstellen von temporären Zertifikaten für die Verwendung während der EntwicklungHow to: Create Temporary Certificates for Use During Development

Wenn Sie einen sicheren Dienst oder Client mithilfe von Windows Communication Foundation (WCF) zu entwickeln, ist es oft erforderlich, geben Sie ein x. 509-Zertifikat als Anmeldeinformationen verwendet werden soll.When developing a secure service or client using Windows Communication Foundation (WCF), it is often necessary to supply an X.509 certificate to be used as a credential. Das Zertifikat ist normalerweise Teil einer Zertifikatskette mit einer Stammstelle, die im Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen des Computers enthalten ist.The certificate typically is part of a chain of certificates with a root authority found in the Trusted Root Certification Authorities store of the computer. 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.Having a certificate chain enables you to scope a set of certificates where typically the root authority is from your organization or business unit. Um dies zur Entwicklungszeit zu emulieren, können Sie zwei Zertifikate erstellen, um die Sicherheitsanforderungen zu erfüllen.To emulate this at development time, you can create two certificates to satisfy the security requirements. 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.The first is a self-signed certificate that is placed in the Trusted Root Certification Authorities store, and the second certificate is created from the first and is placed in either the Personal store of the Local Machine location, or the Personal store of the Current User location. In diesem Thema sind die Schritte zur Erstellung dieser beiden Zertifikate beschrieben. Dabei wird das Certificate Creation-Tool (MakeCert.exe)verwendet, das im .NET Framework.NET Framework -SDK enthalten ist.This topic walks through the steps to create these two certificates using the Certificate Creation Tool (MakeCert.exe), which is provided by the .NET Framework.NET Framework SDK.

Wichtig

Die Zertifikate, die das Certificate Creation-Tool generiert, werden nur zu Testzwecken bereitgestellt.The certificates the Certification Creation tool generates are provided for testing purposes only. Beim Bereitstellen eines Diensts oder Clients sollten Sie ein geeignetes Zertifikat einer Zertifizierungsstelle verwenden.When deploying a service or client, be sure to use an appropriate certificate provided by a certification authority. Dies kann entweder von einem Windows Server 2003Windows Server 2003 -Zertifikatsserver Ihrer Organisation oder von einem Drittanbieter stammen.This could either be from a Windows Server 2003Windows Server 2003 certificate server in your organization or a third party.

Wird standardmäßig die Makecert.exe (Certificate Creation-Tool) erstellt Zertifikate, deren Stammzertifizierungsstelle heißt "Root Agency ."By default, the Makecert.exe (Certificate Creation Tool) creates certificates whose root authority is called "Root Agency ." Da sich die Stammzertifizierungsstelle ("Root Agency") nicht im Speicher mit den vertrauenswürdigen Stammzertifizierungsstellen befindet, sind diese Zertifikate nicht sicher.Because the "Root Agency" is not in the Trusted Root Certification Authorities store, this makes these certificates insecure. Indem Sie ein selbstsigniertes Zertifikat erstellen, 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.Creating a self-signed certificate that is placed in the Trusted Root Certification Authorities store enables you to create a development environment that more closely simulates your deployment environment.

Weitere Informationen zum Erstellen und Verwenden von Zertifikaten finden Sie unter arbeiten mit Zertifikaten.For more information about creating and using certificates, see Working with Certificates. Weitere Informationen über ein Zertifikat als Anmeldeinformationen finden Sie unter Sichern von Diensten und Clients.For more information about using a certificate as a credential, see Securing Services and Clients. Ein Lernprogramm zur Verwendung der Microsoft Authenticode-Technologie finden Sie unter Authenticode Overviews and Tutorials.For a tutorial about using Microsoft Authenticode technology, see Authenticode Overviews and Tutorials.

So erstellen Sie ein selbstsigniertes Stammzertifizierungsstellen-Zertifikat und exportieren den privaten SchlüsselTo create a self-signed root authority certificate and export the private key

  1. Verwenden Sie das Tool MakeCert.exe mit den folgenden Schaltern:Use the MakeCert.exe tool with the following switches:

    1. -n subjectName.-n subjectName. Gibt den Namen des Antragstellers an.Specifies the subject name. Normalerweise wird dem Namen des Antragstellers als Präfix "CN = " ("Common Name", gemeinsamer Name) hinzugefügt.The convention is to prefix the subject name with "CN = " for "Common Name".

    2. -r.-r. Gibt an, dass das Zertifikat selbstsigniert ist.Specifies that the certificate will be self-signed.

    3. -sv privateKeyFile.-sv privateKeyFile. Gibt die Datei an, die den Container für den privaten Schlüssel enthält.Specifies the file that contains the private key container.

    Der folgende Befehl erstellt zum Beispiel ein selbstsigniertes Zertifikat mit dem Antragstellernamen "CN=TempCA".For example, the following command creates a self-signed certificate with a subject name of "CN=TempCA."

    makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer  
    

    Sie werden aufgefordert, ein Kennwort anzugeben, um den privaten Schlüssel zu schützen.You will be prompted to provide a password to protect the private key. Dieses Kennwort ist erforderlich, wenn sie ein von diesem Stammzertifikat signiertes Zertifikat erstellen.This password is required when creating a certificate signed by this root certificate.

So erstellen Sie ein neues von einem Stammzertifizierungsstellen-Zertifikat signiertes ZertifikatTo create a new certificate signed by a root authority certificate

  1. Verwenden Sie das Tool MakeCert.exe mit den folgenden Schaltern:Use the MakeCert.exe tool with the following switches:

    1. -sk subjectKey.-sk subjectKey. Der Speicherort des Schlüsselcontainers des Antragstellers, in dem der private Schlüssel gespeichert ist.The location of the subject's key container that holds the private key. Wenn kein Schlüsselcontainer vorhanden ist, wird ein Schlüsselcontainer erstellt.If a key container does not exist, one is created. Wenn weder die Option "-sk" noch die Option "-sv" verwendet wird, wird standardmäßig ein Schlüsselcontainer mit dem Namen "JoeSoft" erstellt.If neither of the -sk or -sv options is used, a key container called JoeSoft is created by default.

    2. -n subjectName.-n subjectName. Gibt den Namen des Antragstellers an.Specifies the subject name. Normalerweise wird dem Namen des Antragstellers als Präfix "CN = " ("Common Name", gemeinsamer Name) hinzugefügt.The convention is to prefix the subject name with "CN = " for "Common Name".

    3. -iv issuerKeyFile.-iv issuerKeyFile. Gibt die Datei für den privaten Schlüssel des Herausgebers an.Specifies the issuer's private key file.

    4. -ic issuerCertFile.-ic issuerCertFile. Gibt den Speicherort für das Zertifikat des Herausgebers an.Specifies the location of the issuer's certificate.

    Der folgende Befehl erstellt zum Beispiel ein Zertifikat, das von der Stammzertifizierungsstelle TempCA mit dem Antragstellernamen "CN=SignedByCA" signiert wird, indem der private Schlüssel des Herausgebers verwendet wird.For example, the following command creates a certificate signed by the TempCA root authority certificate with a subject name of "CN=SignedByCA" using the private key of the issuer.

    makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My  
    

Installieren eines Zertifikats im Speicher mit den vertrauenswürdigen StammzertifizierungsstellenInstalling a Certificate in the Trusted Root Certification Authorities Store

Nachdem ein selbstsigniertes Zertifikat erstellt wurde, können Sie es im Speicher der vertrauenswürdigen Stammzertifizierungsstellen installieren.Once a self-signed certificate is created, you can install it in the Trusted Root Certification Authorities store. Alle Zertifikate, die zu diesem Zeitpunkt mit dem Zertifikat signiert sind, werden vom Computer als vertrauenswürdig eingestuft.Any certificates that are signed with the certificate at this point are trusted by the computer. Aus diesem Grund sollten Sie das Zertifikat aus dem Speicher löschen, sobald Sie es nicht mehr benötigen.For this reason, delete the certificate from the store as soon as you no longer need it. Wenn Sie dieses Stammzertifizierungsstellen-Zertifikat löschen, verlieren auch alle anderen Zertifikate, die zusammen damit signiert wurden, ihre Zertifizierung.When you delete this root authority certificate, all other certificates that signed with it become unauthorized. Bei Stammzertifizierungsstellen-Zertifikaten handelt es sich einfach um einen Mechanismus, bei dem der Gültigkeitsbereich einer Gruppe von Zertifikaten festgelegt werden kann.Root authority certificates are simply a mechanism whereby a group of certificates can be scoped as necessary. 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.For example, in peer-to-peer applications, there is typically no need for a root authority because you simply trust the identity of an individual by its supplied certificate.

So installieren Sie ein selbstsigniertes Zertifikat im Speicher mit den vertrauenswürdigen StammzertifizierungsstellenTo install a self-signed certificate in the Trusted Root Certification Authorities

  1. Öffnen Sie das Zertifikat-Snap-In.Open the certificate snap-in. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen von Zertifikaten mit dem MMC-Snap-in.For more information, see How to: View Certificates with the MMC Snap-in.

  2. Öffnen Sie den Ordner, um das Zertifikat zu speichern, also entweder Lokaler Computer oder Aktueller Benutzer.Open the folder to store the certificate, either the Local Computer or the Current User.

  3. Öffnen Sie den Ordner Vertrauenswürdige Stammzertifizierungsstellen .Open the Trusted Root Certification Authorities folder.

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Zertifikate , und klicken Sie auf Alle Aufgabenund anschließend auf Importieren.Right-click the Certificates folder and click All Tasks, then click Import.

  5. Folgen Sie den Anweisungen des Assistenten auf dem Bildschirm, um die Datei TempCa.cer in den Speicher zu importieren.Follow the on-screen wizard instructions to import the TempCa.cer into the store.

Verwenden von Zertifikaten mit WCFUsing Certificates With 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.Once you have set up the temporary certificates, you can use them to develop WCF solutions that specify certificates as a client credential type. So gibt beispielsweise die folgende XML-Konfiguration Nachrichtensicherheit und ein Zertifikat als Clientanmeldeinformationstyp an.For example, the following XML configuration specifies message security and a certificate as the client credential type.

So geben Sie ein Zertifikat als Clientanmeldeinformationstyp anTo specify a certificate as the client credential type

  • Verwenden Sie in der Konfigurationsdatei für einen Dienst die folgende XML, um den Sicherheitsmodus auf die Nachrichtenebene und den Clientanmeldeinformationstyp auf Zertifikate festzulegen:In the configuration file for a service, use the following XML to set the security mode to message, and the client credential type to certificate.

    <bindings>       
      <wsHttpBinding>  
        <binding name="CertificateForClient">  
          <security>  
            <message clientCredentialType="Certificate" />  
          </security>  
        </binding>  
      </wsHttpBinding>  
    </bindings>  
    

Verwenden Sie die folgende XML in der Konfigurationsdatei für einen Client um anzugeben, dass das Zertifikat im Speicher des Benutzers befindet und durch Durchsuchen des SubjectName-Felds für den Wert "CohoWinery" gefunden werden könnenIn the configuration file for a client, use the following XML to specify that the certificate is found in the user’s store, and can be found by searching the SubjectName field for the value "CohoWinery."

<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.For more information about using certificates in WCF, see Working with Certificates.

.NET Framework-Sicherheit.NET Framework Security

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.Be sure to delete any temporary root authority certificates from the Trusted Root Certification Authorities and Personal folders by right-clicking the certificate, then clicking Delete.

Siehe auchSee Also

Arbeiten mit ZertifikatenWorking with Certificates
Vorgehensweise: Anzeigen von Zertifikaten mit dem MMC-Snap-InHow to: View Certificates with the MMC Snap-in
Sichern von Diensten und ClientsSecuring Services and Clients