dmitryos
@dmitryos

Как выдать удостоверяющие сертификаты в локальной сети для внутренних сервисов в IIS (не self-signed)?

Добрый день.

Необходимо в локальной сети из компьютеров на базе Windows 10 Pro, объединенных в рабочую группу (не в домене) и не светящиеся в интернет, настроить IIS сертификаты на одном из них таким образом, чтоб обращение с других компьютеров через браузер, последние подтверждали подлинность сертификата и не выводили предупреждение об untrusted сайте.

Self-signed сертификаты не хотелось бы, так как копировать из на все оставшиеся компьютеры в сети не вариант (их может быть много, добавляться новые машины и т.п)

Идеально было бы при установки сервиса в IIS установщик запросит (выдаст, сгенерит? ) новый сертификат (если такого еще не установлено в IIS), который будет trusted для остальных машин в локальной сети без копирования это сертификата на все машины.

В сети домена нет, windows server тоже нет, только все Windows 10 Pro.

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

Из найденной информации на данный момент мне показалось, что необходимо развернуть в локальной сети PKI сервис и через него запрашивать (API) сертификаты (или хотя б вручную сгенерировать и передать на сервер). Если это так, то:
- должен ли этот сервер иметь свой собственный сертификат для подписи тех, что он выдает другим серверам?
- если его надо сначала будет скопировать на все клиентские машины, то это тоже не вариант, так как он не отличается от self-signed с последующим копированием на все машины? Или я могу использовать любой свой с Let's Encrypt и от него далее по цепочке генерить дочерние?
- должен ли PKI сервис быть все время запущен, чтоб с других машин браузеры могли бы запрашивать его на валидность внутренних сертификатов?
- будет ли выданный PKI сертификат выдан на имя сервера в интранет (например: SERVER001 или SERVER001.local)?
- PKI должен запускаться на WINDOWS 10 (докер, VM боюсь не вариант)

Или существуют другие решения данной задачи.

Спасибо за советы
  • Вопрос задан
  • 5781 просмотр
Решения вопроса 1
athacker
@athacker
Все сертификаты рутовых УЦ -- самоподписанные. Сюрприз, да? :-) Если на пальцах, то доверие основывается на том, что "ну, это самоподписанный сертификат, но это же уважаемая контора...". Поэтому в ОС и в некоторых браузерах (Firefox, он своим хранилищем пользуется. Хром или IE -- пользуют системные, на винде, по крайней мере) есть хранилище корневых сертификатов удостоверяющих центров, которые (сертификаты) являются доверенными.

Есть удостоверяющие центры, сертификаты которых подписаны другими удостоверяющими центрами. Но на самом верху цепочки доверия -- всё равно самоподписанные серты.

Вам нужен свой PKI, это факт. Если нет желания/возможности делать УЦ на базе Microsoft Certification services, возьмите пакет easyrsa, подписывайте сертификаты им.

По фэншую схема делается так -- создаётся корпоративный root CA (корневой удостоверяющий центр), с самоподписанным сертификатом, на каком-нибудь, например, ноутбуке старом. Потом генерируется ещё один ключ -- для подчинённого УЦ (sub-CA). Этот ключ подписывается сертом вашего root CA (с ноутбука), после чего ноутбук выключается и прячется в сейф. А вот уже с сертом sub-CA вы подписываете все серты для ваших серверов и сервисов. Ключи и CSR должны генерироваться только на тех хостах, где они и будут использоваться. Это если по фэншую. Но если вам просто важен замочек в строке адреса и отсутствие ругани, можно обойтись одним root CA, без sub-CA, а генерить ключи можно тем же самым easy-rsa, перенося потом ключ и серт на необходимые вам сервера с IIS.

Сертификаты вашего root CA и sub-CA нужно будет установить в хранилища всех ваших десктопных компов, серверов и т. п. А также в хранилища браузеров, если у вас используются браузеры, которые не смотрят в системные хранилища. Это легко делается доменной политикой, но ввиду отсутствия у вас домена -- можно и скриптануть. Использовать certutil, например (если речь про винду, опять-таки).

А IIS у вас там, Apache или nginx, или другие сервисы, которые умеют в TLS -- это дело десятое, от этого схема генерации и выдачи сертификатов не меняется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Нет понятия "IIS сертификат". Есть SSL-сертификат, который некто создает. Цепочка всегда одна и та же - есть или создается CA, сертификат которого копируется на все машины в хранилище доверенных корневых сертификатов - Вам придется это делать вручную, если бы был домен, это делается политиками.
После этого создаются запросы на сертификаты и выпускаются сами сертификаты. Вам - только колхозить на OpenSSL для Windows, если бы был домен, можно было бы службу поднять. Это не исключило бы необходимость колхоза, но значительно бы снизило его сложность.
- должен ли этот сервер иметь свой собственный сертификат для подписи тех, что он выдает другим серверам?

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

Надо. Причем не просто так скопировать, а установить в хранилище доверенных корневых сертификатов
Или я могу использовать любой свой с Let's Encrypt и от него далее по цепочке генерить дочерние?

Нет. Ни один мировой CA не даст Вам сертификата subCA
- должен ли PKI сервис быть все время запущен, чтоб с других машин браузеры могли бы запрашивать его на валидность внутренних сертификатов?

Вообще такая штука есть, OCSP называется, но это не про Вас. Если Вам край как нужна валидность - вставляйте CDP и выкладывайте CRL
- будет ли выданный PKI сертификат выдан на имя сервера в интранет (например: SERVER001 или SERVER001.local)?

Как напишете, так и будет.
Ответ написан
mindtester
@mindtester Куратор тега Windows
http://iczin.su/hexagram_48
Идеально было бы при установки сервиса в IIS установщик запросит (выдаст, сгенерит? ) новый сертификат (если такого еще не установлено в IIS), который будет trusted для остальных машин в локальной сети без копирования это сертификата на все машины.
супер простого решения не существует

другой вопрос, что тиражирование сертификата можно скриптовать. хотя в домене это все было бы проще и безопаснее.

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

ps
Если это так, то:
- должен ли этот сервер иметь свой собственный сертификат для подписи тех, что он выдает другим серверам?

да. и пусть не будет сюрпризом - так же ка IIS, он сам себе самоподпиську генерирует. если конечно вы не закупите подпись для него у MS, VeriSign, etc..

принцип то один - если цепочка удостоверителей не доходит до списка корневых доверенных центров (которые в современных ОСях являются частью дистрибута, и обновляются с прочими патчами системы)* - то все остальное самоподписка

* - или те самые добавления ручками. от которых вы хотите сбежать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы