Работа с сертификатамиWorking with Certificates

Для программирования безопасности Windows Communication Foundation (WCF) обычно используются цифровые сертификаты X.509, с помощью которых выполняется проверка подлинности клиентов и серверов, шифрование и создание цифровой подписи для сообщений.To program Windows Communication Foundation (WCF) security, X.509 digital certificates are commonly used to authenticate clients and servers, encrypt, and digitally sign messages. В этом разделе содержится краткое описание возможностей для работы с цифровыми сертификатами X.509 и порядка использования этих возможностей в WCF. Кроме того, этот раздел включает ссылки на другие разделы с более подробным объяснением основных понятий и порядка выполнения общих задач с использованием WCF и сертификатов.This topic briefly explains X.509 digital certificate features and how to use them in WCF, and includes links to topics that explain these concepts further or that show how to accomplish common tasks using WCF and certificates.

Вкратце, цифровой сертификат является частью инфраструктуры открытых ключей (PKI), представляющей собой систему цифровых сертификатов, центров сертификации и других центров регистрации, которые используются для проверки подлинности каждой стороны, участвующей в электронной транзакции, посредством использования шифрования с открытым ключом.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. Сертификаты выдаются центрами сертификации, и каждый сертификат имеет набор полей, в которых содержатся такие данные, как субъект (сущность, которой выдается сертификат), срок действия (период времени, в течение которого сертификат является действительным), издатель (лицо, выдавшее сертификат) и открытый ключ.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. В WCF каждое из этих свойств обрабатывается как утверждение Claim, и каждое утверждение затем подразделяется на два типа: удостоверение и право.In WCF, each of these properties is processed as a Claim, and each claim is further divided into two types: identity and right. Дополнительные сведения о сертификатах X.509 см. в разделе Сертификаты открытого ключа X.509.For more information about X.509 certificates see X.509 Public Key Certificates. Дополнительные сведения об утверждениях и авторизации в WCF см. в разделе Управление утверждениями и авторизацией с помощью модели удостоверения.For more information about Claims and Authorization in WCF see Managing Claims and Authorization with the Identity Model. Дополнительные сведения о реализации PKI см. в статье Enterprise PKI с Windows Server 2012 R2 Active Directory Certificate Services.For more information about implementing a PKI, see Enterprise PKI with Windows Server 2012 R2 Active Directory Certificate Services.

Основной функцией сертификата является удостоверение подлинности владельца сертификата для других сторон.The primary function of a certificate is to authenticate the identity of the owner of the certificate to others. В сертификате содержится открытый ключ владельца, в то время как закрытый ключ хранится у владельца.A certificate contains the public key of the owner, while the owner retains the private key. Открытый ключ можно использовать для зашифровывания сообщений, передаваемых владельцу сертификата.The public key can be used to encrypt messages sent to the owner of the certificate. Доступ к закрытому ключу имеет только владелец сертификата, поэтому только он может расшифровать эти сообщения.Only the owner has access to the private key, so only the owner can decrypt those messages.

Сертификаты должны выдаваться центром сертификации, который обычно является сторонним издателем сертификатов.Certificates must be issued by a certification authority, which is often a third-party issuer of certificates. Домен Windows содержит центр сертификации, который можно использовать для выдачи сертификатов компьютерам домена.On a Windows domain, a certification authority is included that can be used to issue certificates to computers on the domain.

Просмотр сертификатовViewing Certificates

При работе с сертификатами зачастую необходимо просматривать их и проверять определенные свойства.To work with certificates, it is often necessary to view them and examine their properties. Это легко выполняется с помощью консоли управления (MMC).This is easily done with the Microsoft Management Console (MMC) snap-in tool. Дополнительные сведения см. в разделе Практическое руководство. Просмотр сертификатов с помощью оснастки MMC.For more information, see How to: View Certificates with the MMC Snap-in.

Хранилища сертификатовCertificate Stores

