Налагодження та генерація ssl для iis, записки системного адміністратора

  1. Кореневий сертифікат (Certificate Authority або CA). Їм будемо підписувати всі інші.
  2. Сертифікат домену (сервера). Їм IIS перевірятиме клієнтів. І навпаки, клієнти зможуть перевірити справжність сервера.
  3. Сертифікат (и) клієнта (ів)

Для роботи нам знадобиться окрема папка, наприклад 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: \ iis \ ca.crt -keyout c: \ iis \ ca.key

  • -new означає що ми хочемо створити новий запит
  • -x509 що відразу хочемо самоподпісанний сертифікат
  • -newkey rsa: 2048 Нехай тут же і ключик нам згенерує довжиною 2048 біт. замість rsa:<кол-во бит>, до речі, можна вказувати dsa:<файл с параметрами> або ec:<файл с параметрами>
  • -days 1000 - сертифікат закінчиться через 1000 днів
  • -out і -keyout вказують куди зберегти сертифікат і закритий ключ від нього

Після серії нескладних питань в папці iis з'являться сертифікат ca.crt і закритий ключ від нього ca.key

Тепер, щоб IIS дізнавався все сертифікати, підписані кореневим, потрібно встановити кореневий сертифікат в сховищі довірених центрів сертифікатів комп'ютера:

  1. запускаємо mmc
  2. Додаємо оснащення сертифікати і вказуємо, що вона буде керувати сертифікатами дляучетной записи комп'ютера. інакше нічого не заведеться.
  3. Відкриваємо «Довірені кореневі центри сертифікації» і імпортуємо туди наш CA:

Налагодження та генерація ssl для iis, записки системного адміністратора

Готово! Можна приступати до роботи з сервером.

2) В консолі управління IIS потрібно зайти в «Сертифікати сервера», викликати меню по правій кнопці і натиснути створити новий запит сертифіката. Збережіть його в c: \ iis як server.csr

Тепер підпишемо запит сертифіката сервера кореневих сертифікатом:
openssl ca -days 1000 -policy policy_anything -keyfile c: \ iis \ ca.key -cert c: \ iis \ ca.crt -in c: \ iis \ server.csr -out c: \ iis \ server.cer
-policy policy_anything означає, що сертифікату будуть надані всі можливі політики застосування. Найпростіший варіант. Інші параметри, вважаю, в поясненні не потребують. Головне, не заплутатися де який файл вказувати.
Після цього у нас в c: \ iis з'явиться сертифікат сервера server.cer. котори потрібно встановити в IIS.
Для цього ми знову йдемо в «сертифікати сервера», вибираємо «Запит установки сертифіката» і там вказуємо c: \ iis \ server.cer.
Все, сертифікат у сервера є.
Тепер потрібно в привязках для вузла створити нову https прив'язку і вибрати зі списку наш серверний сертифікат:

Налагодження та генерація ssl для iis, записки системного адміністратора

Після цього потрібно в настройках SSL для вузла виставити опції наступним чином:

Налагодження та генерація ssl для iis, записки системного адміністратора

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

Підписуємо запит:
openssl ca -days 1000 -policy policy_anything -keyfile c: \ iis \ ca.key -cert c: \ iis \ ca.crt -in c: \ iis \ client.csr -out c: \ iis \ client.crt
Тут теж все зрозуміло, в результаті ми отримаємо сертифікат сліента client.crt

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

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

Налагодження та генерація ssl для iis, записки системного адміністратора

От і все )
На останок код aspx сторінки (збережіть його як Default.aspx), який дозволить вам все перевірити: Він виводить інформацію про клієнтському сертифікаті:

<%@ Page Language="C#"%>
<%@ Import Namespace="System.Security.Cryptography" %>