Verwenden von ZertifikatenWorking with Certificates

Bei der Programmierung der Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Sicherheit werden digitale X.509-Zertifikate häufig zum Authentifizieren von Clients und Servern sowie zum Verschlüsseln und digitalen Signieren von Nachrichten verwendet.To program Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) security, X.509 digital certificates are commonly used to authenticate clients and servers, encrypt, and digitally sign messages. Dieses Thema bietet einen Überblick über die Funktionen digitaler X.509-Zertifikate und ihre Verwendung in WCFWCF und enthält Links zu Themen, in denen diese Konzepte näher beschrieben oder die Ausführung allgemeiner Aufgaben mit WCFWCF und Zertifikaten erläutert werden.This topic briefly explains X.509 digital certificate features and how to use them in WCFWCF, and includes links to topics that explain these concepts further or that show how to accomplish common tasks using WCFWCF and certificates.

Kurz gesagt, ein digitales Zertifikat ist ein Teil einer public Key-Infrastruktur (PKI), dabei handelt es sich um ein System aus digitalen Zertifikaten, Zertifizierungsstellen und anderen Registrierungsstellen, die Überprüfung und Authentifizierung die Gültigkeit beteiligten Parteien in einer elektronischen Transaktion unter Verwendung der Kryptografie mit öffentlichem Schlüssel.In brief, a digital certificate is a part of a public key infrastructure (PKI), which is a system of digital certificates, certificate authorities, and other registration authorities that verify and authenticate the validity of each party involved in an electronic transaction through the use of public key cryptography. Eine Zertifizierungsstelle Zertifikate ausstellt, und jedes Zertifikat enthält einen Satz von Feldern, die Daten, z. B. enthalten Betreff (die Entität für die das Zertifikat ausgestellt wird), Gültigkeitsdatum (wenn das Zertifikat gültig ist), Aussteller (die Entität, die das Zertifikat ausgestellt wurde), und einem öffentlichen Schlüssel.A certification authority issues certificates and each certificate has a set of fields that contain data, such as subject (the entity to which the certificate is issued), validity dates (when the certificate is valid), issuer (the entity that issued the certificate), and a public key. In WCFWCF werden diese Eigenschaften als Claim verarbeitet, und jeder Anspruch wird weiter in zwei Typen unterteilt: Identität und Recht.In WCFWCF, each of these properties is processed as a Claim, and each claim is further divided into two types: identity and right. Weitere Informationen finden Sie unterFor more information about X. 509-Zertifikaten finden Sie unter x. 509-Zertifikate für öffentliche Schlüssel Weitere Informationen finden Sie unterFor more information about Ansprüchen und Autorisierung in WCF finden Sie unter Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell. X.509 certificates see X.509 Public Key CertificatesWeitere Informationen finden Sie unterFor more information about Claims and Authorization in WCF see Managing Claims and Authorization with the Identity Model. Weitere Informationen finden Sie unterFor more information about implementieren eine PKI, finden Sie unter Windows Server 2008 R2 - Zertifikatdienste. implementing a PKI, see Windows Server 2008 R2 - Certificate Services.

Eine zentrale Funktion des Zertifikats ist die Authentifizierung der Identität des Besitzers des Zertifikats gegenüber anderen.A primary function of the certificate is to authenticate the identity of the owner of the certificate to others. Ein Zertifikat enthält die öffentlichen Schlüssel des Besitzers, während der Besitzer den privaten Schlüssel behält.A certificate contains the public key of the owner, while the owner retains the private key. Der öffentliche Schlüssel kann zum Verschlüsseln von Nachrichten verwendet werden, die an den Besitzer des Zertifikats gesendet werden.The public key can be used to encrypt messages sent to the owner of the certificate. Nur der Besitzer hat Zugriff auf den privaten Schlüssel, sodass niemand anders diese Nachrichten entschlüsseln kann.Only the owner has access to the private key, so only the owner can decrypt those messages.

Zertifikate müssen von einer Zertifizierungsstelle ausgestellt werden, bei der es sich oft um einen Drittanbieter-Zertifikataussteller handelt.Certificates must be issued by a certification authority, which is often a third-party issuer of certificates. Windows-Domänen verfügen über eine Zertifizierungsstelle, von der Zertifikate für Computer in der Domäne ausgestellt werden können.On a Windows domain, a certification authority is included that can be used to issue certificates to computers on the domain.