Сертификаты хранятся в хранилищах.Certificates are found in stores. Существует два основных хранилища, которые подразделяются на вложенные хранилища.Two major store locations exist that are further divided into sub-stores. Администратор компьютера может просматривать оба основных хранилища с помощью средства MMC.If you are the administrator on a computer, you can view both major stores by using the MMC snap-in tool. Пользователи, не являющиеся администраторами, могут просматривать только хранилище текущего пользователя.Non-administrators can view only the current user store.

  • Хранилище локального компьютера.The local machine store. Он содержит сертификаты, к которым обращаются машинные процессы, например ASP.NET.This contains the certificates accessed by machine processes, such as ASP.NET. Это расположение используется для хранения сертификатов, удостоверяющих подлинность сервера для клиентов.Use this location to store certificates that authenticate the server to clients.

  • Хранилище текущего пользователя.The current user store. Интерактивные приложения обычно помещают сертификаты в это хранилище для текущего пользователя компьютера.Interactive applications typically place certificates here for the computer's current user. В случае клиентского приложения в это хранилище обычно помещаются сертификаты, используемые для проверки подлинности пользователя при подключении к службе.If you are creating a client application, this is where you typically place certificates that authenticate a user to a service.

Эти два хранилища подразделяются на вложенные хранилища.These two stores are further divided into sub-stores. Ниже представлены наиболее важные вложенные хранилища, используемые при программировании с помощью WCF.The most important of these when programming with WCF include:

  • Доверенные корневые центры сертификации.Trusted Root Certification Authorities. Сертификаты из этого хранилища можно использовать для создания цепочки сертификатов, которую можно проследить до сертификата центра сертификации в этом хранилище.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.

    Важно!

    Локальный компьютер полностью доверяет любому сертификату, помещенному в это хранилище, даже если он поступил не из доверенного стороннего центра сертификации.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. Поэтому в данное хранилище не следует помещать сертификаты, к издателям которых нет полного доверия, или если последствия не до конца ясны.For this reason, do not place any certificate into this store unless you fully trust the issuer and understand the consequences.

  • Личное.Personal. Это хранилище используется для хранения сертификатов, связанных с пользователем компьютера.This store is used for certificates associated with a user of a computer. Обычно в этом хранилище хранятся сертификаты, выданные одним из центров сертификации, сертификаты которых находятся в хранилище «Доверенные корневые центры сертификации».Typically this store is used for certificates issued by one of the certification authority certificates found in the Trusted Root Certification Authorities store. С другой стороны, сертификат, находящийся в этом хранилище, может быть самостоятельно выданным, и ему будет доверять приложение.Alternatively, a certificate found here may be self-issued and trusted by an application.

Дополнительные сведения о хранилищах сертификатов см. в разделе Хранилища сертификатов.For more information about certificate stores, see Certificate Stores.

Выбор хранилищаSelecting a Store

Выбор расположения для хранения сертификата зависит от режима и места выполнения клиента или службы.Selecting where to store a certificate depends how and when the service or client runs. Действуют следующие общие правила.The following general rules apply:

  • Если служба WCF размещается в службе Windows, используйте хранилище локального компьютера.If the WCF service is hosted in a Windows service use the local machine store. Обратите внимание, что для установки сертификатов в хранилище локального компьютера требуются привилегии администратора.Note that administrator privileges are required to install certificates into the local machine store.

  • Если служба или клиент является приложением, выполняющимся от имени учетной записи пользователя, используйте хранилище текущего пользователя.If the service or client is an application that runs under a user account, then use the current user store.

Доступ к хранилищамAccessing Stores

Хранилища защищаются с помощью списков управления доступом (ACL) аналогично папкам на компьютере.Stores are protected by access control lists (ACLs), just like folders on a computer. При создании службы, размещенной службы IIS (IIS), процесс ASP.NET выполняется в учетной записи ASP.NET.When creating a service hosted by Internet Information Services (IIS), the ASP.NET process runs under the ASP.NET account. Эта учетная запись должна иметь доступ к хранилищу, в котором содержатся используемые службой сертификаты.That account must have access to the store that contains the certificates a service uses. Каждое основное хранилище защищается с помощью списка управления доступом по умолчанию, однако списки можно изменять.Each of the major stores is protected with a default access list, but the lists can be modified. При создании отдельной роли для доступа к хранилищу необходимо предоставить ей разрешение на доступ.If you create a separate role to access a store, you must grant that role access permission. Сведения о том, как изменить список доступа с помощью средства WinHttpCertConfig.exe, см. в разделе Практическое руководство. Создание временных сертификатов для использования во время разработки.To learn how to modify the access list using the WinHttpCertConfig.exe tool, see How to: Create Temporary Certificates for Use During Development.

