- Windows сертификаты как работают
- Пошаговое руководство. Просмотр сертификатов с помощью оснастки MMC How to: View certificates with the MMC snap-in
- Просмотр сертификатов в оснастке MMC View certificates in the MMC snap-in
- Просмотр сертификатов с помощью средства диспетчера сертификатов View certificates with the Certificate Manager tool
- Просмотр сертификатов для локального устройства To view certificates for the local device
- Просмотр сертификатов для текущего пользователя To view certificates for the current user
- Как открыть «Хранилище сертификатов» в Windows 7
- Открываем «Хранилище сертификатов»
- Способ 1: Окно «Выполнить»
- Способ 2: Панель управления
- Работа с сертификатами Working with Certificates
- Просмотр сертификатов Viewing Certificates
- Хранилища сертификатов Certificate Stores
- Выбор хранилища Selecting a Store
- Доступ к хранилищам Accessing Stores
- Цепочка доверия и центры сертификации Chain Trust and Certificate Authorities
- Отключение механизма проверки цепочки доверия Disabling Chain Trust
- Нестандартная проверка подлинности Custom Authentication
- Использование командлета PowerShell New-SelfSignedCertificate для создания цепочки сертификатов Using the PowerShell New-SelfSignedCertificate Cmdlet to Build a Certificate Chain
- Создание цепочки доверия с помощью командлета New-SelfSignedCertificate To build a chain of trust with the New-SelfSignedCertificate cmdlet
- Выбор сертификата для использования Which Certificate to Use?
- Сертификаты служб Service Certificates
- Сертификаты клиента Client Certificates
- Проверка отзыва сертификатов в режиме подключения к сети и автономном режиме Online Revocation and Offline Revocation
- Срок действия сертификата Certificate Validity
- Список отзыва сертификатов Certificate Revocation List
- Метод SetCertificate The SetCertificate Method
- Несколько сертификатов с одинаковыми значениями полей Multiple Certificates with the Same Value
- Сертификаты в конфигурации Certificates in Configuration
- Сопоставление сертификата с учетной записью пользователя Mapping a Certificate to a User Account
Windows сертификаты как работают
В мире компьютеров существуют цифровые сертификаты, назначение которых примерно то же самое — они четко идентифицируют принадлежность к какому-то лицу, чаще юридическому. Сертификатами часто снабжаются программы или драйверы, чтобы удостоверить их подлинность — тот факт, что они были выпущены определенным, доверенным производителем программного обеспечения. Выдают сертификаты и подтверждают их подлинность специальные международные центры сертификации (Certificate Authority или CA), которые берут деньги за выдачу сертификатов. Все безусловно доверяют этим CA как независимому арбитру. Сам сертификат представляет из себя публичный ключ — специальным образом сгенерированную псевдослучайную, уникальную последовательность данных. Например, сертификатом может быт такой текстовый файл (формат Base-64 X.509):
——BEGIN CERTIFICATE——
MIIE6jCCA9KgAwIBAgIQdB7KfpVPv65NIapf4sT0FjANBgkqhkiG9w0BAQUFADBi
Y2UwHhcNMDYwMTE2MTYzNDMwWhcNMTEwMTE2MTY0MjE1WjBiMRMwEQYKCZImiZPy
.
Y/DDITB1tiiW19A8wNCc/LnScOmn8XZUJYI8AUTOasKK2SGvhQpcZBy+RPD2QUDO
Yy5XK/kWKQE4jtOVkRA=
——END CERTIFICATE——
Сертификаты функционально связаны с криптографией. С точки зрения криптографии сертификат — цифровой документ, подтверждающий соответствие между открытым ключом и информацией, идентифицирующей владельца ключа. Сертификат содержит информацию о владельце ключа, сведения об открытом ключе, его назначении и области применения, название центра сертификации и т. д. Открытый ключ (сертификат) может быть использован для организации защищенного канала связи с владельцем двумя способами:
— для проверки подписи владельца (аутентификация)
— для шифрования посылаемых ему данных (конфиденциальность)
Существует две модели организации инфраструктуры сертификатов: централизованная (PKI) и децентрализованная (PGP). В централизованной модели существуют корневые центры сертификации, подписям которых обязан доверять каждый пользователь. В децентрализованной модели каждый пользователь самостоятельно выбирает, каким сертификатам он доверяет и в какой степени.
Децентрализованная модель обеспечивает шифрование с применением двух ключей: закрытого и открытого. Чтобы реализовать обмен данных с использованием децентрализованной модели необходимо, чтобы отправитель имел у себя открытый ключ, а адресат — закрытый. Отправитель шифрует данные с помощью открытого ключа адресата и отправляет их адресату. Адресат, получив данные, расшифровывает их с помощью своего закрытого ключа. Математически ключи подобраны так, что имея один очень сложно, даже почти невозможно восстановить другой. Закрытый ключ следует хранить у себя, а открытый — раздавать клиентам, которые отправляют вам зашифрованные данные.
Управлять сертификатами в Windows можно специальной оснасткой — см. «Где просмотреть установленные в системе сертификаты».
Пошаговое руководство. Просмотр сертификатов с помощью оснастки MMC How to: View certificates with the MMC snap-in
При создании защищенного клиента или службы можно использовать сертификат в качестве учетных данных. When you create a secure client or service, you can use a certificate as the credential. Например, общий тип учетных данных — это сертификат X. 509, который создается с помощью X509CertificateInitiatorClientCredential.SetCertificate метода. For example, a common type of credential is the X.509 certificate, which you create with the X509CertificateInitiatorClientCredential.SetCertificate method.
Существует три разных типа хранилищ сертификатов, которые можно проверить с помощью консоли управления (MMC) в системах Windows: There are three different types of certificate stores that you can examine with the Microsoft Management Console (MMC) on Windows systems:
Локальный компьютер. хранилище является локальным для устройства и является глобальным для всех пользователей на устройстве. Local computer: The store is local to the device and global to all users on the device.
Текущий пользователь: хранилище является локальным по отношению к текущей учетной записи пользователя на устройстве. Current user: The store is local to the current user account on the device.
Учетная запись службы. хранилище является локальным для определенной службы на устройстве. Service account: The store is local to a particular service on the device.
Просмотр сертификатов в оснастке MMC View certificates in the MMC snap-in
В следующей процедуре показано, как проверить магазины на локальном устройстве, чтобы найти соответствующий сертификат: The following procedure demonstrates how to examine the stores on your local device to find an appropriate certificate:
В меню Пуск выберите пункт выполнить и введите MMC. Select Run from the Start menu, and then enter mmc.
Откроется консоль MMC. The MMC appears.
В меню файл выберите команду Добавить или удалить оснастку. From the File menu, select Add/Remove Snap In.
Откроется окно Добавление или удаление оснасток . The Add or Remove Snap-ins window appears.
В списке Доступные оснастки выберите Сертификаты, а затем щелкните добавить. From the Available snap-ins list, choose Certificates, then select Add.
В окне оснастки «сертификаты » выберите учетная запись компьютера, а затем нажмите кнопку Далее. In the Certificates snap-in window, select Computer account, and then select Next.
При необходимости можно выбрать учетную запись пользователя для текущего пользователя или учетной записи службы для конкретной службы. Optionally, you can select My user account for the current user or Service account for a particular service.
Если вы не являетесь администратором устройства, вы можете управлять сертификатами только для учетной записи пользователя. If you’re not an administrator for your device, you can manage certificates only for your user account.
В окне Выбор компьютера оставьте выбранным параметр локальный компьютер и нажмите кнопку Готово. In the Select Computer window, leave Local computer selected, and then select Finish.
В окне Добавление или удаление оснастки нажмите кнопку ОК. In the Add or Remove Snap-in window, select OK.
Необязательно. в меню файл выберите сохранить или Сохранить как , чтобы сохранить файл консоли MMC для последующего использования. Optional: From the File menu, select Save or Save As to save the MMC console file for later use.
Чтобы просмотреть сертификаты в оснастке MMC, выберите корень консоли в левой области, а затем разверните узел Сертификаты (локальный компьютер). To view your certificates in the MMC snap-in, select Console Root in the left pane, then expand Certificates (Local Computer).
Появится список каталогов для каждого типа сертификатов. A list of directories for each type of certificate appears. Из каждого каталога сертификатов можно просматривать, экспортировать, импортировать и удалять свои сертификаты. From each certificate directory, you can view, export, import, and delete its certificates.
Просмотр сертификатов с помощью средства диспетчера сертификатов View certificates with the Certificate Manager tool
Вы также можете просматривать, экспортировать, импортировать и удалять сертификаты с помощью средства диспетчера сертификатов. You can also view, export, import, and delete certificates by using the Certificate Manager tool.
Просмотр сертификатов для локального устройства To view certificates for the local device
В меню Пуск выберите пункт выполнить , а затем введите certlm. msc. Select Run from the Start menu, and then enter certlm.msc.
Откроется средство диспетчера сертификатов для локального устройства. The Certificate Manager tool for the local device appears.
Для просмотра сертификатов в разделе Сертификаты — локальный компьютер в левой области разверните каталог для типа сертификата, который нужно просмотреть. To view your certificates, under Certificates — Local Computer in the left pane, expand the directory for the type of certificate you want to view.
Просмотр сертификатов для текущего пользователя To view certificates for the current user
В меню Пуск выберите пункт выполнить , а затем введите CertMgr. msc. Select Run from the Start menu, and then enter certmgr.msc.
Появится средство диспетчера сертификатов для текущего пользователя. The Certificate Manager tool for the current user appears.
Чтобы просмотреть сертификаты, в разделе Сертификаты — текущий пользователь в левой области разверните каталог для типа сертификата, который нужно просмотреть. To view your certificates, under Certificates — Current User in the left pane, expand the directory for the type of certificate you want to view.
Как открыть «Хранилище сертификатов» в Windows 7
Открываем «Хранилище сертификатов»
Чтобы просмотреть сертификаты в Виндовс 7, заходим в ОС с правами администратора.
Необходимость в доступе к сертификатам особенно важна для пользователей, которые часто совершают платежи в интернете. Все сертификаты хранятся в одном месте, так называемом Хранилище, которое разбито на две части.
Способ 1: Окно «Выполнить»
- При помощи нажатия комбинации клавиш «Win+R» попадаем в окошко «Выполнить». Вводим в командную строку certmgr.msc .
Цифровые подписи хранятся в папке, которая находятся в директории «Сертификаты – текущий пользователь». Здесь сертификаты находятся в логических хранилищах, которые разделены по свойствам.
В папках «Доверенные корневые центры сертификации» и «Промежуточные центры сертификации» находится основной массив сертификатов Виндовс 7.
Чтобы посмотреть информацию о каждом цифровом документе, наводим на него и кликаем ПКМ. В открывшемся меню выбираем «Открыть».
Переходим во вкладку «Общие». В разделе «Сведения о сертификате» будет отображено предназначение каждой цифровой подписи. Также представлена информация «Кому выдан», «Кем выдан» и сроки действия.
Способ 2: Панель управления
Также есть возможность посмотреть сертификаты в Windows 7 через «Панель управления».
- Открываем «Пуск» и переходим в «Панель управления».
В открывшемся окне переходим во вкладку «Содержание» и щелкаем по надписи «Сертификаты».
В открывшемся окошке предоставлен перечень различных сертификатов. Чтобы посмотреть подробную информацию об определённой цифровой подписи, жмём по кнопке «Просмотр».
После прочтения данной статьи вам не составит никакого труда открыть «Хранилище сертификатов» Windows 7 и узнать подробную информацию о свойствах каждой цифровой подписи в вашей системе.
Работа с сертификатами 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-SelfSignedCertificate To build a chain of trust with the New-SelfSignedCertificate cmdlet
Создайте временный сертификат корневого центра сертификации с помощью командлета New-SelfSignedCertificate. Create a temporary root authority (self-signed) certificate using the New-SelfSignedCertificate cmdlet. Сохраните закрытый ключ на диск. Save the private key to the disk.
Воспользуйтесь новым сертификатом для выдачи другого сертификата, содержащего открытый ключ. Use the new certificate to issue another certificate that contains the public key.
Импортируйте сертификат корневого центра в хранилище «Доверенные корневые центры сертификации». Import the root authority certificate into the Trusted Root Certification Authorities store.
Выбор сертификата для использования 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 .
Метод SetCertificate The 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.
Class Class | Метод 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.
Несколько сертификатов с одинаковыми значениями полей 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. При создании службы учетные данные, включая сертификаты, задаются в разделе . If you are creating a service, credentials, including certificates, are specified under the . При программировании клиента сертификаты задаются в . When you are programming a client, certificates are specified under the .
Сопоставление сертификата с учетной записью пользователя 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.
Сопоставление сертификата 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.