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


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



Первая реакция была естественной: это надо либо ехать за токенами, либо их должны привезти, а с понедельника уже все сидим по домам, ограничения по передвижению, да и чем черт не шутит. Поэтому ответ был вполне есте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, находятся