Требовать только определенные клиентские сертификаты в IIS

Я внедряю решение, которое требует клиентских сертификатов. Я использую службы IIS 7.5 и ASP.Net 4 WCF.

Я установил для параметров SSL "Требовать SSL" и "Требовать клиентские сертификаты". Хорошо выглядит до сих пор. Поскольку я новичок в использовании клиентских сертификатов, я провел небольшое исследование и натолкнулся на статью поддержки Microsoft, в которой предпринята попытка немного объяснить процесс проверки клиентских сертификатов. Говорится:

Когда сервер запрашивает сертификат, запрос включает список центров сертификации, которым сервер доверяет. Затем клиент сравнивает этот список со списком центров сертификации, которым доверяет клиент, и создает список совпадающих. Затем клиент сравнивает этот список с имеющимися у него клиентскими сертификатами и определяет, какие сертификаты, если таковые имеются, были выпущены центрами сертификации, которым доверяют и клиент, и сервер.

Очевидно клиент отправит сертификаты, которым доверяют обе стороны. Меня интересует, могу ли я настроить IIS или мою службу WCF так, чтобы она принимала только определенные клиентские сертификаты, например, те, которые мы генерируем из нашего собственного центра сертификации специально для этой службы WCF.

Что мешает кому-либо использовать клиентский сертификат VeriSign или использовать наш центр сертификации, предназначенный для каких-то других целей?

1 ответ

В этом посте предполагается, что вы успешно настроили веб-сайт, для которого требуется сертификат клиента, которому доверяет сервер.

См. Этот пост для создания и разрешения клиентских сертификатов в IIS и IIS Express, если у вас их еще нет: https://stackoverflow.com/a/57311258/3850405

Чтобы это работало, некоторые говорят, что IIS Client Certificate Mapping Authentication должен быть включен, но я пробовал это на Windows Server 2012 R2 Datacenter, и он все равно работал. Однако я думаю, что это хорошо, чтобы добавить, и это рекомендуемый подход, поэтому добавьте его через Add Roles and Features или же Turn Windows features on or off зависит от вашей ОС.

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/iisclientcertificatemappingauthentication/onetoonemappings/

Начните с перехода на свой сайт в IIS Manager и нажмите "Редактор конфигурации".

Оттуда перейдите в раздел system.webServer/security/authentication/iisClientCertificateMappingAuthentication или просто вставьте строку в поле Раздел.

Установить включен True а затем добавить oneToOneMappings,

Чтобы получить значение для свойства сертификата, запустите mmc.exe и экспортируйте клиентский сертификат. Шахта находится на Персональные сертификаты для локального компьютера.

File -> Add or Remove Snap-ins -> Certificates -> Add -> Computer account -> Local computer

Certificates (Local Computer) -> Personal -> Certificates -> Right click on your client certificate -> All tasks -> Export...

Когда откроется Мастер экспорта сертификатов:

  • Нажмите кнопку "Далее.
  • Выберите Нет, не экспортировать закрытый ключ, затем нажмите Далее.
  • Выберите кодировку Base-64 X.509 9 (.CER) для формата экспорта, затем нажмите Next.
  • Выберите, чтобы сохранить сертификат на рабочем столе как
    MyCertificate.cer, затем нажмите Далее.
  • Нажмите Готово; Вы должны увидеть диалоговое окно, которое говорит, что экспорт был успешным.

Откройте файл MyCertificate.cer, который вы экспортировали с помощью Блокнота Windows:

  • Удалите "----- НАЧАТЬ СЕРТИФИКАТ -----" в начале текста.
  • Удалите "----- КОНЕЦ СЕРТИФИКАТА -----" в конце текста.
  • Объединить все строки в одну строку текста. Это данные, которые вам нужны.

Я обычно использую Notepad++ и удалить все \r\n так как я думаю, что это быстрее.

Как удалить разрывы строк в Notepad ++?

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/iisclientcertificatemappingauthentication/onetoonemappings/

Затем последним шагом является добавление локального имени пользователя и пароля для пользователя на этом компьютере / сервере. В конце это должно выглядеть примерно так.

Сохраните значения, и тогда вашему веб-сайту потребуется специальный сертификат клиента.

Я считаю, что эта ссылка предоставляет решение, которое вы ищете. И это выглядит довольно подробно. Я собираюсь попробовать это в ближайшие пару дней и вернусь к моим выводам.

https://blogs.msdn.microsoft.com/asiatech/2014/02/12/how-to-configure-iis-client-certificate-mapping-authentication-for-iis7/

Другие вопросы по тегам