все что связано с моей работой
Главная » Технические » Установка сертификатов на компьютеры в домене

Установка сертификатов на компьютеры в домене

Все знают о сайтах Официальный сайт Российской Федерации для размещения заказов и Официальный сайт для размещения информации об учреждениях и что для работы на них надо установить несколько сертификатов: Корневой сертификат УФК и сертификаты сайтов закупки и учреждений. Все они устанавливаются в “Доверенные корневые центры”.

А в свете того что, roundcube теперь с нормальным, человеческим лицом и достаточным функционалом решено постепенно избавляться от Thubderbird-а и всех постепенно переводить на веб-почту. Еще плюс, что теперь пользователи могут пользоваться своей почтой не только на работе. Apache отлично умеет работать по SSL, dovecot и postfix тоже замечательно работают по SSL, вопрос только в сертификатах. У каждого демона свой скрипт для создания сертификатов, каждому создается свой rootCA которым уже подписывается сертификат сервера.

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

Сейчас встал вопрос о распространении нашего корневого сертификата на клиентские машины. Чтоб не бегать по всем ручками не прописывать, а как-то само чтоб сделалось. И попутно на все машины установиться сразу и сертификаты сайтов учреждений и закупок.

При поднятом домене самое логичное на мой взгляд поискать в Групповых политиках. Вот что там нашлось:

Сертификаты в Групповой политике AD

Сертификаты в Групповой политике AD

С первого взгляда – то, что нужно. Но … как оказалось на тестовую машину сертификат УФК ни в какую не хотел устанавливаться, курение манов никак не помогало. Похоже это работает когда в AD развернут свой сертификационный центр, но это совсем другая песня.

Но в поисках наткнулся на интересную утилиту из SDK – CertMgr.exe. Она позволяет управлять сертификатами из командной строки. В оригинале можно почитать тут на MSDN и еще тут примеры как использовать.

В двух словах то, что интересует нас выглядит так:

CertMgr.Exe -add -all root.crt -s root

Это в самом простом варианте, а вообще имеет такой формат:

CertMgr [-add|-del|-put] [Options] [ -s [ -r RegistryLocation ] ] SourceName [ -s [ -r RegistryLocation ] ] [DestinationName]

Действие Описание
ничего Если не указано никакого действия, то выдается список установленных сертификатов, если не указано хранилище, т.е. вообще без параметров открывается стандартный диалог управления сертификатами
-add Добавить сертификат. В этом случае SourceName – это файл сертификата, а DestinationName — это название хранилища. Нигде названий в инете не нашел, но методом научного тыка выяснил, то что нам нужно называется root, и еще "Личные" — это называются my, остальные собственно не искал т.к. мне не нужны были.
-del Удалить сертификаты из хранилища. SourceName – название хранилища сертификатов содержащее удаляемые сертификаты, а DestinationName – имя хранилища куда будут скопированы оставшиеся сертификаты. Если DestinationName не задано, то будет использовано имя из SourceName. Т.е. фактически это не удаление, а копирование “всех сертификатов, кроме указанных”. Пока не проверял, так что могут быть нюансы. Имя удаляемого сертификата можно задать через –all или –c –n.
-put Сохранить сертификат из хранилища SourceName в файл DestinationName 

 

Опции, опишу только интересные для нас:

  • -v – подробный вывод;
  • -s – важная опция, указывает что хранилище сертификатов системное;
  • -all — добавляет все сертификаты из файла, дело в том что файл может содержать несколько сертификатов, “доверительных” списков или списков отзыва.
  • -c — только сертификаты, см. –all;
  • -CRL — только списки отзыва, см. –all;
  • -CTL – только “доверительные” списки, см. –all;
  • -n CommonNameString – имя сертификата (CN, CommonName), используется  вместе с “-с”, для выбора конкретного сертификата из списка, см. –all;
  • -r registryLocation – Указывает расположение системного хранилища сертификатов с реестре. Может принимать значения: CurrentUser (ключ реестра HKEY_CURRENT_USER) или LocalMachine (ключ реестра HKEY_LOCAL_MACHINE). CurrentUser используется по умолчанию.

Так как, у нас везде 1 файл = 1 сертификат, то мы можем использовать для добавления –all и –s чтоб указать что, сертификаты ставим в системное хранилище.

Ложка дегтя – при установке сертификата всегда выдается окно с предупреждением, опции чтоб делать это по-тихому не нашел. Второе – это то, что при повторной установке сертификата сначала выскакивает окно с подтверждением об удалении старого. Это не позволяет использовать в Logon скриптах, пока не позволяет… Надо всего лишь научиться определять установлен сертификат или нет.

Скачать утилиту можно только вместе с SDK с сайта microsoft, или попросить у меня, чтоб не скачивать весь SDK.

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.