Цепочка доверия и центры сертификацииChain Trust and Certificate Authorities

Сертификаты создаются в иерархии, где каждый отдельный сертификат связан с выдавшим его органом сертификации.Certificates are created in a hierarchy where each individual certificate is linked to the CA that issued the certificate. Эта ссылка указывает на сертификат органа сертификации.This link is to the CA’s certificate. Затем сертификат ЦС связывается с центром сертификации, который выдал сертификат исходного ЦС.The CA’s certificate then links to the CA that issued the original CA’s certificate. Процесс повторяется до тех пор, пока не будет достигнут корневой сертификат органа сертификации.This process is repeated up until the Root CA’s certificate is reached. Сертификат корневого органа сертификации является изначально доверенным.The Root CA’s certificate is inherently trusted.

Цифровые сертификаты используются для удостоверения подлинности сущности на основе этой иерархии, которая также называется цепочкой сертификатов.Digital certificates are used to authenticate an entity by relying on this hierarchy, also called a chain of trust. Вы можете просмотреть цепочку сертификатов с помощью оснастки MMC, дважды щелкнув любой сертификат, а затем перейдя на вкладку путь к сертификату . Дополнительные сведения об импорте цепочек сертификатов для центра сертификации см. в разделе инструкции. Указание цепочки сертификатов центра сертификации, используемой для проверки подписей.You can view any certificate's chain using the MMC snap-in by double-clicking any certificate, then clicking the Certificate Path tab. For more information about importing certificate chains for a Certification authority, see How to: Specify the Certificate Authority Certificate Chain Used to Verify Signatures.

Примечание

Любой издатель может быть сделан доверенным корневым центром; для этого необходимо поместить сертификат издателя в хранилище сертификатов доверенных корневых центров.Any issuer can be designated a trusted root authority by placing the issuer's certificate in the trusted root authority certificate store.

Отключение механизма проверки цепочки доверияDisabling Chain Trust

При создании новой службы пользователь может использовать сертификат, который был выдан центром сертификации, отличным от доверенного, или сертификат издателя может отсутствовать в хранилище «Доверенные корневые центры сертификации».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. Предусмотрена возможность временного отключения механизма, проверяющего цепочку сертификатов для заданного сертификата; эта возможность должна использоваться только в процессе разработки.For development purposes only, you can temporarily disable the mechanism that checks the chain of trust for a certificate. Чтобы отключить данный механизм, задайте для свойства CertificateValidationMode значение PeerTrust или PeerOrChainTrust.To do this, set the CertificateValidationMode property to either PeerTrust or PeerOrChainTrust. Эти режимы определяют, что сертификат может быть либо самостоятельно выданным (доверие одноранговой группы), либо являться частью цепочки доверия.Either mode specifies that the certificate can either be self-issued (peer trust) or part of a chain of trust. Указанное свойство можно задать для любого из следующих классов.You can set the property on any of the following classes.

КлассClass Свойство.Property
X509ClientCertificateAuthentication X509ClientCertificateAuthentication.CertificateValidationMode
X509PeerCertificateAuthentication X509PeerCertificateAuthentication.CertificateValidationMode
X509ServiceCertificateAuthentication X509ServiceCertificateAuthentication.CertificateValidationMode
IssuedTokenServiceCredential IssuedTokenServiceCredential.CertificateValidationMode

Свойство также можно задать с использованием конфигурации.You can also set the property using configuration. Для задания режима проверки используются следующие элементы.The following elements are used to specify the validation mode:

Нестандартная проверка подлинностиCustom Authentication

