Как мы все знаем, в Directum RX, как и в Directum 5, для подписания и утверждения документов каждому пользователю устанавливается сертификат, который, в свою очередь, выпускается каким-либо центром сертификации или удостоверяющим центром (далее УЦ). Если организация отправляет документы из Directum RX во внешние структуры, органы, другие организации, то однозначно подпись должна быть с алгоритмом ГОСТ, и в этом случае как нельзя лучше подходит Удостоверяющий центр КриптоПро.
Но иногда клиенты используют ЭДО Directum RX только для внутрикорпоративного документооборота (служебные записки, приказы, другие внутрикорпоративные документы), и в этом случае не обязательно использовать УЦ с алгоритмом ГОСТ, достаточно любой другой криптографической системы с открытым ключом или PKI (Public Key Infrastructure) - инфраструктура открытого ключа, набор средств, распределённых служб и компонентов, в совокупности используемых для поддержания задач криптографии на основе закрытого и открытого ключей. В этом случае самым распространенным УЦ являются службы сертификации Active Directory.
И все бы ничего, если организация использует операционные системы Windows, для которых изначально и создан Active Directory. Но в реалиях импортозамещения, когда многие отказываются от детища Билла Гейтса и переходят на системы Linux, возникает много вопросов и нюансов с тем, как реализовать Active Directory на Linux. Решение данного вопроса давно найдено и вполне стабильно работает, но наша статья не об Active Directory. Для реализации выпуска сертификатов пользователям Directum RX для внутрикорпоративного документооборота в среде Linux можно использовать другой инструмент управления PKI, и имя ему EasyRSA.
Итак, имеем задачу реализовать процесс автоматизированного выпуска электронной подписи по запросу пользователя с минимальным участием администратора предприятия.
Процесс выдачи реализован посредством «кастомной» задачи, которая запускается пользователем в случае необходимости обновления его сертификата электронной подписи. Схема представлена на рисунке (Рисунок 1 .Схема процесса).
Рисунок 1 .Схема процесса.
Основными этапами являются:
Ответственный сотрудник проверяет необходимую информацию и может одобрить или отклонить запрос (Рисунок 2).
Рисунок 2 Подтверждение запроса.
Взаимодействие с EasyRSA реализовано посредством shell-скриптов, реализующих логику выдачи сертификата. Скрипты и всё необходимое ПО устанавливается на сервер приложений, работающий под управлением ОС семейства Linux. Скрипты пробрасываются внутрь Docker-контейнеров DirectumRX с помощью параметра конфигурации «volume_dir_rw».
DirectumRX обращается к скриптам, которые генерируют сертификаты для пользователя, после чего из файлов (.pfx, .crt) создает документы.
Для взаимодействия с сервером используется класс System.Diagnostics.Process. Пример использования:
using (var process = new Process())
{
process.StartInfo = new ProcessStartInfo
{
FileName = path,
Arguments = args,
RedirectStandardOutput = true,
RedirectStandardInput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
process.Start();
var result = process.StandardOutput.ReadToEnd().Trim('\n').Trim('\r');
process.WaitForExit();
return result;
}
В переменной «path» содержится полный путь до исполняемого файла, «args» содержит необходимые аргументы (ФИО, пароль для сертификата и т.п.).
В случае возникновения ошибок ответственный принимает меры к их устранению (Рисунок 3).
Рисунок 3 Устранение ошибок
Инициатору поступает задание на установку. Во вложении находится документ с .pfx файлом. При открытии версии документа запускается стандартный мастер установки сертификатов (Рисунок 4).
Рисунок 4 Установка сертификата.
После того как все этапы пройдены, и пользователь установил локально сертификат, система создает запись в цифровых сертификатах из приложенного .crt файла. Процесс завершен, можно подписывать документы.
Открытие карточек задач, задний документов доступно только инициатору и ответственному сотруднику. Сгенерированный для pfx пароль хранится в зашифрованном виде и отображается посредством StateView. Для работы удостоверяющего центра генерируется сертификат, который в дальнейшем устанавливается на рабочие места пользователей в хранилище «Доверенные корневые центры сертификации». Также он должен быть установлен с закрытым ключом на сервер приложений Directum RX.
Необходимое ПО на сервере приложений:
● EasyRSA (версия от 3.0.6 и старше)
● openssl (версия 1.1.1f или 1.1.1t)
Реализация удостоверяющего цента и shell-скрипта выпуска сертификатов состоит из нескольких этапов:
Создание файла с информацией о предприятии:
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "-----"
set_var EASYRSA_REQ_CITY "-----"
set_var EASYRSA_REQ_ORG "-----"
set_var EASYRSA_REQ_EMAIL "-----"
set_var EASYRSA_REQ_OU "-----"
set_var EASYRSA_ALGO "-----"
set_var EASYRSA_DIGEST "sha512"
./easyrsa init-pki
./easyrsa build-ca nopass
openssl genrsa -out <ID пользователя>.key
openssl req -utf8 -new -key <ID пользователя>.key -subj <”информации о организации”> -out <ID пользователя>.csr
./easyrsa import-req <ID пользователя>.req <ID пользователя>
./easyrsa sign-req server <ID пользователя>
openssl pkcs12 -password pass:<пароль контейнера> -export -out <ID пользователя>.pfx -inkey <ID пользователя>.key -in <ID пользователя>.crt -certfile ca.crt.
В итоге мы получаем готовое решение по реализации внутрикорпоративного удостоверяющего центра для DirectumRX.
Статья составлена в соавторстве с Андреем Моржухиным и Алексеем Присяжным
А что картинки открываются в этом же окне? Я написал коммент, потом посмотрел картинку и текст пропал. Ну спасибо... поэтому коротко второй раз буду писать:
Между 1 и 2 добавить проверку системой. Если нет действующего сертификата, то выпускать его без лишних согласований ответственным. Внутренняя ЭП не стоит для компании ничего. Так и не надо беспокоить ответственного по пустякам. Может зачем-то можно спросить его мнение, если у сотрудника уже есть сертификат, и то вряд ли.
Авторизуйтесь, чтобы написать комментарий