Сервис обслуживания ЭП
Данный раздел описывает работу Сервис обслуживания ЭП и Криптосервиса, отличия и функциональные возможности двух сервисов в системе Docsvision 6 (Платформа 6.1 и выше + Web-клиент 18 и выше).
Функциональные возможности сервисов
| Сервис обслуживания ЭП — расширение, входящее в стандартную поставку модуля Базовые объекты, не следует путать его с Криптосервисом. Криптосервис поставляется и настраивается отдельно. |
-
Если срок действия сертификата не истёк, Сервис обслуживания ЭП указывает в журнале подписей Web-клиента актуальный статус подписи, её тип и дату окончания срока действия сертификата, даёт возможность просматривать дополнительную информацию о подписи в журнале подписей Web-клиента.
-
Функциональность Сервиса обслуживания ЭП может быть дополнена отдельным компонентом — Криптосервисом.
-
Если сервер Docsvision работает под управлением Linux:
-
Криптосервис используется для формирования и проверки подписей, включая подписи с нестандартными для .NET алгоритмами в сертификатах, например, с сертификатами КриптоПро.
-
Криптосервис указывает в журнале подписей Web-клиента актуальный статус подписи, её тип и дату окончания срока действия сертификата, делает доступной расширенную информацию о подписи.
-
Криптосервис улучшает подпись до CAdES-A.
-
-
Если сервер Docsvision работает под управлением Windows:
-
Проверка и формирование подписи не требуют криптосервис и соответствующие лицензии, но в таком случае отображение штампа времени и улучшение подписи до CAdES-A будет недоступно.
-
Требования для использования Криптосервиса
-
Модуль Служба фоновых операций версии 6.1 и выше.
-
Docker актуальной версии, если криптосервис планируется разворачивать в контейнере. Криптосервис может быть получен из общего реестра образов Docker Hub —
docsvision/cryptoserviceили реестра образов Docsvision —packages.docsvision.com/cryptoservice. -
Опция лицензии Docsvision Сервис обслуживания электронной подписи.
-
Из-за использования библиотеки tspcom.dll Криптосервис требует быть развернут минимум в 32-битном процессе Службы рабочих процессов.
-
Сборки, входящие в состав Java CSP версии 5.0.45559, и лицензия на право использования ПО "КриптоПро Java CSP" на одном сервере.
-
Лицензия на право использования СКЗИ "КриптоПро CSP" версии 5.0 и выше на сервере.
Криптосервис в Docsvision 6.1 Linux
-
Получите сборки КриптоПро Java CSP необходимой версии и поместите их в локальный каталог хоста
./java-csp-5.0.45559-A-b34f3a2f. -
Смонтируйте эту папку в каталог Docker-контейнера
/app/BOOT-INF/lib/java-cspи запустите контейнер:docker run -d -p 8100:8094 -v ./java-csp-5.0.45559-A-b34f3a2f:/app/BOOT-INF/lib/java-csp packages.docsvision.com/cryptoservice (1)1 Если используется Docker Hub, замените packages.docsvision.com/cryptoserviceнаdocsvision/cryptoservice.При запуске контейнера всё содержимое папки будет импортировано в хранилище.
Настройки криптосервиса задаются в командной строке. При запуске контейнера необходимо связать порт хоста с портом контейнера, например,
-p 8100:8094. В примере8100— порт хоста,8094— порт контейнера. Для работы функций проверки и формирования подписи сервер Docsvision должен подключаться к контейнеру через порт хоста. Адрес Криптосервиса указывается в конфигурационном файле, см. подробности ниже.
По умолчанию Криптосервис использует TSP-службу с адресом http://cryptopro.ru/tsp/tsp.srf. При необходимости адрес используемой TSP-службы можно переопределить с помощью переменной окружения TSP_SERVICE_ADDRESS. Ниже приведён пример переопределения адреса TSP-сервиса:
$ docker run -d -p 8100:8094 -e TSP_SERVICE_ADDRESS=http://testca2012.cryptopro.ru/tsp/tsp.srf packages.docsvision.com/cryptoservice -v ./java-csp-5.0.45559-A-b34f3a2f:/app/BOOT-INF/lib/java-csp
Контейнер поставляется в комплекте со следующими сертификатами:
При необходимости использования дополнительных сертификатов выполните одну из следующих настроек:
-
Укажите путь к папке сертификатов:
-
Смонтируйте сертификаты и сборки КриптоПро Java CSP необходимой версии в соответствующие каталоги Docker-контейнера и запустите контейнер:
docker run -d -p 8100:8094 -v ./java-csp-5.0.45559-A-b34f3a2f:/app/BOOT-INF/lib/java-csp -v ./Cert:/var/cryptoservice/cacerts packages.docsvision.com/cryptoservice (1)1 Если используется Docker Hub, замените packages.docsvision.com/cryptoserviceнаdocsvision/cryptoservice.При запуске контейнера всё содержимое папки будет импортировано в хранилище.
-
-
Заново соберите образ:
-
Создайте Dockerfile. Если используется Docker Hub, замените
packages.docsvision.com/cryptoserviceнаdocsvision/cryptoservice:FROM packages.docsvision.com/cryptoservice COPY ./java-csp-5.0.45559-A-b34f3a2f/ /app/BOOT-INF/lib/java-csp/ (1) COPY ./your/cacerts/ /var/cryptoservice/cacerts/ (2)1 Смонтируйте сборки КриптоПро Java CSP необходимой версии. 2 Смонтируйте сертификаты. -
Соберите собственный образ:
$ docker build . -t cryptoservice
-
Запустите контейнер:
$ docker run -d -p 8100:8094 cryptoservice
-
Настройка Криптосервиса с Docker в Docsvision 6.1 Linux
|
Начиная с модуля Платформа версии 6.1 сборки 296 и выше, поддерживается два варианта настройки криптосервиса:
|
-
После установки Криптосервиса создайте файл с расширением
.jsonи любым именем, скопируйте созданный конфигурационный файл по пути/usr/lib/docsvision/platform/configв Linux. Пример содержимого файла.jsonприведён ниже:{ "DocsVision": { "BackOffice": { "Server": { "Extension": { "ComplexSignatureServiceAddress": "ConnectAddress=http://server.domain.com:8100/cryptoservice/api/v1" (1) } } } } }1 Адрес Криптосервиса. -
Перезапустите службу dvappserver для Linux и Docsvision Platform для Windows.
-
Зайдите в Консоль управления и создайте процесс Службы фоновых операций с типом конфигурации Обслуживание ЭП.
-
Для корректной работы службы фоновых операций с использованием сервиса перештамповки подписей необходимо использовать машину, имеющую как минимум два процессора.
-
Сервис обслуживания ЭП должен запускаться только в одном экземпляре рабочего процесса Службы фоновых операций.
-
-
В соединении Docsvision выберите сервер, на котором указан адрес Криптосервиса в конфигурационном файле из примера выше.
События работы сервиса записываются в журнал Криптосервиса. Ознакомиться с журналом можно, имея идентификатор контейнера:
sudo docker ps (1) sudo docker logs идентификатор-контейнера (2)
| 1 | Узнать идентификатор контейнера. |
| 2 | Посмотреть журнал Криптосервиса. |
Криптосервис в Docsvision 6.1 Windows
Криптосервис в Docsvision 6.1 Windows поддерживает установку как на сервер Docsvision, так и машину без Docsvision.
-
Запустите
Docsvision CryptoService.msiи выполните последовательно шаги мастера установки:
Рисунок 1. Запуск мастера установки Криптосервиса -
Примите условия лицензионного соглашения для продолжения установки.
Рисунок 2. Условия лицензионного соглашения -
Если требуется, измените каталог установки Криптосервиса.
Рисунок 3. Каталог установки компонентов Криптосервиса -
В следующем окне нажмите Установить и дождитесь завершения установки.
Рисунок 4. Завершение установки -
Дождитесь завершения установки, нажмите Готово. Запустите службу Docsvision CryptoService.
-
После установки Криптосервиса его нужно сконфигурировать. Конфигурация после установки с помощью инсталлятора предполагает два альтернативных варианта:
-
ЛИБО: Откройте файл
C:\Program Files (x86)\Docsvision\CryptoService\appsettings.jsonи укажите следующие параметры:{ "CryptoService": { "timestampservice.name": "http://cryptopro.ru/tsp/tsp.srf", (1) "logging.file.name": "C:\\ProgramData\\Docsvision\\CryptoService\\CryptoService.log" (2) }, "Java": [ "-Dloader.path=C:\\Program Files (x86)\\Docsvision\\CryptoService\\jar\\BOOT-INF\\lib\\java-csp-5.0.45559-A-b34f3a2f" (3) ] }1 timestampservice.name— адрес TSP сервиса.2 logging.file.name— путь к файлу журнала.3 Java— папка, содержащая сборки Java CSP необходимой версии. -
ЛИБО: Скопируйте Java CSP необходимой версии в
C:\Program Files (x86)\Docsvision\CryptoService\jar\BOOT-INF\lib
-
Улучшение подписи с сертификатом без адреса OCSP сервиса
При улучшении подписи, созданной с помощью сертификата без адреса OCSP сервиса, могут возникать ошибки вида: The signer certificate <…> must have OCSP evidence but it doesn’t contain any OCSP reference. OCSP evidence is not created.
Исправить ситуацию можно, если известен адрес OCSP сервиса, выдавшего сертификат.
Когда адрес сервиса известен, необходимо в файле настроек криптосервиса /etc/cryptoservice/settings.json указать актуальные адреса OCSP серверов следующим образом:
{
"ocspSettings": [
{
"ocspUrl": "http://ocsp-service.ru/ocspn/ocsp.srf", (1)
"serial": "17192b01038046a1649b8a076964699c4" (2)
},
{
"ocspUrl": "http://ocsp-service.example.ru/ocspn1000000/ocsp.srf",
"serial": "1f409aa452fd10ee11500ea83ca0f3ce2"
}
]
}
| 1 | "ocspUrl" — адрес OCSP сервиса. |
| 2 | "serial" — серийный номер корневого сертификата улучшаемой подписи. |
Конфигурационный файл settings.json должен располагаться в контейнере криптосервиса по пути /etc/cryptoservice/. Если в файле задана хотя бы одна группа настроек ocspSettings, то при улучшении подписи криптосервис будет проверять цепочку родительских сертификатов сертификата улучшаемой подписи.
Серийные номера сертификатов сопоставляются с номером, указанным в конфигурационном файле, при совпадении заданный адрес OCSP будет использоваться для самого близкого родительского сертификата. Чтобы серийный номер сертификата считывался успешно, поместите его в каталог корневых сертификатов /var/cryptoservice/cacerts.
Контейнер криптосервиса можно сразу смонтировать вместе с файлом настроек OCSP сервиса следующим образом:
$ docker run -d -p 8100:8094 -v /path/to/settings.json:/etc/cryptoservice/settings.json -v ./java-csp-5.0.45559-A-b34f3a2f:/app/BOOT-INF/lib/java-csp packages.docsvision.com/cryptoservice
Настройка подключения к криптосервису по HTTPS
-
Создайте PKCS12-файл (
.p12или.pfx) предпочтительным способом. Шаг можно пропустить, если уже есть сертификат в формате.p12или.pfx. Ниже приведён пример генерации файла при помощи утилиты OpenSSL.Для создания PKCS12-файла потребуются закрытый ключ и файл сертификата, содержащий полную цепочку доверия. Файлы предоставляются удостоверяющим центром при выпуске сертификата. Также можно сгенерировать самоподписанный сертификат, см. подробнее: "Создание самоподписанного сертификата".
openssl pkcs12 -export \ -in fullchain.pem \ (1) -inkey privkey.pem \ (2) -out keystore.p12 \ (3) -passout pass:MyP@ssw0rd (4)1 Промежуточный и конечный сертификат 2 Приватный ключ 3 Имя выходного PKCS12-файла 4 Пароль для защиты PKCS12-файла -
Отредактируйте конфигурационный файл:
-
При работе через Docker создайте файл конфигурации.
cat > application.properties <<EOF server.ssl.key-store=/keystore.p12 (1) server.ssl.key-store-password=MyP@ssw0rd (2) server.ssl.keyStoreType=PKCS12 EOF1 Путь до PKCS12-файла в контейнере 2 Пароль от PKCS12-файла -
В Windows откройте файл конфигурации по адресу
C:\Program Files (x86)\Docsvision\CryptoService\appsettings.jsonи укажите следующие параметры:{ "CryptoService": { "timestampservice.name": "http://cryptopro.ru/tsp/tsp.srf", "logging.file.name": "C:\\ProgramData\\Docsvision\\CryptoService\\CryptoService.log", "server.ssl.key-store": "C:\\Program Files (x86)\\Docsvision\\CryptoService\\keystore.p12", (1) "server.ssl.key-store-password": "MyP@ssw0rd", (2) "server.ssl.keyStoreType": "PKCS12", "Java": [ "-Dloader.path=C:\\Program Files (x86)\\Docsvision\\CryptoService\\jar\\BOOT-INF\\lib\\java-csp-5.0.45559-A-b34f3a2f" (3) ] } }1 Путь до PKCS12-файла 2 Пароль от PKCS12-файла 3 Java— папка, содержащая сборки Java CSP необходимой версии.
-
-
Запустите криптосервис.
-
Запустите службу Docsvision CryptoService, если установка была выполнена при помощи инсталлятора.
-
Если криптосеврис работает с использованием Docker, выполните:
docker run -d -p 8100:8094 \ -v $(realpath application.properties):/application.properties \ (1) -v $(realpath keystore.p12):/keystore.p12 \ (2) -v ./java-csp-5.0.45559-A-b34f3a2f:/app/BOOT-INF/lib/java-csp \ (3) packages.docsvision.com/cryptoservice \ java org.springframework.boot.loader.JarLauncher \ --spring.config.additional-location=/application.properties (4)1 Монтирование файла конфигурации хост:контейнер2 Монтирование PKCS12-файла хост:контейнер3 Монтирование сборки КриптоПро Java CSP необходимой версии. 4 Путь до файла конфигурации в контейнере
-