Сервис обслуживания ЭП
Сервис обслуживания ЭП — компонент модуля Базовые объекты. Сервис указывает в журнале подписей Web-клиента актуальный статус подписи, тип и дату окончания срока действия сертификата. Сервис обслуживания ЭП может работать в сочетании с Криптосервисом — Docker-контейнером, выполняющим функции обслуживания ЭП.
Для использования криптосервиса ЭП требуется Docker актуальной версии и опция лицензии Docsvision Сервис обслуживания электронной подписи (только для добавления архивного штампа времени). Криптосервис может быть получен из общего реестра образов Docker Hub — docsvision/cryptoservice или реестра образов Docsvision — packages.docsvision.com/cryptoservice.
Функциональные возможности сервиса обслуживания ЭП
| Сервис обслуживания ЭП — расширение, входящее в стандартную поставку модуля Базовые объекты, не следует путать его с Криптосервисом. Криптосервис поставляется в виде Docker-контейнера. |
-
Если срок действия сертификата не истёк, Сервис указывает в карточке актуальный статус подписи, тип и дату окончания срока действия сертификата, даёт возможность просматривать дополнительную информацию о подписи в журнале подписей Web-клиента.
-
Если срок действия сертификата не истёк, Криптосервис доступен и функционирует, в карточку добавляется новый архивный штамп времени и улучшает подпись до CAdES-A.
-
В Docsvision версии 6.1 и выше Криптосервис является обязательным для проверки подписей CAdES-BES и CAdES-X Long Type 1 с нестандартными для .NET алгоритмами в сертификатах. Требуется, например, при использовании сертификатов КриптоПро.
-
В Docsvision версии 6.1 и выше Криптосервис также необходим для функционирования Простой подписи.
Из-за использования библиотеки tspcom.dll Криптосервис требует быть развернут минимум в 32-битном процессе Службы рабочих процессов.
Установка и запуск Криптосервиса
-
Модуль "Платформа" версии 6.1 и выше + "Web-клиент" 18 (6.1) и выше.
Криптосервис является обязательным для проверки подписей с нестандартными для .NET алгоритмами в сертификатах. Требуется, например, при использовании сертификатов КриптоПро. -
Модуль "Платформа" версии 5.5.5 + "Web-клиент" 17.
Криптосервис указывает в журнале подписей Web-клиента актуальный статус подписи, тип и дату окончания срока действия сертификата, делает доступной расширенную информацию о подписи.
Криптосервис можно установить и запустить командой:
docker run -d -p 8100:8094 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
Контейнер поставляется в комплекте со следующими сертификатами:
При необходимости использования дополнительных сертификатов выполните одну из следующих настроек:
-
Укажите путь к папке сертификатов:
-
Необходимые сертификаты сохраните в отдельную папку на диске Docker-хоста.
-
Смонтируйте в каталог
/var/cryptoservice/cacertsDocker-контейнера и запустите контейнер.
При запуске контейнера всё содержимое папки будет импортировано в хранилище.docker run -d -p 8100:8094 -v ./Cert:/var/cryptoservice/cacerts packages.docsvision.com/cryptoservice (1)1 Если используется Docker Hub, замените packages.docsvision.com/cryptoserviceнаdocsvision/cryptoservice.
-
-
Заново соберите образ:
-
Создайте Dockerfile:
FROM packages.docsvision.com/cryptoservice COPY ./your/cacerts/ /var/cryptoservice/cacerts/ (1)1 Если используется Docker Hub, замените packages.docsvision.com/cryptoserviceнаdocsvision/cryptoservice -
Соберите собственный образ:
$ docker build . -t cryptoservice
-
Запустите контейнер:
$ docker run -d -p 8100:8094 cryptoservice
-
Настройка Криптосервиса в Docsvision 6.1
-
После установки Криптосервиса создайте файл с расширением
.jsonи любым именем, скопируйте созданный конфигурационный файл по пути/usr/lib/docsvision/platform/configи перезапустите службу dvappserver. Пример содержимого файла.jsonприведён ниже:{ "DocsVision": { "BackOffice": { "Server": { "Extension": { "ComplexSignatureServiceAddress": "ConnectAddress=http://server.domain.com:8100/cryptoservice/api/v1" (1) } } } } }1 Адрес Криптосервиса. -
Зайдите в Консоль управления и создайте процесс Службы фоновых операций с типом конфигурации Обслуживание ЭП.
-
Для корректной работы службы фоновых операций с использованием сервиса перештамповки подписей необходимо использовать машину, имеющую как минимум два процессора.
-
Сервис обслуживания ЭП должен запускаться только в одном экземпляре рабочего процесса Службы фоновых операций.
-
-
В соединении Docsvision выберите сервер, на котором указан адрес Криптосервиса в конфигурационном файле из примера выше.
События работы сервиса записываются в журнал Криптосервиса. Ознакомиться с журналом можно, имея идентификатор контейнера:
sudo docker ps (1) sudo docker logs идентификатор-контейнера (2)
| 1 | Узнать идентификатор контейнера. |
| 2 | Посмотреть журнал Криптосервиса. |
Улучшение подписи с сертификатом без адреса 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 packages.docsvision.com/cryptoservice
Настройка подключения к криптосервису по HTTPS
-
Создайте PKCS12-файл (
.p12или.pfx) предпочтительным способом. Шаг можно пропустить, если уже есть сертификат в формате.p12или.pfx. Ниже приведён пример генерации файла при помощи утилиты OpenSSL.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-файла -
Создайте файл конфигурации.
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-файла -
Запустите криптосервис:
docker run -d -p 8100:8094 \ -v $(realpath application.properties):/application.properties \ (1) -v $(realpath keystore.p12):/keystore.p12 \ (2) packages.docsvision.com/cryptoservice \ java org.springframework.boot.loader.JarLauncher \ --spring.config.additional-location=/application.properties (3)1 Монтирование файла конфигурации хост:контейнер2 Монтирование PKCS12-файла хост:контейнер3 Путь до файла конфигурации в контейнере