Anzeigen von ZertifikatenViewing Certificates

Bei der Verwendung von Zertifikaten ist es oft erforderlich, die Zertifikate anzuzeigen und ihre Eigenschaften zu überprüfen.To work with certificates, it is often necessary to view them and examine their properties. Die einfachste Methode dazu ist das MMC (Microsoft Management Console)-Snap-In-Tool.This is easily done with the Microsoft Management Console (MMC) snap-in tool. Weitere Informationen finden Sie unterFor more information, see Vorgehensweise: Anzeigen von Zertifikaten mit dem MMC-Snap-in. How to: View Certificates with the MMC Snap-in.

ZertifikatspeicherCertificate Stores

Zertifikate werden in Speichern abgelegt.Certificates are found in stores. Die zwei Hauptspeicherorte sind in weitere Unterspeicher unterteilt.Two major store locations exist that are further divided into sub-stores. Administratoren können beide Hauptspeicher mit dem MMC-Snap-In-Tool anzeigen.If you are the administrator on a computer, you can view both major stores by using the MMC snap-in tool. Alle anderen Benutzer können lediglich den Speicher des aktuellen Benutzers anzeigen.Non-administrators can view only the current user store.

  • Im lokalen Computerspeicher.The local machine store. Dieser enthält die Zertifikate, die von den Prozessen des Computers verwendet werden, z. B. ASP.NETASP.NET.This contains the certificates accessed by machine processes, such as ASP.NETASP.NET. Speichern Sie die Zertifikate zur Authentifizierung des Servers gegenüber Clients im lokalen Computerspeicher.Use this location to store certificates that authenticate the server to clients.

  • Speicher des aktuellen Benutzers.The current user store. Interaktive Anwendungen legen Zertifikate für den aktuellen Benutzer des Computers normalerweise im aktuellen Benutzerspeicher ab.Interactive applications typically place certificates here for the computer's current user. Beim Erstellen einer Clientanwendung werden die Zertifikate zur Authentifizierung eines Benutzers gegenüber einem Dienst normalerweise hier abgelegt.If you are creating a client application, this is where you typically place certificates that authenticate a user to a service.

Diese beiden Speicher teilen sich in weitere Unterspeicher auf.These two stores are further divided into sub-stores. Die wichtigsten Unterspeicher für die Programmierung mit WCFWCF sind folgende:The most important of these when programming with WCFWCF include:

  • Vertrauenswürdige Stammzertifizierungsstellen.Trusted Root Certification Authorities. Mit den Zertifikaten in diesem Speicher können Sie eine Zertifikatkette erstellen, die zum Zertifikat einer Zertifizierungsstelle in diesem Speicher zurückverfolgt werden kann.You can use the certificates in this store to create a chain of certificates, which can be traced back to a certification authority certificate in this store.

    Wichtig

    Der lokale Computer stuft alle Zertifikate in diesem Speicher als implizit vertrauenswürdig ein; dies gilt auch, wenn das Zertifikat im Speicher nicht von einer vertrauenswürdigen Zertifizierungsstelle eines Drittanbieters stammt.The local computer implicitly trusts any certificate placed in this store, even if the certificate does not come from a trusted third-party certification authority. Aus diesem Grund sollten Sie in diesem Speicher nur Zertifikate ablegen, wenn Sie dem Aussteller uneingeschränkt vertrauen und sich der möglichen Folgen bewusst sind.For this reason, do not place any certificate into this store unless you fully trust the issuer and understand the consequences.

  • Personal.Personal. Dieser Speicher wird für Zertifikate verwendet, die dem Benutzer eines Computers zugeordnet sind.This store is used for certificates associated with a user of a computer. Dieser Speicher wird normalerweise für Zertifikate verwendet, die von einem der Zertifikate der Zertifizierungsstelle im Speicher vertrauenswürdiger Stammzertifizierungsstellen stammen.Typically this store is used for certificates issued by one of the certification authority certificates found in the Trusted Root Certification Authorities store. Darüber hinaus können in diesem Speicher auch selbst ausgestellte Zertifikate abgelegt werden, die von einer Anwendung als vertrauenswürdig eingestuft werden.Alternatively, a certificate found here may be self-issued and trusted by an application.

Weitere Informationen finden Sie unterFor more information about Zertifikatspeichern, finden Sie unter Zertifikatspeichern. certificate stores, see Certificate Stores.

