Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общие сведения
Элемент <oneToOneMappings><iisClientCertificateMappingAuthentication> элемента сопоставляет отдельные клиентские сертификаты с отдельными учетными записями пользователей на основе "один к одному". Эти сопоставления сертификатов "один к одному" можно использовать вместо наиболее распространенных методов проверки подлинности, таких как проверка подлинности Windows или обычная проверка подлинности.
Примечание
Сопоставления сертификатов "один к одному" отличаются от сопоставлений сертификатов "многие к одному ", которые могут сопоставлять несколько сертификатов с одной учетной записью пользователя.
Совместимость
| Версия | Примечания |
|---|---|
| IIS 10.0 | Элемент <oneToOneMappings> не был изменен в IIS 10.0. |
| IIS 8,5 | Элемент <oneToOneMappings> не был изменен в IIS 8.5. |
| IIS 8,0 | Элемент <oneToOneMappings> не был изменен в IIS 8.0. |
| IIS 7,5 | Элемент <oneToOneMappings> не был изменен в IIS 7.5. |
| IIS 7.0 | Элемент <oneToOneMappings> элемента появился <iisClientCertificateMappingAuthentication> в IIS 7.0. |
| IIS 6,0 | Элемент <oneToOneMappings> заменяет объект метабазы IIS 6.0 IIsCertMapper . |
Настройка
Элемент <iisClientCertificateMappingAuthentication> недоступен в стандартной установке IIS 7 и более поздних версий. Чтобы установить его, выполните следующие действия.
Windows Server 2012 или Windows Server 2012 R2
- На панели задач щелкните Диспетчер сервера.
- В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
- В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
- На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, безопасность, а затем выберите Проверка подлинности для сопоставления сертификатов клиента IIS. Щелкните Далее.
. - На странице Выбор компонентов нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows 8 или Windows 8.1
- На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите пункт панель управления.
- В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.
- Разверните узлы Службы IIS, Службы Интернета, Безопасность, а затем выберите Проверка подлинности для сопоставления сертификатов клиента IIS.
- Нажмите кнопку ОК.
- Щелкните Закрыть.
Windows Server 2008 или Windows Server 2008 R2
- На панели задач нажмите кнопку Пуск, наведите указатель мыши на пункт Администрирование, а затем щелкните диспетчер сервера.
- В области иерархии диспетчер сервера разверните узел Роли, а затем щелкните Веб-сервер (IIS) .
- В области Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
- На странице Выбор служб ролеймастера добавления служб ролей выберите Проверка подлинности на основе сертификата клиента IIS и нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows Vista или Windows 7
- На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
- В панель управления щелкните Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- Разверните узел Службы IIS, выберите Iis Client Certificate Mapping Authentication (Проверка подлинности на основе сопоставления сертификатов клиента IIS) и нажмите кнопку ОК.
Инструкции
Отсутствует пользовательский интерфейс для настройки проверки подлинности на основе сопоставления сертификатов клиента IIS для IIS 7. Примеры программной настройки проверки подлинности на основе сопоставления сертификатов клиента IIS см. в разделе Примеры кода этого документа.
Конфигурация
Атрибуты
Отсутствует.
Дочерние элементы
| Элемент | Описание |
|---|---|
add |
Необязательный элемент. Добавляет сопоставление "один к одному" в коллекцию сопоставлений "один к одному". |
clear |
Необязательный элемент. Удаляет все ссылки на сопоставления "один к одному" из коллекции сопоставлений "один к одному". |
Образец конфигурации
Следующий пример конфигурации включает проверку подлинности сопоставления сертификатов клиента IIS с использованием сопоставления сертификатов "один к одному" для веб-сайта по умолчанию, создает сопоставление сертификатов singe "один к одному" для учетной записи пользователя и настраивает сайт на требование SSL и согласование сертификатов клиента.
<location path="Default Web Site">
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert" />
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
oneToOneCertificateMappingsEnabled="true">
<oneToOneMappings>
<add enabled="true"
userName="administrator"
password="[enc:57686f6120447564652c2049495320526f636b73:enc]"
certificate="Base64-Encoded-Certificate-Data" />
</oneToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
</security>
</system.webServer>
</location>
Получение строки в кодировке Base-64 из сертификата клиента
Примечание
Чтобы получить данные сертификата в кодировке Base-64 для всех примеров, приведенных в этом разделе, можно экспортировать сертификат, выполнив следующие действия.
Нажмите кнопку Пуск, а затем — Выполнить.
Введите MMC и нажмите кнопку ОК.
Когда откроется консоль управления (Майкрософт), щелкните Файл, а затем — Добавить и удалить оснастки.
В диалоговом окне Добавление и удаление оснасток :
- Выберите Сертификаты в списке доступных оснасток, а затем нажмите кнопку Добавить.
- Выберите управление сертификатами для моей учетной записи пользователя, а затем нажмите кнопку Готово.
- Чтобы закрыть диалоговое окно, нажмите кнопку ОК .
В консоли управления (Майкрософт) выполните следующие действия.
- Разверните узлы Сертификаты — текущий пользователь, Затем Личные и Сертификаты.
- В списке сертификатов щелкните правой кнопкой мыши сертификат, который требуется экспортировать, а затем выберите пункт Все задачи и экспорт.
При открытии мастера экспорта сертификатов :
- Щелкните Далее.
- Выберите Нет, не экспортировать закрытый ключ, а затем нажмите кнопку Далее.
- Выберите X.509 9 в кодировке Base-64 (. CER) для формата экспорта, а затем нажмите кнопку Далее.
- Сохраните сертификат на рабочем столе как MyCertificate.cer, а затем нажмите кнопку Далее.
- Нажмите кнопку Готово; Должно появиться диалоговое окно с сообщением об успешном выполнении экспорта.
Закройте консоль управления (MMC) Microsoft .
Откройте файл MyCertificate.cer , экспортируемый с помощью Блокнота Windows:
- Удалите "-----BEGIN CERTIFICATE-----" в начале текста.
- Удалите "-----END CERTIFICATE-----" в конце текста.
- Сцепить все строки в одну строку текста— это данные сертификата в кодировке Base-64, которые будут использоваться для всех примеров в этом разделе.
Пример кода
В следующих примерах кода для веб-сайта по умолчанию используется проверка подлинности сопоставления сертификатов клиента IIS с использованием сопоставления сертификатов "один к одному" для учетной записи пользователя, а также настройка сайта на требование SSL и согласование клиентских сертификатов.
Примечание
Чтобы получить данные сертификата в кодировке Base-64 для приведенных ниже примеров кода, можно экспортировать сертификат, выполнив действия, описанные в разделе Сведения о конфигурации этого документа.
AppCmd.exe
Примечание
Из-за символов в строках сертификата, которые не могут быть проанализированы AppCmd.exe, не следует использовать AppCmd.exe для настройки сопоставлений сертификатов iis "один к одному".
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection iisClientCertificateMappingAuthenticationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site");
iisClientCertificateMappingAuthenticationSection["enabled"] = true;
iisClientCertificateMappingAuthenticationSection["oneToOneCertificateMappingsEnabled"] = true;
ConfigurationElementCollection oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings");
ConfigurationElement addElement = oneToOneMappingsCollection.CreateElement("add");
addElement["enabled"] = true;
addElement["userName"] = @"Username";
addElement["password"] = @"Password";
addElement["certificate"] = @"Base-64-Encoded-Certificate-Data";
oneToOneMappingsCollection.Add(addElement);
ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", "Default Web Site");
accessSection["sslFlags"] = @"Ssl, SslNegotiateCert";
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim iisClientCertificateMappingAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site")
iisClientCertificateMappingAuthenticationSection("enabled") = True
iisClientCertificateMappingAuthenticationSection("oneToOneCertificateMappingsEnabled") = True
Dim oneToOneMappingsCollection As ConfigurationElementCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings")
Dim addElement As ConfigurationElement = oneToOneMappingsCollection.CreateElement("add")
addElement("enabled") = True
addElement("userName") = "Username"
addElement("password") = "Password"
addElement("certificate") = "Base-64-Encoded-Certificate-Data"
oneToOneMappingsCollection.Add(addElement)
Dim accessSection As ConfigurationSection = config.GetSection("system.webServer/security/access", "Default Web Site")
accessSection("sslFlags") = "Ssl, SslNegotiateCert"
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = true;
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = true;
var oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection;
var addElement = oneToOneMappingsCollection.CreateNewElement("add");
addElement.Properties.Item("enabled").Value = true;
addElement.Properties.Item("userName").Value = "Username";
addElement.Properties.Item("password").Value = "Password";
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data";
oneToOneMappingsCollection.AddElement(addElement);
var accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site");
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert";
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = True
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = True
Set oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection
Set addElement = oneToOneMappingsCollection.CreateNewElement("add")
addElement.Properties.Item("enabled").Value = True
addElement.Properties.Item("userName").Value = "Username"
addElement.Properties.Item("password").Value = "Password"
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data"
oneToOneMappingsCollection.AddElement(addElement)
Set accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site")
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert"
adminManager.CommitChanges()