Инструкции по установке - API КриптоАРМ
Перейти к содержанию

Инструкции по установке

Условия применения

Требования для установки и настройки сервиса

Характеристика Минимальное значение Дополнение
Информационная емкость ОЗУ 4 Гб
Информационная емкость HDD 50 Гб
Процессор x86_64 (или amd64)
Поддерживаемые ОС Ubuntu 18.04 LTS (Bionic Beaver), Ubuntu 20.04 LTS (Focal Fossa), Debian 11 (Bullseye), Astra Linux CE 2.12.45 (Orel) Другие Linux дистрибутивы, поддерживающие запуск Docker
Дополнительно Средство автоматизации развертывания и контейнеризации Docker

Используемый стек технологий

Node.js, NestJS, КриптоПро CSP 5.0, КриптоАРМ ГОСТ SDK, Docker

Установка

Установка docker и docker-compose

Для установки проекта необходимо установить docker и docker-compose.
Подробное руководство по установке docker и docker-compose представлено на странице официальной документации проекта: https://docs.docker.com/engine/install/

Минимально необходимые версии компонентов Docker Engine: - Docker 19.03 +

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

  1. Скачайте архив server-main.zip с дистрибутивом программного продукта.
       wget https://git.digtlab.ru/trusted/cryptoarm/server/-/archive/main/server-main.zip
    
  2. Распакуйте скаченный архив
       unzip server-main.zip
    
  3. Войдите в каталог server-main:
      cd server-main/
    
  4. Скачайте КриптоПро CSP 5.0 для Linux (x64, deb) linux-amd64_deb.tgz в каталог cryptopro. Для скачивания требуется пройти авторизацию на сайте КриптоПро.
       server-main/cryptopro/linux-amd64_deb.tgz
    
  5. Отредактируйте настройки конфигурации:
  6. Откройте на редактирование файл .env;
  7. Задайте серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE
    CRYPTOPRO_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXX
  8. Задайте серверную лицензию КриптоАРМ ГОСТ версии 3 в переменной TRUSTED_LICENSE
    TRUSTED_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
  9. Запустите сборку проекта:
    docker compose build --pull

  10. Запустите проект:
    docker compose up -d

Просмотреть логи: - docker compose logs -f

Остановить проект: - docker compose stop

Вход в сервис

Для входа в web интерфейс сервиса необходимо перейти по адресу http://SERVER:PORT:
Пример: http://172.17.1.115:3037

Swagger документация по REST API доступна по адресу http://SERVER:PORT/docs:
Пример: http://172.17.1.115:3037/docs

Проверка работы сервиса

Проверить работу сервиса можно следующими способами:
1. С помощью Swagger документации http://SERVER:PORT/docs

  1. С помощью утилиты curl:
       curl -X 'POST' \
      'http://172.17.1.115:3037/cms/verify' \
      -H 'accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{
      "cms": "MIAGCSqGSIb3...==,MSMwIQYJKoZI...==",
      "data": "dGVzdA=="
    }'
    
    В запросе передаются следующие параметры:
  2. cms: открепленная (либо прикрепленная) подпись, закодированная в Base64
  3. data: подписанные данные в формате Base64 (для открепленной подписи)

Пример ответа:

HTTP/1.1 201 Created
Vary: Origin
Access-Control-Allow-Credentials: true
Content-Type: application/json; charset=utf-8
Content-Length: 136101
ETag: W/"213a5-+1/6qQ+hWCfJ0yGRz0/fQGpbTbk"
Date: Thu, 26 Sep 2024 12:40:04 GMT
Connection: keep-alive
Keep-Alive: timeout=5  
{
  "status": 200,
  "message":"ОК",
  "isValid": true,
  "isValidSign": true,
  "signs": [
    {
      "cadesTypeName": "CAdES-BES",
      "certificate": {
        "version": 3,
        "status": true,
        "subjectFriendlyName": "esia test3",
        "issuerFriendlyName": "CRYPTO-PRO Test Center 2",
        "subjectName": "CN=esia test3",
        "issuerName": "E=support@cryptopro.ru\r\nC=RU\r\nL=Moscow\r\nO=CRYPTO-PRO LLC\r\nCN=CRYPTO-PRO Test Center 2",
        "notAfter": "2024-10-26T16:25:37.000Z",
        "notBefore": "2024-08-26T16:15:37.000Z",
        "serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
        "thumbprint": "29063cd83537dbbd0a221705859b8f6e5bec5ad0",
        "signatureAlgorithm": "1.2.643.7.1.1.3.2",
        "signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
        "publicKeyAlgorithm": "1.2.643.7.1.1.1.1"
      },
      "certificateData": "MIIDEz...",
      "issuerName": "E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2",
      "serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
      "signatureAlgorithm": "1.2.643.7.1.1.3.2",
      "signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
      "certs": [
        {
          "status": true,
          "subjectFriendlyName": "esia test3",
          "issuerFriendlyName": "CRYPTO-PRO Test Center 2",
          "subjectName": "CN=esia test3",
          "issuerName": "E=support@cryptopro.ru\r\nC=RU\r\nL=Moscow\r\nO=CRYPTO-PRO LLC\r\nCN=CRYPTO-PRO Test Center 2",
          "notAfter": "2024-10-26T16:25:37.000Z",
          "notBefore": "2024-08-26T16:15:37.000Z",
          "serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
          "thumbprint": "29063cd83537dbbd0a221705859b8f6e5bec5ad0",
          "signatureAlgorithm": "1.2.643.7.1.1.3.2",
          "signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
          "publicKeyAlgorithm": "1.2.643.7.1.1.1.1"
        }
      ],
      "isCertChainValid": true
    }
  ],
  "data": "JVBERi0xLjQKJdPr...=",
  "dataStamp": "JVBERi0xLjcKJ...=",
  "report": "JVBERi0xLjcKJ...="    
}

Атрибуты ответа:
- status: Http статус - message: Если произойдет ошибка, то причина ошибки будет указана здесь - isValid: Общий результат проверки - isValidSign: Результат математической корректности подписи - signs: Информация о сертификатах - data: Подписанные данные в формате Base64 - dataStamp: Подписанные данные с визуализацией штампов подписей в формате Base64 (для PDF документов) - report: PDF-отчет проверки в формате Base64

Пример неуспешного ответа:

HTTP/1.1 400 Bad Request
Vary: Origin
Access-Control-Allow-Credentials: true
Content-Type: application/json; charset=utf-8
Content-Length: 101
ETag: W/"65-ykHUL2wV5KLzsDntQL70C94heK8"
Date: Thu, 26 Sep 2024 12:42:04 GMT
Connection: keep-alive
Keep-Alive: timeout=5
{
    "message": "Запрошена проверка прикрепленной CMS подписи, но подпись не содержит исходного документа",
    "error": "Bad Request",
    "statusCode": 400
}

Web-интерфейс сервиса:

Web-интерфейс сервиса

Пример отчета о проверки подписи:

Пример отчета о проверки подписи

Пример документа с визуализацией штампов подписей:

Пример документа с визуализацией штампов подписей