Auswählen eines SpeichersSelecting a Store

Die Auswahl des Speichers für ein Zertifikat hängt davon ab, wie und wann der Dienst oder Client ausgeführt wird.Selecting where to store a certificate depends how and when the service or client runs. Dabei gelten folgende allgemeine Regeln:The following general rules apply:

  • Wenn der WCF-Dienst, in einem Windows-Dienst verwenden gehostet wird das lokalen speichern.If the WCF service is hosted in a Windows service use the local machine store. Sie benötigen Administratorrechte, wenn Sie Zertifikate im lokalen Computerspeicher installieren möchten.Note that administrator privileges are required to install certificates into the local machine store.

  • Wenn Sie den Dienst oder Client eine Anwendung, die unter einem Benutzerkonto ausgeführt wird ist, verwenden Sie die Aktueller Benutzer zu speichern.If the service or client is an application that runs under a user account, then use the current user store.

Zugreifen auf SpeicherAccessing Stores

Speicher werden analog zu Ordnern auf einem Computer durch Zugriffssteuerungslisten (ACLs) geschützt.Stores are protected by access control lists (ACLs), just like folders on a computer. Beim Erstellen eines Diensts, der von Internet Information Services (IIS) gehostet wird, wird der ASP.NETASP.NET-Prozess unter dem ASP.NETASP.NET-Konto ausgeführt.When creating a service hosted by Internet Information Services (IIS), the ASP.NETASP.NET process runs under the ASP.NETASP.NET account. Dieses Konto muss über Zugriff auf den Speicher mit den Zertifikaten verfügen, die von einem Dienst verwendet werden.That account must have access to the store that contains the certificates a service uses. Die zentralen Speicher werden durch eine Standardzugriffssteuerungsliste geschützt, eine Änderung der Listen ist jedoch möglich.Each of the major stores is protected with a default access list, but the lists can be modified. Wenn Sie eine separate Rolle für den Speicherzugriff erstellen, muss diese über die entsprechende Zugriffsberechtigung verfügen.If you create a separate role to access a store, you must grant that role access permission. Informationen zum Ändern der mit dem Tool WinHttpCertConfig.exe Publication Access List, finden Sie unter Vorgehensweise: Erstellen von temporären Zertifikaten für die Verwendung während der Entwicklung.To learn how to modify the access list using the WinHttpCertConfig.exe tool, see How to: Create Temporary Certificates for Use During Development. Weitere Informationen finden Sie unterFor more information about Clientzertifikate mit IIS verwenden, finden Sie unter wie einen Webdienst aufgerufen wird, werden mithilfe von Clientzertifikaten für die Authentifizierung in einer ASP.NET-Webanwendung. using client certificates with IIS, see How to call a Web service by using a client certificate for authentication in an ASP.NET Web application.

Vertrauensketten und ZertifizierungsstellenChain Trust and Certificate Authorities

Zertifikate werden in einer Hierarchie erstellt, in der jedes einzelne Zertifikat mit der Zertifizierungsstelle verknüpft ist, von der es ausgestellt wurde.Certificates are created in a hierarchy where each individual certificate is linked to the CA that issued the certificate. Dieser Link verweist auf das Zertifikat der Zertifizierungsstelle.This link is to the CA’s certificate. Das Zertifikat der Zertifizierungsstelle wird dann mit der Zertifizierungsstelle verknüpft, von der das ursprüngliche Zertifikat der Zertifizierungsstelle ausgestellt wurde.The CA’s certificate then links to the CA that issued the orginal CA’s certificate. Dieser Prozess wird wiederholt, bis das Zertifikat der Stammzertifizierungsstelle erreicht wird.This process is repeated up until the Root CA’s certificate is reached. Das Zertifikat der Stammzertifizierungsstelle ist grundsätzlich vertrauenswürdig.The Root CA’s certificate is inherently trusted.

