Сервис обслуживания ЭП

Сервис обслуживания ЭП — компонент модуля Базовые объекты. Сервис указывает в журнале подписей 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 6 алгоритмами в сертификатах. Требуется, например, при использовании сертификатов КриптоПро.

  • В Docsvision версии 6.1 и выше Криптосервис также необходим для функционирования Простой подписи.

Из-за использования библиотеки tspcom.dll Криптосервис требует быть развернут минимум в 32-битном процессе Службы рабочих процессов.

Установка и запуск Криптосервиса

Криптосервис работает с Docsvision следующих версий:
  • Модуль "Платформа" версии 6.1 и выше + "Web-клиент" 18 и выше.
    Криптосервис является обязательным для проверки подписей с нестандартными для .NET 6 алгоритмами в сертификатах. Требуется, например, при использовании сертификатов КриптоПро.

  • Модуль "Платформа" версии 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

Контейнер поставляется в комплекте со следующими сертификатами:

При необходимости использования дополнительных сертификатов выполните одну из следующих настроек:

  • Укажите путь к папке сертификатов:

    1. Необходимые сертификаты сохраните в отдельную папку на диске Docker-хоста.

    2. Смонтируйте в каталог /var/cryptoservice/cacerts Docker-контейнера и запустите контейнер.
      При запуске контейнера всё содержимое папки будет импортировано в хранилище.

      docker run -d -p 8100:8094 -v D:\Cert:/var/cryptoservice/cacerts packages.docsvision.com/cryptoservice (1)
      1 Если используется Docker Hub, замените packages.docsvision.com/cryptoservice на docsvision/cryptoservice.
  • Заново соберите образ:

    1. Создайте Dockerfile:

      FROM packages.docsvision.com/cryptoservice
      COPY ./your/cacerts/ /var/cryptoservice/cacerts/ (1)
      1 Если используется Docker Hub, замените packages.docsvision.com/cryptoservice на docsvision/cryptoservice
    2. Соберите собственный образ:

      $ docker build . -t cryptoservice
    3. Запустите контейнер:

      $ docker run -d -p 8100:8094 cryptoservice

Настройки Криптосервиса для модулей Платформа 5.5.5 и Служба фоновых операций 5.5.2

Чтобы изменить настройки, перейдите на сервере Docsvision в ветку реестра:
  1. HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\BackOffice\5.5\Server\Extension.

  2. В указанной ветке создайте параметр ComplexSignatureServiceAddress со строковым значением — адресом Криптосервиса.

    Например, так: параметр ComplexSignatureServiceAddress со значением ConnectAddress=http://server.domain.com:8094/cryptoservice/api/v1.

  3. Зайдите в Консоль управления и создайте процесс Службы фоновых операций с типом конфигурации Обслуживание ЭП.

    Сервис обслуживания ЭП должен запускаться только в одном экземпляре рабочего процесса Службы фоновых операций.

  4. В соединении Docsvision выберите сервер, на котором выполнен пункт 1.

События работы сервиса записываются в журнал Криптосервиса. Ознакомиться с журналом можно, имея идентификатор контейнера:

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 сервиса, выдавшего сертификат.

Требования к сертификату:
  • Сертификат, которым выполнялась подпись, должен быть доверенным. Доверенный сертификат — это сертификат, у которого корневой и промежуточные сертификаты добавлены в доверенные в образе Крипто-сервиса.

  • Сертификат OCSP сервиса (для подписания ответов сервиса) должен быть доверенным. Сертификат с большой вероятностью будет недоверенным в случае, если используется неквалифицированная электронная подпись (НЭП).

  • Сертификат OCSP сервиса должен быть выпущен тем же УЦ, что и сертификат, которым выполнялась подпись (поле Issuer в сертификатах должно совпадать). Иными словами, нужно использовать OCSP сервис того же УЦ, который выпустил сертификат, которым выполнялась подпись. Только данный УЦ может контролировать статус отзыва сертификата.

  • Сертификат OCSP сервиса можно уточнить в УЦ.

  • Сертификат TSP сервиса также должен быть доверенным.

  • Получить сертификат TSP сервиса можно также через техподдержку компании, которая предоставляет сервис, либо через утилиту CryptExpert.

Когда адрес сервиса известен, необходимо в файле настроек криптосервиса /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