Заметки для себя: Настраиваем в IIS авторизацию по клиентским сертификатам при помощи OpenSSL

Заметки для себя: Настраиваем в IIS авторизацию по клиентским сертификатам при помощи OpenSSL Сертификаты

Включение компонент веб-сервера

При установке Windows компоненты веб-сервера не устанавливаются. Процесс установки может не сильно отличаться в зависимости от версии. Два варианта – это обычный дистрибутив Windows 10, если вы планируете использовать его для пробной версии протокола шифрования, и Windows Server 2021/2021, если вы собираетесь развернуть публикацию непосредственно в производстве.

1. Windows 10

Компоненты веб-сервера IIS в Windows 10 включить довольно просто. Перейдите в Панель управления, а затем откройте “Программы и функции”. Вот несколько способов сделать это:

  • Нажмите Win R и в открывшемся окне введите “appwiz.cpl” и нажмите OK.
  • Откройте Панель управления и выберите Программы – Программы и функции.

Нажмите кнопку “Включить или отключить функции Windows” в окне “Программы и функции”.

Как только вы откроете функции Windows, вам необходимо проверить следующие элементы:

  • Службы IISСлужбы интернетаКомпоненты разработки приложенийРасширение ISAPIФильтры ISAPIСредства управления веб-сайтом
  • Службы интернетаКомпоненты разработки приложенийРасширение ISAPIФильтры ISAPI
  • Компоненты разработки приложенийРасширение ISAPIФильтры ISAPI
  • Расширение ISAPI
  • Фильтры ISAPI
  • Средства управления веб-сайтом

Затем нажмите кнопку “OK” и дождитесь завершения операции. После включения устройства можно перейти к разделу “2. Печатная информационная база”.

2 Windows Server 2021 R2, 2021 и 2021

Конфигурация компонентов для Windows Server 2021 R2, Windows Server 2021 и Windows Server 2021 одинакова, все настройки выполняются в диспетчере сервера.

Откройте Управление сервером и нажмите Управление – Добавить роли и возможности.

Откроется Мастер добавления функций и элементов.

Мастер автоматически переключится на страницу “Роли сервера” после того, как вы дважды нажмете “Далее”.

Установите флажок “Web Server IIS” на вкладке Server Roles. Во время установки вам будет предложено установить роль ([Tools] IIS Management Console), которая требуется для этой роли. В открытом окне появится кнопка “Добавить функции”.

Выберите вкладку “Роль веб-сервера IIS”, когда мастер дойдет до нее. После нажатия кнопки “Next” вы перейдете на вкладку “Role Services”. Выберите вкладку “Разработка приложений”, а затем установите флажки “Расширения ISAPI” и “Фильтры ISAPI”. Теперь вы можете нажать “Далее” и “Установить” после того, как отметите все флажки.

Про сертификаты:  3 этап: Установка SSL-сертификата | REG.RU

Теперь установка веб-сервера завершена. Можно переходить к настройке сертификатов.

Выпуск самоподписанного сертификата

Выдача самоподписанного сертификата для веб-сервера IIS очень проста.

Мы не рекомендуем использовать самоподписанные сертификаты в системах реального мира.

Щелкните на сервере из списка “Соединения” в окне диспетчера Internet Information Services (IIS) Manager, чтобы начать процедуру освобождения. После щелчка выберите “Сертификаты сервера”.

Нажмите ссылку “Создать самоподписанный сертификат” в окне “Сертификаты сервера”. Нажмите “Create Self-Signed Certificate.”, чтобы начать процесс.

В окне мастера самоподписанных сертификатов необходимо указать только имя сертификата. В большинстве случаев предпочтительнее явно указать в качестве “Укажите дружественное имя для сертификата” адрес сервера, на котором расположен сервер IIS. После указания имени сертификата нажмите OK, чтобы перейти к шагу привязки сертификата.

Привязка сертификата

Предполагается, что SSL-сертификат был получен и добавлен в список сертификатов сервера. Если сертификат получен из общего центра сертификации, его необходимо сначала импортировать в окно “Сертификаты сервера”.

Когда сертификат появится в списке, перейдите непосредственно к привязке его к публикации веб-страницы. Для этого выберите “Веб-сайт по умолчанию” и в окне “Действия” нажмите на “Привязка…”. (“Связывание…”).

Проверка публикации

Чтобы опубликовать базу данных, откройте конфигуратор для этой базы данных от имени администратора и перейдите к пункту меню “Администрирование”. Затем выберите опцию “Опубликовать базу данных”.

Выберите имя для публикации и при необходимости задайте каталог, в котором будут храниться настройки публикации. Можно также оставить все по умолчанию.

Затем необходимо нажать кнопку “Опубликовать” и дождаться завершения процесса.

Если вы хотите проверить, правильно ли работает ваша система, откройте страницу и перейдите по ссылке, которая состоит из двух частей:

  • Имя вашего сервера (например, server1)
  • Основное имя публикации (указывается в окне настроек публикации)

Для данных параметров ссылки будут следующими:

Настраиваем в iis авторизацию по клиентским сертификатам при помощи openssl

Для того, чтобы это работало, необходимо наличие как минимум трех сертификатов

  1. Корневой сертификат (центра сертификации или ЦС). Он будет использоваться для подписи всех остальных.
  2. Сертификат домена (сертификат сервера). Это будет использоваться IIS для проверки клиентов. И наоборот, клиенты смогут проверять подлинность сервера.
  3. Сертификат(ы) клиента.
Про сертификаты:  Как установить SSL сертификат

image