Digitale Zertifikate werden verwendet, um eine Entität zu authentifizieren, durch die Verwendung dieser Hierarchie, die so genannte eine Vertrauenskette.Digital certificates are used to authenticate an entity by relying this hierarchy, also called a chain of trust. Sie können die Kette eines beliebigen Zertifikats, die über das MMC-Snap-in, indem auf das Zertifikat doppelklicken und anschließend auf Anzeigen der Zertifikatpfad Registerkarte Weitere Informationen finden Sie unterFor more information about Zertifikatketten für eine Zertifizierungsstelle importiert werden, finden Sie unter Wie: Angeben der Zertifizierungsstellenzertifikatskette, der zum Überprüfen von Signaturen verwendet.You can view any certificate's chain using the MMC snap-in by double-clicking any certificate, then clicking the Certificate Path tab. Weitere Informationen finden Sie unterFor more information about importing certificate chains for a Certification authority, see How to: Specify the Certificate Authority Certificate Chain Used to Verify Signatures.

Hinweis

Sie können jeden Aussteller zu einer vertrauenswürdigen Stammzertifizierungsstelle machen, indem Sie das Zertifikat des Ausstellers im Zertifikatspeicher der Stammzertifizierungsstelle ablegen.Any issuer can be designated a trusted root authority by placing the issuer's certificate in the trusted root authority certificate store.

Deaktivieren von VertrauenskettenDisabling Chain Trust

Wenn Sie einen neuen Dienst erstellen, verwenden Sie möglicherweise ein Zertifikat, das nicht von einer vertrauenswürdigen Stammzertifizierungsstelle ausgegeben wurde, oder das ausstellende Zertifikat befindet sich nicht im Speicher vertrauenswürdiger Stammzertifizierungsstellen.When creating a new service, you may be using a certificate that is not issued by a trusted root certificate, or the issuing certificate itself may not be in the Trusted Root Certification Authorities store. Sie können die Überprüfung der Kette von Vertrauensstellungen für ein Zertifikat in Entwicklungsumgebungen vorübergehend deaktivieren.For development purposes only, you can temporarily disable the mechanism that checks the chain of trust for a certificate. Legen Sie dazu die CertificateValidationMode-Eigenschaft auf entweder PeerTrust oder PeerOrChainTrust fest.To do this, set the CertificateValidationMode property to either PeerTrust or PeerOrChainTrust. Durch den jeweiligen Modus wird angegeben, dass das Zertifikat entweder selbst ausgegeben (Peervertrauenszertifikat) oder Teil einer Kette von Vertrauensstellungen ist.Either mode specifies that the certificate can either be self-issued (peer trust) or part of a chain of trust. Die Eigenschaft kann auf eine der folgenden Klassen festgelegt werden:You can set the property on any of the following classes.

KlasseClass EigenschaftProperty
X509ClientCertificateAuthentication X509ClientCertificateAuthentication.CertificateValidationMode
X509PeerCertificateAuthentication X509PeerCertificateAuthentication.CertificateValidationMode
X509ServiceCertificateAuthentication X509ServiceCertificateAuthentication.CertificateValidationMode
IssuedTokenServiceCredential IssuedTokenServiceCredential.CertificateValidationMode

Sie können die Eigenschaft auch in der Konfiguration festlegen.You can also set the property using configuration. Folgende Elemente werden verwendet, um den Validierungsmodus anzugeben:The following elements are used to specify the validation mode:

Benutzerdefinierte AuthentifizierungCustom Authentication

Die CertificateValidationMode-Eigenschaft ermöglicht es auch, die Authentifizierung von Zertifikaten anzupassen.The CertificateValidationMode property also enables you to customize how certificates are authenticated. Die Standardvertrauensebene ist ChainTrust.By default, the level is set to ChainTrust. Wenn Sie den Custom-Wert verwenden möchten, müssen Sie auch das CustomCertificateValidatorType-Attribut auf eine Assembly und einen Typ festlegen, die zur Validierung des Zertifikats verwendet werden.To use the Custom value, you must also set the CustomCertificateValidatorType attribute to an assembly and type used to validate the certificate. Wenn Sie eine benutzerdefinierte Überprüfung erstellen möchten, müssen Sie die abstrakte X509CertificateValidator-Klasse vererben.To create a custom validator, you must inherit from the abstract X509CertificateValidator class.

Wenn Sie eine benutzerdefinierte Authentifizierung erstellen, müssen Sie auf jeden Fall die Validate-Methode überschreiben.When creating a custom authenticator, the most important method to override is the Validate method. Ein Beispiel der benutzerdefinierten Authentifizierung finden Sie unter der x. 509-Zertifikats-Validierungssteuerelement Beispiel.For an example of custom authentication, see the X.509 Certificate Validator sample. Weitere Informationen finden Sie unterFor more information, see Benutzerdefinierte Anmeldeinformationen und Validierung der Anmeldeinformationen. Custom Credential and Credential Validation.

