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

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


Требования к системе#

Характеристика Минимальное значение Дополнение
Информационная емкость ОЗУ 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


Установка и настройка#

1. Установка Docker#

Для установки проекта необходимо установить docker и docker-compose.

🔍 Подробное руководство по установке docker и docker-compose представлено на странице официальной документации проекта docs.docker.com.

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

2. Развертывание сервиса#

  1. Скачайте архив server-docker.zip с дистрибутивом программного продукта.

       wget https://git.digtlab.ru/trusted/cryptoarm/server/-/archive/docker/server-docker.zip
    
  2. Распакуйте скаченный архив

    unzip server-docker.zip
  1. Войдите в каталог server-docker:

       cd server-docker/
    
  2. Скачайте КриптоПро CSP 5.0 для Linux (x64, deb) linux-amd64_deb.tgz в каталог cryptopro. Для скачивания требуется пройти авторизацию на сайте КриптоПро.

    sh server-docker/cryptopro/linux-amd64_deb.tgz

  3. Отредактируйте настройки конфигурации:

    • Откройте на редактирование файл .env;
    • Задайте серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE
      CRYPTOPRO_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXX
    • Задайте лицензию КриптоАРМ Server в переменной TRUSTED_LICENSE
      TRUSTED_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
  4. Запустите сборку проекта: docker compose build --pull

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

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

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


Доступ к сервису#

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

    Пример: http://172.17.1.115:3037

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

    Пример: http://172.17.1.115:3037/docs


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

Проверить работу сервиса можно следующими способами:

  1. С помощью Swagger документации http://SERVER:PORT/docs
  2. С помощью утилиты 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==",
      "enhancedType": "CAdES-X Long Type 1"
    }'
    

    В запросе передаются следующие параметры:
    - cms: открепленная (либо прикрепленная) подпись, закодированная в Base64 - data: подписанные данные в формате Base64 (для открепленной подписи) - enhancedType: формат улучшения подписи (CAdES-T|CAdES-X Long Type 1|CAdES-A)

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

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
}

Установка корневого сертификата#

docker exec -it cryptoarm.server /opt/cprocsp/bin/amd64/certmgr -inst -all -store uroot -file /certs/crypto_test.cer

Установка корневого сертификата


Установка сертификата пользователя#

docker exec -it cryptoarm.server /opt/cprocsp/bin/amd64/certmgr -inst -all -store uMy -file /certs/test.pfx -pfx

Установка сертификата пользователя


Подпись#

   curl -X 'POST' \
  'http://172.17.1.115:3037/cms/sign' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "cert": "MIIDEjCCAr+gAwI...==",
  "data": "dGVzdA==",
  "password": "password"
}'

В запросе передаются следующие параметры:

  • cert: cертификат подписчика в формате Base64
  • data: подписываемые данные в формате Base64
  • password: пароль от ключевого контейнера (при необходимости)

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

HTTP/1.1 201 Created
Vary: Origin
Access-Control-Allow-Credentials: true
Content-Type: application/json; charset=utf-8
Content-Length: 1478
ETag:  W/"5c6-OiZeKxed1tGRHIj2Bv0IrvOzso0"
Date: Tue,18 Feb 2025 15:54:00 GMT 
Connection: keep-alive
Keep-Alive: timeout=5  
{
  "cms": "MIAGCSqGSIb3DQEHAq...AAAAAAAA"
}

Атрибуты ответа:

  • cms: отсоединенная подпись PKCS7 в формате Base64

Для повышения удобства работы и хранения данных веб-сайт CRYPTOARM.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.