Свойство CertificateValidationMode также позволяет настроить способ проверки сертификатов.The CertificateValidationMode property also enables you to customize how certificates are authenticated. По умолчанию задано значение ChainTrust.By default, the level is set to ChainTrust. Чтобы использовать значение Custom, необходимо также установить атрибут CustomCertificateValidatorType для сборки и типа, которые используются при проверке сертификата.To use the Custom value, you must also set the CustomCertificateValidatorType attribute to an assembly and type used to validate the certificate. Для создания пользовательского проверяющего элемента управления необходимо наследование от абстрактного класса X509CertificateValidator.To create a custom validator, you must inherit from the abstract X509CertificateValidator class.

При создании пользовательской структуры проверки подлинности наиболее важным методом, который необходимо переопределить, является метод Validate.When creating a custom authenticator, the most important method to override is the Validate method. Образец создания пользовательской структуры проверки подлинности см. в разделе Проверяющий элемент управления для сертификатов X.509.For an example of custom authentication, see the X.509 Certificate Validator sample. Дополнительные сведения см. в разделе Пользовательские учетные данные и проверка учетных данных.For more information, see Custom Credential and Credential Validation.

Использование командлета PowerShell New-SelfSignedCertificate для создания цепочки сертификатовUsing the PowerShell New-SelfSignedCertificate Cmdlet to Build a Certificate Chain

Командлет PowerShell New-SelfSignedCertificate создает сертификаты X. 509 и пары "закрытый ключ — открытый ключ".The PowerShell New-SelfSignedCertificate cmdlet creates X.509 certificates and private key/public key pairs. Закрытый ключ можно сохранить на диск, а затем использовать его для выдачи и подписи новых сертификатов, что позволяет имитировать иерархию цепочки сертификатов.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. Командлет предназначен для использования только в качестве вспомогательной службы при разработке служб и никогда не должен использоваться для создания сертификатов для фактического развертывания.The cmdlet is intended for use only as an aid when developing services and should never be used to create certificates for actual deployment. При разработке службы WCF выполните следующие действия, чтобы создать цепочку доверия с помощью командлета New-SelfSignedCertificate.When developing a WCF service, use the following steps to build a chain of trust with the New-SelfSignedCertificate cmdlet.

Создание цепочки доверия с помощью командлета New-SelfSignedCertificateTo build a chain of trust with the New-SelfSignedCertificate cmdlet

  1. Создайте временный сертификат корневого центра сертификации с помощью командлета New-SelfSignedCertificate.Create a temporary root authority (self-signed) certificate using the New-SelfSignedCertificate cmdlet. Сохраните закрытый ключ на диск.Save the private key to the disk.

  2. Воспользуйтесь новым сертификатом для выдачи другого сертификата, содержащего открытый ключ.Use the new certificate to issue another certificate that contains the public key.

  3. Импортируйте сертификат корневого центра в хранилище «Доверенные корневые центры сертификации».Import the root authority certificate into the Trusted Root Certification Authorities store.

  4. Подробные инструкции см. в разделе Практическое руководство. Создание временных сертификатов для использования во время разработки.For step-by-step instructions, see How to: Create Temporary Certificates for Use During Development.

Выбор сертификата для использованияWhich Certificate to Use?

Наиболее распространенными вопросами о сертификатах являются следующие: какой сертификат использовать и почему?Common questions about certificates are which certificate to use, and why. Ответ зависит от того, что программирует пользователь - клиент или службу.The answer depends on whether you are programming a client or service. Ниже представлены общие рекомендации; следует иметь виду, что они не являются исчерпывающими ответами на поставленные вопросы.The following information provides a general guideline and is not an exhaustive answer to these questions.

Сертификаты службService Certificates

Основной задачей сертификатов служб является удостоверение подлинности сервера для клиентов.Service certificates have the primary task of authenticating the server to clients. При проверке подлинности сервера клиентом одной из исходных проверок является сравнение значения поля Субъект с универсальным кодом ресурса (URI), используемым для обращения к службе: DNS-имена должны совпадать.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. Например, если URI службы, http://www.contoso.com/endpoint/ поле subject также должно содержать значение www.contoso.com .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.