Verwenden von Makecert.exe zum Erstellen einer ZertifikatketteUsing Makecert.exe to Build a Certificate Chain

Mit dem Certificate Creation-Tool (Makecert.exe) werden X.509-Zertifikate sowie Paare aus privaten und öffentlichen Schlüsseln erstellt.The Certificate Creation Tool (Makecert.exe) creates X.509 certificates and private key/public key pairs. Sie können den privaten Schlüssel speichern und zum Ausstellen und Signieren neuer Zertifikate verwenden, um eine Hierarchie von Zertifikaten in einer Kette zu simulieren.You can save the private key to disk and then use it to issue and sign new certificates, thus simulating a hierarchy of chained certificates. Dieses Tool ist lediglich als Unterstützung bei der Entwicklung von Diensten gedacht und sollte niemals zur Erstellung von Zertifikaten für tatsächliche Bereitstellungen verwendet werden.The tool is intended for use only as an aid when developing services and should never be used to create certificates for actual deployment. Wenn Sie einen WCFWCF-Dienst entwickeln, können Sie mit Makecert.exe anhand der folgenden Schritte eine Kette von Vertrauensstellungen erstellen.When developing an WCFWCF service, use the following steps to build a chain of trust with Makecert.exe.

So erstellen Sie eine Kette von Vertrauensstellungen mit Makecert.exeTo build a chain of trust with Makecert.exe

  1. Erstellen Sie ein (selbst signiertes) temporäres Zertifikat für eine Stammzertifizierungsstelle mit MakeCert.exe.Create a temporary root authority (self-signed) certificate using the MakeCert.exe tool. Speichern Sie den privaten Schlüssel.Save the private key to the disk.

  2. Verwenden Sie das neue Zertifikat, um ein anderes Zertifikat auszustellen, das den öffentlichen Schlüssel enthält.Use the new certificate to issue another certificate that contains the public key.

  3. Importieren Sie das Zertifikat der Stammzertifizierungsstelle in den Speicher vertrauenswürdiger Stammzertifizierungsstellen.Import the root authority certificate into the Trusted Root Certification Authorities store.

  4. Schrittweise Anweisungen finden Sie unter Vorgehensweise: Erstellen von temporären Zertifikaten für die Verwendung während der Entwicklung.For step-by-step instructions, see How to: Create Temporary Certificates for Use During Development.

Welches Zertifikat soll verwendet werden?Which Certificate to Use?

Im Zusammenhang mit Zertifikaten wird häufig danach gefragt, welches Zertifikat und warum dieses verwendet werden soll.Common questions about certificates are which certificate to use, and why. Die Antwort hängt davon ab, ob Sie einen Client oder einen Dienst programmieren.The answer depends on whether you are programming a client or service. Die folgenden Informationen bieten eine allgemeine Orientierung und stellen keine erschöpfende Antwort auf diese Fragen dar.The following information provides a general guideline and is not an exhaustive answer to these questions.

DienstzertifikateService Certificates

Dienstzertifikate werden in erster Linie zur Authentifizierung von Servern gegenüber Clients verwendet.Service certificates have the primary task of authenticating the server to clients. Eine zunächst überprüft, ob bei der Authentifizierung eines Clients eines Servers ist beim Vergleichen des Werts, der die Betreff Feld auf den Uniform Resource Identifier (URI) Verbindung mit dem Dienst verwendet: das DNS von übereinstimmen.One of the initial checks when a client authenticates a server is to compare the value of the Subject field to the Uniform Resource Identifier (URI) used to contact the service: the DNS of both must match. Angenommen, wenn der URI des Diensts ist "http://www.contoso.com/endpoint/" und dann die Betreff Feld muss auch den Wert "www.contoso.com" enthalten.For example, if the URI of the service is "http://www.contoso.com/endpoint/" then the Subject field must also contain the value "www.contoso.com".

Das Feld kann mehrere Werte enthalten, denen jeweils eine Initialisierung zur Angabe des Werts vorangeht.Note that the field can contain several values, each prefixed with an initialization to indicate the value. Die am häufigsten verwendete Initialisierung lautet "CN" (Common Name), z. B. "CN = www.contoso.com".Most commonly, the initialization is "CN" for common name, for example, "CN = www.contoso.com". Es ist auch möglich, für die Betreff Feld leer ist, in diesem Fall werden die Alternativer Antragstellername Feld darf die DNS-Namen Wert.It is also possible for the Subject field to be blank, in which case the Subject Alternative Name field can contain the DNS Name value.

