В репозитории находятся шаблоны проектов для разработки плагина подписания к системе Directum RX. Шаблоны проектов созданы в Microsoft Visual Studio 2017.
Базовая информация об использовании электронной подписи приведена в документации к системе. Плагины подписания поддерживаются, начиная с Directum RX 3.3. Ограничения:
- Плагины подписания не поддерживаются в десктоп-клиенте.
- Клиентский плагин подписания поддерживается в:
- Microsoft Windows 7 и выше
- Microsoft Windows Server 2008 R2 и выше.
- x64 версии Linux и MacOS, на которых можно запустить .NET Core версии 2.0 и выше (поддержка добавлена в Sungero 4.6.0.0090 и выше, 4.7.0.0097 и выше, 4.8.0.0060 и выше, 4.9 и выше)
Совместимость с версией платформы Sungero:
- Ветка master - с Sungero 4.6.0.0090 и выше, 4.7.0.0097 и выше, 4.8.0.0060 и выше, 4.9 и выше.
- Ветка 4.8 - с Sungero 4.7 и до Sungero 4.8.0.0059 включительно.
- Ветка 4.6 - с Sungero 4.1 и до Sungero 4.6.0.0089 включительно.
- Ветка 4.0 - с Sungero 3.3.8.0019 и до Sungero 4.1.
- Ветка 3.3.8.0018 - с Sungero версии 3.3 до 3.3.8.0018 включительно.
-
В проектах
ServerCryptographyPlugin
,ClientCryptographyPlugin
измените имя сборки на свое (например, наMyServerCryptographyPlugin
,MyClientCryptographyPlugin
) -
Сгенерируйте уникальный идентификатор (GUID) плагина (например на сайте https://www.guidgenerator.com/), пропишите его в свойстве
CryptographyPlugin.Id
класса серверного плагина и в файлеClientPlugin.props
клиентского плагина; -
Реализуйте серверный плагин (проект
ServerCryptographyPlugin
). Для этого:- Реализуйте методы класса
Signer
:SignData()
,TryLoadPrivateKey()
иVerifySignature()
. При необходимости модифицируйте остальные методы класса. - При необходимости модифицируйте методы класса
CryptographyPlugin
. Укажите нужный идентификатор алгоритма подписания в данном классе (полеSignAlgorithmId
). - При необходимости создайте свой алгоритм хеширования с помощью класса
HashAlgorithm
. - Взаимодействие между классами описано в начале модуля
CryptographyPlugin.cs
.
- Реализуйте методы класса
-
Если планируется реализовать плагин облачного подписания, то:
- Модифицируйте методы класса
CloudCryptographyPlugin
в проекте сервеного плагина. - Пропустите пункт реализации клиентского плагина.
- Модифицируйте методы класса
-
Реализуйте клиентский плагин (проект
ClientCryptographyPlugin
). Для этого:-
Если требуется поддержка подписания на клиентских машинах с Linux и/или MacOS:
-
В файле
ClientPlugin.props
клиентского плагина измените значение переменнойBuildLinuxPlugin
cfalse
наtrue
для Linux. Для MacOS, соответсвенно, измените значение переменнойBuildMacOsPlugin
cfalse
наtrue
. Возможна одновременная сборка пакетов для обеих целевых ОС. Для этого следует установить оба значения вtrue
. -
Скачайте с сайта Microsoft актуальный пакет бинарных файлов
.NET Runtime
для целевой платформы. Целевыми платформами могут бытьLinux x64
и/илиMacOS x64
. Пример названия файла для Linuxdotnet-runtime-6.0.16-linux-x64.tar.gz
. Для MacОS, соответственно, файл может называтьсяdotnet-runtime-6.0.16-osx-x64.tar.gz
.Если
.NET Runtime
версии 6.x не поддерживается целевой платформой, то допустимо использование другой версии (2.0 и выше). -
В зависимости от целевой ОС (Linux/MacOS) распакуйте, соответсвенно, содержимое файла(ов) в каталог
redist\linux-dotnet-runtime\
для Linux и/илиredist\macos-dotnet-runtime
для MacOS (после этого именно в нем, а не во вложенных каталогах, должны оказаться файлdotnet
, каталогhost
и каталогshared
).
-
-
Модифицируйте методы класса
Signer
.
-
-
Соберите проект. В папке out в корне проекта появятся папки Client и Server, содержащие файлы клиентского и серверного плагинов соответственно.
-
Дополнительные библиотеки, требующие распространения вместе с плагином, включите в соответствующий проект. Они автоматически должны попасть в zip-архив.
-
Подключите серверный плагин к Directum RX:
- Создайте папку для хранения плагина, например, D:\Plugins. При обновлении системы Directum RX может изменяться содержимое ее папок. Поэтому рекомендуется создать отдельную папку.
- В конфигурационных файлах _ConfigSettings.xml всех серверных компонент в параметре PLUGINS_ZIP_PATH укажите путь к папке с плагинами, например:
<var name="PLUGINS_ZIP_PATH" value="D:\Plugins" />
- Скопируйте архив с серверным плагином в указанную папку (архив из папки
\out\Server\
) - Если необходимо передать дополнительные настройки в плагин, укажите их в тех же конфигурационных файлах _ConfigSettings.xml, где производилась настройка пути к папке с плагинами. Формат секции с настройками:
Чтение настроек в плагине выполняется в методе
<block name="PLUGINS"> <plugin id="<ид_плагина>" exampleSetting="Example value" otherSetting="Other value" /> </block>
CryptographyPlugin.ApplySettings()
. Плагин облачного подписания также является серверным плагином, поэтому подключается и настраивается аналогично.
-
При необходимости подключите клиентский плагин к Directum RX. Клиентский плагин используется в веб-агенте при работе веб-клиента Directum RX. Для подключения: Для Windows:
- Скопируйте файлы из папки out\Client в папку плагинов веб-агента на сервере приложений, например, в
C:\inetpub\wwwroot\Client\content\WebAgent\plugins\
- Запустите утилиту packages_manifest_updater.exe из папки PackagesManifestUpdater веб-агента на сервере приложений, например, из
C:\inetpub\wwwroot\Client\content\WebAgent\PackagesManifestUpdater
Для Linux и MacOS:
- Скопируйте файлы из папки out\Client в папку плагинов веб-агента на сервере приложений, например, в
\SungeroWebClient\content\WebAgent\plugins\
- Запустите утилиту packages_manifest_updater.exe из папки PackagesManifestUpdater веб-агента на сервере приложений, например, из
\SungeroWebClient\content\WebAgent\PackagesManifestUpdater
В разных версиях Directum RX путь может отличаться, ориентир - папка WebAgent.
- Скопируйте файлы из папки out\Client в папку плагинов веб-агента на сервере приложений, например, в
- Электронная подпись формируется в формате CAdES-BES.
- При подписании сертификатом в веб-агенте само подписание выполняется на стороне клиента, но данные для подписи (подписываемые атрибуты подписи) формируются на сервере приложений.
- Сервер приложений работает в 64-битном окружении, а веб-агент - в 32-битном. Это необходимо учитывать, если для работы плагинов нужны COM-компоненты и их регистрация.
- При необходимости подписание может быть выполнено на стороне сервера. В этом случае закрытый ключ должен быть доступен на сервере.