Обратите внимание, что в этом поле может содержаться несколько значений с отдельными префиксами.Note that the field can contain several values, each prefixed with an initialization to indicate the value. Чаще всего для общего имени используется инициализация "CN", например CN = www.contoso.com .Most commonly, the initialization is "CN" for common name, for example, CN = www.contoso.com. Кроме того, поле Субъект может быть пустым; в этом случае в поле Альтернативное имя субъекта может содержаться значение DNS-имя.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.

Также обратите внимание, что поле Назначения сертификата должно включать соответствующее значение, например "Проверка подлинности сервера" или "Проверка подлинности клиента".Also note the value of the Intended Purposes field of the certificate should include an appropriate value, such as "Server Authentication" or "Client Authentication".

Сертификаты клиентаClient Certificates

Сертификаты клиентов, как правило, выдаются не сторонними центрами сертификации.Client certificates are not typically issued by a third-party certification authority. В хранилище «Личное» текущего пользователя обычно содержатся сертификаты, выданные корневым центром; в поле «Назначения» этих сертификатов задано значение «Проверка подлинности клиента».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". Клиент может использовать такой сертификат, когда требуется взаимная проверка подлинности.The client can use such a certificate when mutual authentication is required.

Проверка отзыва сертификатов в режиме подключения к сети и автономном режимеOnline Revocation and Offline Revocation

Срок действия сертификатаCertificate Validity

Каждый сертификат действителен только в течение заданного периода времени, который называется сроком действия.Every certificate is valid only for a given period of time, called the validity period. Срок действия определяется значениями полей Действителен с и Действителен по сертификата X.509.The validity period is defined by the Valid from and Valid to fields of an X.509 certificate. Во время проверки подлинности проверяется, не истек ли срок действия сертификата.During authentication, the certificate is checked to determine whether the certificate is still within the validity period.

Список отзыва сертификатовCertificate Revocation List

Центр сертификации может отменить действующий сертификат в любой момент.At any time during the validity period, the certification authority can revoke a certificate. Это может произойти по многим причинам, например при компрометации закрытого ключа сертификата.This can occur for many reasons, such as a compromise of the private key of the certificate.

В этом случае все цепочки, происходящие от отозванного сертификата, также становятся недействительными и механизмы проверки подлинности перестают им доверять.When this occurs, any chains that descend from the revoked certificate are also invalid, and are not trusted during authentication procedures. Для обозначения отозванных сертификатов каждый издатель публикует список отзыва сертификатов, имеющий отметку даты и времени.To find out which certificates are revoked, each issuer publishes a time- and date-stamped certificate revocation list (CRL). Этот список можно проверить с помощью режима с подключением к сети или автономного режима, задав одно из значений перечисления RevocationMode для свойства DefaultRevocationMode или X509RevocationMode следующих классов: X509ClientCertificateAuthentication, 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. Значение по умолчанию для всех свойств - Online.The default value for all properties is Online.

Можно также задать режим в конфигурации, используя revocationMode атрибут как <authentication> (of), так <serviceBehaviors> и <authentication> (of <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>).

Метод SetCertificateThe SetCertificate Method

В WCF часто требуется задать сертификат или набор сертификатов, который служба или клиент будут использовать для проверки подлинности, шифрования или подписи сообщения.In WCF, 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. Это можно сделать программно с помощью метода SetCertificate различных классов, представляющих сертификаты X.509.You can do this programmatically by using the SetCertificate method of various classes that represent X.509 certificates. Следующие классы используют метод SetCertificate для задания сертификата.The following classes use the SetCertificate method to specify a certificate.

ClassClass МетодMethod
PeerCredential SetCertificate
X509CertificateInitiatorClientCredential SetCertificate
X509CertificateRecipientServiceCredential SetCertificate
X509CertificateInitiatorServiceCredential
SetCertificate

Метод SetCertificate позволяет задать хранилище и его расположение, тип поиска (параметр x509FindType), определяющий поле сертификата, и значение, которое требуется найти в данном поле.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. Например, следующий код создает экземпляр ServiceHost и задает сертификат службы, используемый с целью удостоверения подлинности службы для клиентов, с помощью метода SetCertificate.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")

Несколько сертификатов с одинаковыми значениями полейMultiple Certificates with the Same Value