Beachten Sie außerdem den Wert der Beabsichtigte Zwecke Feld des Zertifikats sollte einen entsprechenden Wert ein, z. B. "Serverauthentifizierung" oder "Clientauthentifizierung" enthalten.Also note the value of the Intended Purposes field of the certificate should include an appropriate value, such as "Server Authentication" or "Client Authentication".

ClientzertifikateClient Certificates

Clientzertifikate werden normalerweise nicht von der Zertifizierungsstelle eines Drittanbieters ausgegeben.Client certificates are not typically issued by a third-party certification authority. Stattdessen enthält der persönliche Speicher des aktuellen Benutzers für gewöhnlich Zertifikate, die von einer Stammzertifizierungsstelle dort abgelegt wurden und deren beabsichtigter Zweck die "Clientauthentifizierung" ist.Instead, the Personal store of the current user location typically contains certificates placed there by a root authority, with an intended purpose of "Client Authentication". Diese Zertifikate können vom Client verwendet werden, wenn eine wechselseitige Authentifizierung erforderlich ist.The client can use such a certificate when mutual authentication is required.

Online-Sperrüberprüfung und Offline-SperrüberprüfungOnline Revocation and Offline Revocation

ZertifikatsgültigkeitCertificate Validity

Jedes Zertifikat gilt nur für einen bestimmten Zeitraum, bezeichnet der Gültigkeitsdauer.Every certificate is valid only for a given period of time, called the validity period. Die Gültigkeitsdauer wird definiert, indem die gültig von und gültig bis Felder eines x. 509-Zertifikats.The validity period is defined by the Valid from and Valid to fields of an X.509 certificate. Während der Authentifizierung wird überprüft, ob das Zertifikat eine entsprechende Gültigkeitsdauer aufweist.During authentication, the certificate is checked to determine whether the certificate is still within the validity period.

ZertifikatsperrlisteCertificate Revocation List

Zertifikate können innerhalb der Gültigkeitsdauer jederzeit von der Zertifizierungsstelle widerrufen werden.At any time during the validity period, the certification authority can revoke a certificate. Dafür kann es viele Gründe geben, beispielsweise kann die Sicherheit des privaten Schlüssels eines Zertifikats gefährdet sein.This can occur for many reasons, such as a compromise of the private key of the certificate.

In diesem Fall werden auch alle untergeordneten Zertifikate des widerrufenen Zertifikats ungültig und im Rahmen des Authentifizierungsprozesses als nicht vertrauenswürdig eingestuft.When this occurs, any chains that descend from the revoked certificate are also invalid, and are not trusted during authentication procedures. Um herauszufinden, welche Zertifikate gesperrt werden, jeder Aussteller veröffentlicht ein und Date-Zeitstempel Zertifikatsperrliste (CRL).To find out which certificates are revoked, each issuer publishes a time- and date-stamped certificate revocation list (CRL). Diese Liste kann mit einer Online-Sperrüberprüfung oder mit einer Offline-Sperrüberprüfung überprüft werden, indem die RevocationMode-Eigenschaft oder die DefaultRevocationMode-Eigenschaft der folgenden Klassen einschließlich der X509RevocationMode-Klassen auf einen der X509ClientCertificateAuthentication-Enumerationswerte festgelegt wird: X509PeerCertificateAuthentication, X509ServiceCertificateAuthentication, IssuedTokenServiceCredential.The list can be checked using either online revocation or offline revocation by setting the RevocationMode or DefaultRevocationMode property of the following classes to one of the X509RevocationMode enumeration values: X509ClientCertificateAuthentication, X509PeerCertificateAuthentication, X509ServiceCertificateAuthentication, and the IssuedTokenServiceCredential classes. Der Standardwert aller Eigenschaften lautet Online.The default value for all properties is Online.

Sie können den Modus auch festlegen, in der Konfiguration mit der revocationMode Attribut beider der <Authentifizierung > (von der <ServiceBehaviors >) und die <Authentifizierung > (von der <EndpointBehaviors >).You can also set the mode in configuration using the revocationMode attribute of both the <authentication> (of the <serviceBehaviors>) and the <authentication> (of the <endpointBehaviors>).