Для работы нам понадобится отдельная папка, например c:iis. В ней необходимо создать файл без расширения serial и записать туда 01, так же там нужно создать пустой файл index.txt.
В зависимости от конфигурации OpenSSL может попросить создать внутри
этой папки еще какие нибудь. В моем случае это была папка newcerts. Так же в OpenSSL.cfg нужно будет поменять в [ CA_default ] dir на c:/iis

1) Создадим корневой self-signed сертификат:
openssl req -new -x509 -newkey rsa:2048 -days 1000 -out c:iisca.crt -keyout c:iisca.key

После ряда простых вопросов сертификат появится в папке iis

ca.crt

И закрытый ключ для него

ca.key

Чтобы все сертификаты, подписанные корневым сертификатом, распознавались IIS, необходимо вставить корневой сертификат в хранилище сертификатов доверенного центра сертификации на компьютере:

  1. Запустите mmc
  2. Добавьте плагин сертификатов и укажите, что он будет управлять сертификатами от имени команды, иначе ничего не запустится.
  3. Откройте “Доверенные корневые центры сертификации” и импортируйте туда наш центр сертификации:

image

Готово! Теперь сервер можно использовать.

В консоли управления IIS разверните раздел “Сертификаты сервера”, щелкните правой кнопкой мыши и выберите “Создать новый запрос на сертификат”. Сохраните его в c:iis как server.csr

Теперь подпишем запрос сертификата сервера корневым сертификатом:
openssl ca -days 1000 -policy policy_anything -keyfile
c:iisca.key -cert c:iisca.crt -in c:iisserver.csr -out
c:iisserver.cer

-policy policy_anything означает, что сертификату будут
предоставлены все возможные политики применения. Самый простой вариант.
Остальные параметры, полагаю, в пояснении не нуждаются. Главное, не
запутаться где какой файл указывать.
После этого у нас в c:iis появится сертификат сервера server.cer, которы нужно установить в IIS.
Для этого мы опять идем в «сертификаты сервера», выбираем «Запрос установки сертификата» и там указываем c:iisserver.cer.
Всё, сертификат у сервера есть.
Теперь нужно в привязках для узла создать новую https привязку и выбрать из списка наш серверный сертификат:
image

Затем настройте параметры SSL узла следующим образом:

Готово! Остался клиент. Но и на этом этапе уже можно зайти на https://localhost/ и увидеть, что без сертификата вас не пускает.

Про сертификаты:  Помощь в оформлении сертификата на мешки – услуги сертификации

3) Генерируем запрос для клиентского сертификата
openssl req -new -newkey rsa:2048 -days 1000 -keyout c:iisclient.key -out c:iisclient.csr
Здесь мы не указывали -x509, поэтому получили обычный запрос на сертификат и закрытый ключ клиента.

Подписываем запрос:
openssl ca -days 1000 -policy policy_anything -keyfile
c:iisca.key -cert c:iisca.crt -in c:iisclient.csr -out
c:iisclient.crt

Тут тоже все понятно, в результате мы получим сертификат слиента client.crt

Теперь чтобы импортировать сертификат клиента в хранилище сертификатов
Windows вместе с ключом, нам необходимо конвертнуть crt key в контейнер
.pfx:
openssl pkcs12 -export -inkey c:iisclient.key -in c:iisclient.crt -out c:iisclient.pfx
Ура! Получили client.pfx, дважды кликнув на котором можно вызвать
диалог импорта сертификатов и, собственно установить то что получилось в
личное хранилище.

Если все сделано правильно, то после импорта сертификата в личное хранилище вас должно пустить по адресу https://localhost/ и показать содержимое.

Можно сгенерировать еще один сертификат с другими данными и тоже его
импортировать. Тогда при заходе на сервер вам предложат выбрать любой из
них:image

Вот и все )
На последок код aspx странички (сохраните его как Default.aspx), который
позволит вам всё проверить: Он выводит информацию о клиентском
сертификате:
<%@ Page Language="C#"%>
<%@ Import Namespace="System.Security.Cryptography" %>
<scriptrunat="server">
privatevoid Page_Load(object sender, System.EventArgs e)
{
Response.Write("<table width=50% cellspacing=1><tr> <th colspan=2>Current ClientCertificate Settings</th></tr>");
Response.Write("<tr><td>Subject</td><td>" Request.ClientCertificate.Subject "</td></tr>");
Response.Write("<tr><td>SHA1 Fingerprint</td><td>" GetCertificateFingerPrint() "</td></tr>");
Response.Write("<tr><td>Valid from</td><td>" Request.ClientCertificate.ValidFrom "</td></tr>");
Response.Write("<tr><td>Valid Until</td><td>" Request.ClientCertificate.ValidUntil "</td></tr>");
Response.Write("<tr><td>Issuer</td><td>" Request.ClientCertificate.Issuer "</td></tr></table>");
}
private String GetCertificateFingerPrint()
{
if (Request.ClientCertificate.IsPresent)
{
byte[] raw = Request.ClientCertificate.Certificate;
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(raw);
StringBuilder res = new StringBuilder();
for (int i = 0; i < hash.Length; i )
{
res.Append(hash[i].ToString("X2"));
}
return res.ToString();
}
return"";
}
</script>

План работ:

  1. Включение компонент веб-сервера.Windows 10.Windows Server 2021 R2, 2021 и 2021.
  2. Windows 10.
  3. Windows Server 2021 R2, 2021 и 2021.
  4. Выпуск самоподписанного сертификата (Необязательно).
  5. Привязка сертификата.
  6. Проверка публикации.
Оцените статью
Мой сертификат
Добавить комментарий