Как выдать удостоверяющие сертификаты в локальной сети для внутренних сервисов в IIS (не self-signed)?
Все сертификаты рутовых УЦ -- самоподписанные. Сюрприз, да? :-) Если на пальцах, то доверие основывается на том, что "ну, это самоподписанный сертификат, но это же уважаемая контора...". Поэтому в ОС и в некоторых браузерах (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 -- это дело десятое, от этого схема генерации и выдачи сертификатов не меняется.
Идеально было бы при установки сервиса в IIS установщик запросит (выдаст, сгенерит? ) новый сертификат (если такого еще не установлено в IIS), который будет trusted для остальных машин в локальной сети без копирования это сертификата на все машины. супер простого решения не существует
другой вопрос, что тиражирование сертификата можно скриптовать. хотя в домене это все было бы проще и безопаснее.
можно поднять автономный сертификат-сервер. но его открытый ключ, все равно надо внести в число доверенный удостоверяющих цетров, на каждом клиентском компе. те же я.. шары в профиль - скрипты. и опять проще и надежнее в домене
ps Если это так, то:
- должен ли этот сервер иметь свой собственный сертификат для подписи тех, что он выдает другим серверам? да. и пусть не будет сюрпризом - так же ка IIS, он сам себе самоподпиську генерирует. если конечно вы не закупите подпись для него у MS, VeriSign, etc..
принцип то один - если цепочка удостоверителей не доходит до списка корневых доверенных центров (которые в современных ОСях являются частью дистрибута, и обновляются с прочими патчами системы)* - то все остальное самоподписка
* - или те самые добавления ручками. от которых вы хотите сбежать