SetCertificate-MethodeThe SetCertificate Method

In WCFWCF müssen häufig Zertifikate oder Gruppen von Zertifikaten angegeben werden, die von einem Dienst oder von einem Client zum Authentifizieren, Verschlüsseln oder digitalen Signieren von Nachrichten verwendet werden.In WCFWCF, you must often specify a certificate or set of certificates a service or client is to use to authenticate, encrypt, or digitally sign a message. Dies kann programmgesteuert mit der SetCertificate-Methode verschiedener Klassen geschehen, die X.509-Zertifikate darstellen.You can do this programmatically by using the SetCertificate method of various classes that represent X.509 certificates. Folgende Klassen geben mit der SetCertificate-Methode ein Zertifikat an.The following classes use the SetCertificate method to specify a certificate.

KlasseClass MethodeMethod
PeerCredential SetCertificate
X509CertificateInitiatorClientCredential SetCertificate
X509CertificateRecipientServiceCredential SetCertificate
X509CertificateInitiatorServiceCredential
SetCertificate

Bei der SetCertificate-Methode werden ein Speicherort und ein Speicher angegeben sowie ein Suchtyp (x509FindType-Parameter), der ein Feld des Zertifikats bestimmt, und ein Wert, der im Feld gefunden werden soll.The SetCertificate method works by designating a store location and store, a "find" type (x509FindType parameter) that specifies a field of the certificate, and a value to find in the field. Der folgende Code erstellt z. B. eine ServiceHost Instanz, und legt das Dienstzertifikat zum Authentifizieren des Dienstes für Clients mit der SetCertificate Methode.For example, the following code creates a ServiceHost instance and sets the service certificate used to authenticate the service to clients with the SetCertificate method.

Uri baseAddress = new Uri("http://cohowinery.com/services");
ServiceHost sh = new ServiceHost(typeof(CalculatorService), baseAddress );
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "cohowinery.com");
Dim baseAddress As New Uri("http://cohowinery.com/services")
Dim sh As New ServiceHost(GetType(CalculatorService), baseAddress)
sh.Credentials.ServiceCertificate.SetCertificate( _
StoreLocation.LocalMachine, StoreName.My, _
X509FindType.FindBySubjectName, "cohowinery.com")

Mehrere Zertifikate mit dem gleichen WertMultiple Certificates with the Same Value

Ein Speicher kann mehrere Zertifikate mit dem gleichen Antragstellernamen enthalten.A store may contain multiple certificates with the same subject name. Dies bedeutet, dass, wenn Sie, dass angeben die x509FindType ist FindBySubjectName oder FindBySubjectDistinguishedName, und mehr als ein Zertifikat hat den gleichen Wert, eine Ausnahme wird ausgelöst, da es keine Möglichkeit, zu unterscheiden, welches Zertifikat erforderlich ist.This means that if you specify that the x509FindType is FindBySubjectName or FindBySubjectDistinguishedName, and more than one certificate has the same value, an exception is thrown because there is no way to distinguish which certificate is required. Legen Sie den x509FindType auf FindByThumbprint fest, um dem entgegenzuwirken.You can mitigate this by setting the x509FindType to FindByThumbprint. Das Fingerabdruckfeld enthält einen eindeutigen Wert, mit dem ein bestimmtes Zertifikat in einem Speicher gefunden werden kann.The thumbprint field contains a unique value that can be used to find a specific certificate in a store. Dies hat jedoch einen Nachteil: Wenn das Zertifikat widerrufen oder erneuert wird, schlägt die SetCertificate-Methode fehl, da der Fingerabdruck ebenfalls nicht mehr verfügbar ist.However, this has its own disadvantage: if the certificate is revoked or renewed, the SetCertificate method fails because the thumbprint is also gone. Ist das Zertifikat nicht mehr gültig ist, schlägt die Authentifizierung fehl.Or, if the certificate is no longer valid, authentication fails. Legen Sie den x590FindType-Parameter auf FindByIssuerName fest, und geben Sie den Namen des Ausstellers an, um dem entgegenzuwirken.The way to mitigate this is to set the x590FindType parameter to FindByIssuerName and specify the issuer's name. Wenn kein bestimmter Aussteller angegeben werden muss, können Sie auch einen der anderen X509FindType-Enumerationswerte wie FindByTimeValid festlegen.If no particular issuer is required, you can also set one of the other X509FindType enumeration values, such as FindByTimeValid.