В хранилище может содержаться несколько сертификатов с одним и тем же именем субъекта.A store may contain multiple certificates with the same subject name. Поэтому если для параметра x509FindType задано значение FindBySubjectName или FindBySubjectDistinguishedName и существует несколько сертификатов с таким значением, возникает исключение, поскольку в этом случае невозможно определить, какой именно сертификат требуется использовать.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. Это можно подавить, задав для параметра x509FindType значение FindByThumbprint.You can mitigate this by setting the x509FindType to FindByThumbprint. В поле отпечатка содержится уникальное значение, которое можно использовать для поиска конкретного сертификата в хранилище.The thumbprint field contains a unique value that can be used to find a specific certificate in a store. Однако у данного подхода есть свой недостаток: если сертификат был отозван или обновлен, метод SetCertificate выполнить не удастся, поскольку исходный отпечаток на будет найден.However, this has its own disadvantage: if the certificate is revoked or renewed, the SetCertificate method fails because the thumbprint is also gone. А если сертификат является недействительным, проверка подлинности не будет пройдена.Or, if the certificate is no longer valid, authentication fails. Это можно подавить, задав для параметра x590FindType значение FindByIssuerName и указав имя издателя.The way to mitigate this is to set the x590FindType parameter to FindByIssuerName and specify the issuer's name. Если указывать издателя не требуется, можно также задать одно из значений перечисления X509FindType, например FindByTimeValid.If no particular issuer is required, you can also set one of the other X509FindType enumeration values, such as FindByTimeValid.

Сертификаты в конфигурацииCertificates in Configuration

Сертификаты также можно задать с использованием конфигурации.You can also set certificates by using configuration. При создании службы учетные данные, включая сертификаты, задаются в разделе <serviceBehaviors> .If you are creating a service, credentials, including certificates, are specified under the <serviceBehaviors>. При программировании клиента сертификаты задаются в <endpointBehaviors> .When you are programming a client, certificates are specified under the <endpointBehaviors>.

Сопоставление сертификата с учетной записью пользователяMapping a Certificate to a User Account

Службы IIS и Active Directory предусматривают возможность сопоставления сертификата с учетной пользовательской записью Windows.A feature of IIS and Active Directory is the ability to map a certificate to a Windows user account. Дополнительные сведения об этой возможности см. в разделе Сопоставление сертификатов с учетными записями пользователей.For more information about the feature, see Map certificates to user accounts.

Дополнительные сведения о сопоставлении Active Directory см. в разделе Сопоставление сертификатов клиентов с помощью функции сопоставления службы каталогов.For more information about using Active Directory mapping, see Mapping Client Certificates with Directory Service Mapping.

Если эта функция включена, можно задать для свойства MapClientCertificateToWindowsAccount класса X509ClientCertificateAuthentication значение true.With this capability enabled, you can set the MapClientCertificateToWindowsAccount property of the X509ClientCertificateAuthentication class to true. В конфигурации можно задать mapClientCertificateToWindowsAccount атрибуту <authentication> элемента значение true , как показано в следующем коде.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>

Сопоставление сертификата X.509 с маркером, представляющим учетную запись пользователя Windows, считается повышением привилегий, поскольку после сопоставления маркер Windows может использоваться для получения доступа к защищенным ресурсам.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. Поэтому перед сопоставлением необходимо проверить, что сертификат X.509 соответствует политике домена.Therefore, domain policy requires the X.509 certificate to comply with its policy prior to mapping. Проверку этого требования обеспечивает пакет безопасности SChannel.The SChannel security package enforces this requirement.

При использовании .NET Framework 3,5 или более поздних версий WCF гарантирует, что сертификат соответствует политике домена, прежде чем он будет сопоставлен с учетной записью Windows.When using .NET Framework 3.5 or later versions, WCF ensures the certificate conforms to domain policy before it is mapped to a Windows account.

В первом выпуске WCF сопоставление выполняется без обращения к политике домена.In the first release of WCF, mapping is done without consulting the domain policy. Поэтому более старые приложения, которые работали при использовании первого выпуска, могут не работать, если включено сопоставление и сертификат X.509 не удовлетворяет требованиям политики домена.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.

См. такжеSee also