Сервис обслуживания ЭП
Сервис обслуживания ЭП — компонент модуля Базовые объекты. Сервис указывает в журнале подписей Web-клиента актуальный статус подписи, тип и дату окончания срока действия сертификата. Сервис обслуживания ЭП может работать в сочетании с Криптосервисом — Docker-контейнером, выполняющим функции обслуживания ЭП.
Для использования криптосервиса ЭП требуется Docker актуальной версии и опция лицензии Docsvision Сервис обслуживания электронной подписи (только для добавления архивного штампа времени). Криптосервис может быть получен из общего реестра образов Docker Hub — docsvision/cryptoservice или реестра образов Docsvision — packages.docsvision.com/cryptoservice.
Функциональные возможности сервисов
| Сервис обслуживания ЭП — расширение, входящее в стандартную поставку модуля Базовые объекты, не следует путать его с Криптосервисом. Криптосервис поставляется и настраивается отдельно. |
-
Если срок действия сертификата не истёк, Сервис обслуживания ЭП указывает в журнале подписей Web-клиента актуальный статус подписи, её тип и дату окончания срока действия сертификата, даёт возможность просматривать дополнительную информацию о подписи в журнале подписей Web-клиента.
-
Функциональность Сервиса обслуживания ЭП может быть дополнена отдельным компонентом — Криптосервисом.
-
Отображение штампа времени и улучшение подписи до CAdES-A.
Требования для использования Криптосервиса
-
Модуль Служба фоновых операций 5.5.2 и выше.
-
Docker актуальной версии, если криптосервис планируется разворачивать в контейнере. Криптосервис может быть получен из общего реестра образов Docker Hub —
docsvision/cryptoserviceили реестра образов Docsvision —packages.docsvision.com/cryptoservice. -
Опция лицензии Docsvision Сервис обслуживания электронной подписи.
-
Из-за использования библиотеки tspcom.dll Криптосервис требует быть развернут минимум в 32-битном процессе Службы рабочих процессов.
-
Сборки, входящие в состав Java CSP версии 5.0.45559, и лицензия на право использования ПО "КриптоПро Java CSP" на одном сервере.
-
Лицензия на право использования СКЗИ "КриптоПро CSP" версии 5.0 и выше на сервере.
Установка с помощью Docker
-
Получите сборки КриптоПро 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
События работы сервиса записываются в журнал Криптосервиса. Ознакомиться с журналом можно, имея идентификатор контейнера:
sudo docker ps (1) sudo docker logs идентификатор-контейнера (2)1 Узнать идентификатор контейнера. 2 Посмотреть журнал Криптосервиса.
-
Установка с помощью пакета установки
Поддерживается как установка на сервер Docsvision, так и машину без Docsvision.
-
При установке на сервер Docsvision параметр
ComplexSignatureServiceAddressпрописывается в ветку реестраHKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\BackOffice\5.5\Server\Extensionсо значением по умолчаниюConnectAddress=http://server.domain.com:8094/cryptoservice/api/v1. -
При установке на машину без 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.
-
-
Настройки Криптосервиса для модулей Платформа 5.5.5 и Служба фоновых операций 5.5.2
-
После установки Криптосервиса перейдите на сервере Docsvision в ветку реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\BackOffice\5.5\Server\Extension. -
В указанной ветке создайте параметр
ComplexSignatureServiceAddressсо строковым значением — адресом Криптосервиса.Например, так: параметр
ComplexSignatureServiceAddressсо значениемConnectAddress=http://server.domain.com:8094/cryptoservice/api/v1. -
Зайдите в Консоль управления и создайте процесс Службы фоновых операций с типом конфигурации Обслуживание ЭП.
Сервис обслуживания ЭП должен запускаться только в одном экземпляре рабочего процесса Службы фоновых операций.
Улучшение подписи с сертификатом без адреса 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" } }1 Путь до PKCS12-файла 2 Пароль от PKCS12-файла
-
-
Запустите криптосервис.
-
Запустите службу 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 Путь до файла конфигурации в контейнере
-