Zertifikate in der KonfigurationCertificates in Configuration

Sie können Zertifikate auch in der Konfiguration festlegen.You can also set certificates by using configuration. Wenn Sie einen Dienst erstellen, werden Anmeldeinformationen, Zertifikate, einschließlich angegeben, unter der <ServiceBehaviors >.If you are creating a service, credentials, including certificates, are specified under the <serviceBehaviors>. Wenn Sie einen Client programmieren, werden Zertifikate angegeben, unter der <EndpointBehaviors >.When you are programming a client, certificates are specified under the <endpointBehaviors>.

Zuordnen eines Zertifikats zu einem BenutzerkontoMapping a Certificate to a User Account

IIS und Active Directory bieten u. a. die Möglichkeit, ein Zertifikat einem Windows-Benutzerkonto zuzuordnen.A feature of IIS and Active Directory is the ability to map a certificate to a Windows user account. Weitere Informationen finden Sie unterFor more information about Das Feature "" finden Sie unter Zuordnen von Zertifikaten zu Benutzerkonten. the feature, see Map certificates to user accounts.

Weitere Informationen finden Sie unterFor more information about Mithilfe von Active Directory-Zuordnung finden Sie Zuordnung von Clientzertifikaten mithilfe der Zuordnung von Directory Service. using Active Directory mapping, see Mapping Client Certificates with Directory Service Mapping.

Wenn diese Funktion aktiviert ist, können Sie die MapClientCertificateToWindowsAccount-Eigenschaft der X509ClientCertificateAuthentication-Klasse auf true festlegen.With this capability enabled, you can set the MapClientCertificateToWindowsAccount property of the X509ClientCertificateAuthentication class to true. In der Konfiguration können Sie festlegen der mapClientCertificateToWindowsAccount Attribut von der <Authentifizierung > Element true, wie im folgenden Code gezeigt.In configuration, you can set the mapClientCertificateToWindowsAccount attribute of the <authentication> element to true, as shown in the following code.

<serviceBehaviors>  
 <behavior name="MappingBehavior">  
  <serviceCredentials>  
   <clientCertificate>  
    <authentication certificateValidationMode="None" mapClientCertificateToWindowsAccount="true" />  
   </clientCertificate>  
  </serviceCredentials>  
 </behavior>  
</serviceBehaviors>  

Die Zuordnung eines X.509-Zertifikats zu einem Token, das ein Windows-Benutzerkonto darstellt, wird als Erweiterung der Berechtigungen angesehen, da das Windows-Token nach der Zuordnung Zugriff auf geschützte Ressourcen ermöglicht.Mapping an X.509 certificate to the token that represents a Windows user account is considered an elevation of privilege because, once mapped, the Windows token can be used to gain access to protected resources. Das X.509-Zertifikat muss daher vor der Zuordnung die entsprechenden Anforderungen der Domänenrichtlinie erfüllen.Therefore, domain policy requires the X.509 certificate to comply with its policy prior to mapping. Die SChannel Sicherheitspaket erzwingt diese Anforderung.The SChannel security package enforces this requirement.

.NET Framework Version 3.5.NET Framework version 3.5 stellt bei Verwendung von WCFWCF oder höher sicher, dass das Zertifikat der Domänenrichtlinie entspricht, bevor es dem Windows-Konto zugeordnet wird.When using .NET Framework Version 3.5.NET Framework version 3.5 or later, WCFWCF ensures the certificate conforms to domain policy before it is mapped to a Windows account.

In der ersten Version von WCFWCF erfolgt die Zuordnung ohne auf die Domänenrichtlinie zurückzugreifen.In the first release of WCFWCF, mapping is done without consulting the domain policy. Möglicherweise tritt daher bei älteren Anwendungen, die mit dem ersten Release ausgeführt werden konnten, ein Fehler auf, wenn die Zuordnung aktiviert ist und die Anforderungen der Domänenrichtlinie vom X.509-Zertifikat nicht erfüllt werden.Therefore it is possible that older applications that used to work when running under the first release, fails if the mapping is enabled and the X.509 certificate does not satisfy the domain policy.

Siehe auchSee Also

System.ServiceModel.Channels
System.ServiceModel.Security
System.ServiceModel
X509FindType
Sichern von Diensten und ClientsSecuring Services and Clients