Данная инструкция описывает процедуру выпуска и установки SSL сертификатов на веб сервере IIS (Internet Information Services) в Windows Server.
Генерация CSR запроса в IIS
Для генерации SSL/TLS сертификата у внешнего Certificate Authority (CA) вам нужно сгенерировать запрос для выпуска сертификата (CSR, Certificate Signing Request). Вы можете сформировать CSR в ISS:
- Откройте консоль Internet Information Services Manager (
InetMgr.exe
); - Выберите ваш хост Windows Server и откройте раздел Server Certificates;
- В правом меню Actions выберите Создать запрос сертификата (Create Certificate Request);
- Заполните следующие поля в информацию о сертификате:
- Common Name – укажите имя сайта (веб-сервера), по которому будут обращаться ваши клиенты. Укажите FQDN имя, например:
reports.winitpro.ru
. Вы можете использоватьWildcard-сертфикат, в этом случае укажите здесь*.winitpro.ru
- Organization – укажите название организации. Для сертификатов с валидацией организации (OV-Organization Validation) и сертификатов с расширенной проверкой (EV-Extended Validation) нужно указать официальное название организации. Для физических лиц можно использовать SSL-сертификатов c домена (DV-Domain Validation). В этом случае указывается полное имя владельца сертификата;
- Organizational unit – yкажите внутреннее название подразделения вашей организации, которое является ответственным за сертификат;
- City/locality
- State/province
- Country/region – двухбуквенный код страны.
- Common Name – укажите имя сайта (веб-сервера), по которому будут обращаться ваши клиенты. Укажите FQDN имя, например:
- Выберите крипто провайдер и длину ключу. Рекомендуется использовать Microsoft RSA SChannel Cryptographic Provider с длиной ключа 2048 бит и более;
- Укажите имя файла, в который нужно сохранить CSR запрос.
- Должен сгенерироваться текстовый файл, который начинается с
BEGIN NEW CERTIFICATE REQUEST
и заканчиваетсяEND NEW CERTIFICATE REQUEST
.
Передайте ваш CSR-файл организации, уполномоченной выпускать SSL сертификаты. Если вы используете внутренний CA на базе Microsoft, загрузите CSR файл и подпишите сертификат и скачайте файл.
Установка SSL сертификата в ISS
После того, как вы получили ваш файл (*.CER) с сертификатом SST/TLS от вашего CA, вы можете установить его в IIS.
Для этого запустите консоль IIS Manager, перейдите в раздел Certificates и выберите Complete Certificate Request.
$ openssl pkcs12 -export -out target.pfx -inkey source.key -in source.crt
Такой PFX сертификат можно импортировать через меню Import.
Также вы можете конвертировать CRT сертификат прямо из Windows:
- Дважды щелкните по вашем CRT файлу;
- Перелижите на вкладку Details и нажмите Copy to File;
- Выберите формат Base-64 encoded X.509(.CER);
- Укажите путь, куда нужно поместить CER файл сертификата.
Выберите *,crt файл с SSL сертификатом, полученным от центра сертификации. Укажите имя SSL сертификата и хранилище, в которое поместить сертификат (Personal или Web Hosting).
Новый SSL сертификат должен появится в списке доступных сертификатов в IIS.
Привязать SSL сертификат к сайту IIS
Теперь нужно привязать ваш сертификат к сайту IIS, порту и/или IP адресу. Найдите ваш сайт в консоли IIS и выберите Edit Bindings.
Нажмите Add и заполните следующую информацию:
- Type:
https
- IP Address: выберите
All Unassigned
, или выберите конкретный IP адрес, которому нужно привязать SSL сертификат (на одном порту и IP адресе веб сервера IIS можно запустить несколько сайтов) - Port:
443
- Hostname: укажите имя узла, для которого выпущен сертификат
- SSL Certificate: выберите из списка SSL сертификат, который вы установили
Перезапустите сайт IIS (Manage Website -> Restart или командой
iisreset
).
Откройте ваш веб сайт IIS в браузере используя префикс
https://
. Если сертификат установлен правильно в адресной строке браузера появится зеленый замок. Это значит что подключение защищено. Нажмите на замок чтобы просмотреть информацию о вашем SSL сертификате.
Далее нужно настроить правила, которое будет перенаправлять все HTTP запросы к сайту IIS на HTTPS.
Очень актуальна была бы инструкция с установкой на IIS сертификата от Let’s Encrypt с автоматическим перевыпуском….
Упс… а такая инструкция уже есть оказывается ) Извините )
Можно создать и сапомодписанный сертификат для IIS:
New-SelfSignedCertificate -dnsname *.contoso.com -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm "SHA256"
На сервере CA Windows Server 2019 генерится сертификат от test1.contoso.com для test1.contoso.com
New-SelfSignedCertificate -dnsname test1.contoso.com
А как сделать от server CA для test1.contoso.com?
Имеете в виду что-то такое?
Сначала создаем условный корневой CA
$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature
А потом им подписываем другой сертификат:
$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert
_https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development
Спасибо за статью, все вроде сделал как описано, сгенерировал сетификат с помощью CA web enrollment, привязал к тестовому сайту, который внутренний, на сервере в Атив Директори. Однако сайт открывается с ошибкой сертификата в Хроме и Edge. Только в Интернет Эксплорер открываетс с замочком, да и то если добавить сайт в список безопасных. В чем может быть причина? Спасибо!
1) Компьютеры пользователей доверяют сертификату или корневому CA вашего сайта IIS?
2) CN сертификата или в Subject Alternative Name содержит фактическое имя тестового сайта, к которому обращаются пользователи? Они должны совпадать.
По первому вопросу — как это можно проверить простейшим способом? Я можно сказать дилетант, удовлетворяю личное любопытство в простой домашней виртуальной лабе. Конфигурация такая: Домен ad.local, контроллер домена dc01.ad.local, на нам установил службу CA, Certificate Enrollment Policy Web Service, Certificate Enrollment Web Service и Certification Authority Web Enrollment. IIS с тестовым сайтом на VM webserver.ad,local, клиентская VM win11.ad.local. На вебсервере webserver.ad.local сгенериривал запрос и сохранил в CSR файл. В качестве CN использовал webserver.ad.local. Далее, по вашей статье на сайте _https://dc01.ad.local/certsrv сгенерировал сертификат, используя содержимое CSR файла, установил сертификат на сервер webserver.ad.local, привязал сертификат к IIS. Далее с клиентской VM win11.ad.local открываю тестовый сайт _https://webserver.ad.local в браузере Edge и вижу что соединение небезопасное. Проверяю сертификат который использует Edge и вижу что он выдан CA (ad-DC01-CA) для сайта webserver.ad.local — вроде все верно, так? Почему тогда соединение не признается безопасным? Тот же эффект в Хроме. И только когда использую Internet Explorerто все в порядке и я вижу заветный замочек. Пересмотрел кучу инструкций наподобие вашей, и все в конце демонстрируют безопасное соединени, но в браузере Internet Explorer. Что не так с Edge и Chrome? Большое спасибо всем кто прочитает и ответит!
Клиенты будут доверять корневому сертификату вашего CA, если она добавлен на них в разделе Trusted Root Certificates store. Обычно он раскатывается на клиентов политиками.
https://winitpro.ru/index.php/2015/11/02/ustanovka-sertifikata-na-kompyutery-domena-s-pomoshhyu-gruppovyx-politik/
Похоже вы просто не завершили это момент при натсройке вашего CA.