Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Как все начиналось

В самом начале периода самоизоляции мне на почту пришло письмо:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

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

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

И как мы все знаем, с понедельника 1 апреля наступил период достаточно жесткой самоизоляции. Мы тоже все перешли на удаленку и нам тоже потребовался VPN. Наш VPN построен на базе OpenVPN, но доработанный с целью поддержки российской криптографии и возможностью работы с токенами PKCS#11 и контейнерами PKCS#12. Естественно, тут выяснилось, что мы и сами не совсем были готовы к работе через VPN: у многих просто не было сертификатов, а у кого-то они были просрочены.

Как шел процесс

И вот здесь на помощь пришла утилита cryptoarmpkcs и приложение CAFL63 (удостоверяющий центр).

Утилита cryptoarmpkcs позволила сотрудникам, находящимся на самоизоляции и имеющим у себя на домашних компьютерах токены, сформировать запросы на сертификаты:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Сохраненные запросы сотрудники отправляли по электронной почте мне. Кто-то может спросить:- А как же персональные данные, но, если внимательно посмотреть, то их в запросе нету. А сам запрос защищен своей подписью.

По получении запрос на сертификат импортируется в БД УЦ CAFL63:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

После чего запрос должен быть либо отклонен, либо утвержден. Для рассмотрения запроса необходимо его выделить, нажать правую кнопку мыши и выбрать в выпадающем меню пункт «Принять решение»:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Сама процедура принятия решения абсолютно прозрачная:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Аналогичным образом выпускается и сертификат, только пункт меню называется «Выпустить сертификат»:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Для просмотра выпущенного сертификата можно воспользоваться контекстным меню или просто щелкнуть два раза по соответствующей строке:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Теперь содержимое можно просмотреть как посредством openssl (Вкладка «Текст от OpenSSL»), так и встроенным просмотрщиком приложения CAFL63 (вкладка «Текст сертификата»). В последнем случае можно воспользоваться контекстным меню для копирования сертификата в текстовом виде сначала в буфер обмена, а затем и в файл.

Здесь надо отметить, что же изменилось в CAFL63 по сравнению с первой версией? Что касается просмотра сертификатов, то мы уже это отметили. Стало возможным также выделять группу объектов (сертификаты, запросы, CRL) и просматривать их в режиме листания (кнопка «Просмотр выделенных …»).

Наверное, самое главное то, что проект выложен в свободном доступе на гитхабе. Помимо дистрибутивов для linux, подготовлены дистрибутивы для Windows и OS X. Дистрибутив для Android будет выложен чуть позже.

По сравнению с предыдущей версией приложения CAFL63 изменился не только сам интерфейс, но и, как уже было отмечено, добавились новые возможности. Так, например, переработана страница с описанием приложения, в нее добавлены прямые ссылки на скачивание дистрибутивов:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Многие спрашивали и сейчас спрашивают, где взять ГОСТ-овый openssl. Традиционно я даю ссылку, любезно предоставленную garex. Как использовать этот openssl, написано здесь.
Но сейчас в состав дистрибутивов включена тестовая версия openssl с российской криптографией.

Поэтому, когда будет проводиться настройка УЦ, то в качестве используемого openssl, можно будет указать либо /tmp/lirssl_static для linux, либо $::env(TEMP)/lirssl_static.exe для Windows:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

При этом необходимо будет создать пустой файл lirssl.cnf и указать в переменной среды окружения LIRSSL_CONF путь к этому файлу:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Вкладка «Extensions» в настройках сертификатов дополнена полем «Authority Info Access», где можно задать точки доступа к корневому сертификату УЦ и к OCSP-серверу:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Часто приходится слышать, что УЦ не принимают от заявителей сгенерированные ими запросы (PKCS#10) или, еще хуже, навязывают формирование у себя запросов с генерацией ключевой пары на носителе через некое CSP. И отказываются от генерации запросов на токенах с неизвлекаемым ключом (на том же РуТокен ЭЦП-2.0) через интерфейс PKCS#11. Поэтому было решено добавить в функционал приложения CAFL63 генерацию запросов с использованием криптографических механизмов токенов PKCS#11. Для поключения механизмов токена был иcпользован пакет TclPKCS11. При создании запроса на УЦ (страница «Запросы на сертификаты», функция «Создать запрос/CSR») теперь можно выбирать как будет сгенерирована ключевая пара (средствами openssl или на токене) и подписан сам запрос:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Библиотека, необходимая для работы с токеном, прописывается в настройках для сертификата:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Но мы отклонились в сторону от основной задачи, связанной с обеспечением сотрудников сертификатами для работы в корпоратиной сети VPN в режиме самоизоляции. Оказалась, что часть сотрудников не имеет токенов. Было принято решение обеспечить их защищенными контейнерами PKCS#12, благо приложение CAFL63 это позволяет. Сначала для таких сотрудников делаем запросы PKCS#10 с указанием типа СКЗИ «OpenSSL», затем выпускаем сертификат и упаковываем его в PKCS12. Для этого на странице «Сертификаты» выбираем нужный сертификат, нажимаем правую кнопку мыши и выбираем пункт «Экспорт в PKCS#12»:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Для того, чтобы убедиться, что с контейнером все в порядке, воспользуемся утилитой cryptoarmpkcs:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Теперь можно отправлять сотрудникам выпущенные сертификаты. Кому-то отправляются просто файлы с сертификатами (это владельцы токенов, те, кто присылал запросы), либо контейнеры PKCS#12. Во втором случае каждому сотруднику по телефону сообщается пароль к контейнеру. Этим сотрудникам достаточно поправить конфигурационный файл VPN, правильно прописав путь к контейнеру.

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

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Теперь минимальные правки конфига VPN (могла измениться метка сертификата на токене) и все, корпоративная сеть VPN в рабочем состоянии.

Счастливый конец

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

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Ответ приходит на следующий день:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Я тут же отправляю ссылку на утилиту cryptoarmpkcs:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Перед созданием запросов на сертификаты я им рекомендовал почистить токены:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

Затем по электронной почте были присланы запросы на сертификаты в формате PKCS#10 и я выпустил сертификаты, которые отправил в адрес:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

И тут наступил приятный момент:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

А было еще и такое письмо:

Инфраструктура Открытых Ключей. Выпуск сертификатов в условиях самоизоляции

И вот после этого родилась эта статья.

Дистрибутивы приложения CAFL63 для платформ Linux и MS Windows можно найти

здесь

Дистрибутивы утилиты cryptoarmpkcs, включая платформу Android, находятся

здесь

Источник: habr.com