Автоматический импорт корневого сертификата в Firefox


Расширение использования внутрикорпоративных сервисов, де-факто, являющихся Web приложениями, растет день ото дня. Это и порталы Sharepoint и Project server, и Exchange OWA. Не говоря уже о десятках самописных решений.
И каждый подобный сервис рано или поздно приходит к той точке развития, когда ценность данных начинает подразумевать полностью защищенный доступ даже изнутри сетевого периметра. То есть, использование SSL.
И все было бы хорошо, если каждая компаний являлась общепризнанным центром сертификации. Но, разумеется, это не так.
А это значит, что каждый браузер каждого пользователя каждой рабочей станции будет выводить уведомление о том, что сертификат узла, к которому обращается пользователь, не является выданным доверенным издателем.
Да, конечно же, будет странным предположить, что в крупной сети на клиентов не распространена доменная политика, указывающая правильный путь к светлому будущему 😉 Но, увы, браузеры альтернативные Internet Explorer, оказываются полностью бессильны и при обращении к внутренним ресурсам, вновь выдают ошибку доверия к предъявленному сервером сертификату.

Итак, нашей задачей является автоматизация импорта доверенного корневого сертификата в локальное хранилище сертификатов FireFox. Для ее решения нам понадобятся некоторые дополнительные компоненты:

  1. Netscape Portable Runtime (NSPR). Подробную информацию и версию на свой вкус можно скачать по данной ссылке: http://www.mozilla.org/projects/nspr/ Для ускорения процесса, выберем предварительно откомпилированное решение.
  2. Network Security Services (NSS). Подробную информацию и версию на свой вкус можно скачать по данной ссылке: http://www.mozilla.org/projects/security/pki/nss/. Для ускорения процесса, выберем предварительно откомпилированное решение.

Из обоих дистрибутивов скопируем содержимое папок lib в отдельную пустую папку, например, c:\cadd. Затем отыщем внутри папки bin пакета NSS файл certutil.exe и также скопируем его в выбранную нами директорию.
Теперь нам нужно экспортировать необходимый для добавления сертификат корневого центра (в зависимости от архитектуры сети это также может быть сертификат дочернего центра, непосредственно выдавшего все сертификаты в организации). Сделать это можно на любой рабочей станции сети, запустив оснастку «Сертификаты». Сохраним экспортированный сертификат в ту же самую папку c:\cadd
Осталось самое интересное 😉 При помощи созданного нами пакета библиотек, модифицируем базу сертификатов FireFox. Правда, сначала нам необходимо понять, где же эта база находится:

  1. Для систем за базе Windows XP профиль пользователя, содержащий в том числе и базу сертификатов, находится по пути %APPDATA%\Mozilla\Firefox\Profiles\[некоторое заранее неизвестное имя].default\
  2. Для систем на базе Windows Vista путь, собственно говоря, точно такой же, вся разница появляется на этапе его преобразования токена %APPDATA%  в абсолютное значение:
    1. Для XP абсолютный путь, как правило выглядит так: C:\Documents and Settings\username\Application Data\
    2. Для Vista, обычно, так: C:\Users\username\AppData\Roaming\

Таким образом, как мы видим, в полном пути до профиля FireFox у нас есть две переменных в пути: папки username и [некоторое заранее неизвестное имя].default

Впрочем, мы можем упростить свою задачу, посчитав, что запускаем скрипт для модификации базы с ключами из-под того пользователя, для которого нам и необходимо эту модификацию осуществить. В этом случае, неизвестная переменная в пути остается всего одна и мы можем написать, к примеру, следующий командный сценарий (c:\cadd\cadd.cmd):

for /D /R «%APPDATA%\Mozilla\Firefox\Profiles» %%f in (*.default) do certutil.exe -A -n LibertineCA -t «TCu,Cu,Tuw» -d «%%f» -i c:\cadd\LibertineCA.cer

Да-да. Это действительно все. Остается только лишь перезапустить FireFox и убедиться, что сертификат корневого цента успешно добавлен в доверенные.

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

А можно пойти дальше 😉
Изменим наш командный сценарий следующим образом:

for /D %%f in («C:\Documents and Settings\*») do for /D %%z in («%%f\Application Data\Mozilla\Firefox\Profiles\*.default») do certutil.exe -A -n LibertineCA -t «TCu,Cu,Tuw» -d «%%z» -i c:\cadd\LibertineCA.cer

for /D %%f in («C:\Users\*») do for /D %%z in («%%f\AppData\Roaming\Mozilla\Firefox\Profiles\*.default») do certutil.exe -A -n LibertineCA -t «TCu,Cu,Tuw» -d «%%z» -i c:\cadd\LibertineCA.cer

Несколько неэстетично, зато, достаточно надежно. Теперь создадим пакет установки в sccm и запланируем его запуск от имени локального администратора на всех рабочих станциях домена.


Ваш отзыв