Собственная инфраструктура удостоверяющего центра Directum RX на базе EasyRSA

21 1

Как мы все знаем, в 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
  • Создание файла ключа с ID пользователя
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 пользователя>
  • Создание контейнера pfx, содержащего серификат пользователя ключ и корневой сертификат УЦ
openssl pkcs12 -password pass:<пароль контейнера> -export -out <ID пользователя>.pfx -inkey <ID пользователя>.key -in <ID пользователя>.crt -certfile ca.crt.

Заключение

В итоге мы получаем готовое решение по реализации внутрикорпоративного удостоверяющего центра для DirectumRX.

 

Статья составлена в соавторстве с Андреем Моржухиным и Алексеем Присяжным

Титков Андрей

А что картинки открываются в этом же окне? Я написал коммент, потом посмотрел картинку и текст пропал. Ну спасибо... поэтому коротко второй раз буду писать:

Между 1 и 2 добавить проверку системой. Если нет действующего сертификата, то выпускать его без лишних согласований ответственным. Внутренняя ЭП не стоит для компании ничего. Так и не надо беспокоить ответственного по пустякам. Может зачем-то можно спросить его мнение, если у сотрудника уже есть сертификат, и то вряд ли.

Авторизуйтесь, чтобы написать комментарий