Инструкции по установке - Документация
Перейти к содержанию

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


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

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

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

  1. Создайте и перейдите в рабочую директорию:

       mkdir cryptoarm-server && cd cryptoarm-server
    
  2. Загрузите конфигурационные файлы:

    curl -O https://git.digtlab.ru/trusted/cryptoarm/server/-/raw/main/docker/docker-compose.yml
    curl -O https://git.digtlab.ru/trusted/cryptoarm/server/-/raw/main/docker/Dockerfile
    curl -O https://git.digtlab.ru/trusted/cryptoarm/server/-/raw/main/.env
    
  3. Создайте директорию cryptopro:

    mkdir cryptopro
    
  4. Скачайте актуальную версию КриптоПро CSP 5.0 для Linux (x64, deb) и скопируйте файл linux-amd64_deb.tgz в каталог cryptoarm-server/cryptopro.

    📌 Для скачивания требуется пройти авторизацию на сайте КриптоПро.

    cryptoarm-server/cryptopro/linux-amd64_deb.tgz
    
  5. Отредактируйте настройки конфигурации:

    Откройте файл .env для редактирования.

    • Укажите серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE: CRYPTOPRO_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXX
    • Укажите лицензию КриптоАРМ Server в переменной TRUSTED_LICENSE: TRUSTED_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

    Опционально настройте переменные окружения:

    Переменные для настройки TSP-сервиса:

    • TSP_SERVICE_ADDRESS - адрес сервиса штампов времени (по умолчанию: <http://qs.cryptopro.ru/tsp/tsp.srf>)

    Переменные для настройки PDF-отчетов:

    • REPORT_TITLE - заголовок PDF-отчета (по умолчанию: Отчет о проверке электронной подписи)
    • DATA_STAMP_TITLE - заголовок штампа на подписанном документе (по умолчанию: Документ подписан электронной подписью)
    • STAMP_COLOR - цвет штампа в формате HEX (по умолчанию: #4c40d2)
    • REPORT_INFO_MESSAGE - нижний колонтитул (по умолчанию: {align:left}© {COMPANY_NAME} || {align:right}Страница {pageNumber} из {totalPages}\n{WEBSITE_URL})

    Поддерживаемые переменные:

    • {pageNumber} - номер текущей страницы
    • {totalPages} - общее количество страниц
    • {COMPANY_NAME} - название компании (по умолчанию: ООО Цифровые технологии)
    • {WEBSITE_URL} - URL сайта компании (по умолчанию: www.cryptoarm.ru)
    • {VARIABLE_NAME} - любая переменная окружения

    Поддерживаемые директивы выравнивания:

    • {align:left} - выравнивание по левому краю
    • {align:center} - выравнивание по центру
    • {align:right} - выравнивание по правому краю
    • {align:justify} - выравнивание по ширине
  6. Запустите сборку:

    docker compose build --pull
    
  7. Запустите сервис:

    docker compose up -d
    

Дополнительно:

  • Просмотр логов:

    docker compose logs -f
    
  • Остановка:

    docker compose stop
    
  • Обновление версии образа сервиса до актуальной:

    docker compose build --pull
    docker compose up -d
    

Сборка из исходников#

  1. Склонируйте репозиторий:

    git clone https://git.digtlab.ru/trustednet/cryptoarm/server
    
  2. Выполните п. 3-5 из Установка и первый запуск сервиса

  3. Запустите сборку:

    docker compose build
    

Вход в сервис#

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

Swagger документация по REST API: http://SERVER:PORT/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 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-+⅙qQ+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": "29063cd", "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": "29063cd", "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 } ], "dataStamp": "JVBERi0xLjcKJ...=", "report": "JVBERi0xLjcKJ...="
}

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

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

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

```http
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
}


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

Скопируйте файлы сертификатов в каталог cryptoarm-server/certs.

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

Для установки корневого сертификата certs/crypto_test.cer выполните команду:

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

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

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

Для установки пользовательского сертификата certs/test.pfx выполните команду:

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

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


Настройка отчета#

Настройка сообщения в колонтитуле#

В переменной окружения REPORT_INFO_MESSAGE можно настроить сообщение, которое будет отображаться в колонтитуле PDF-отчета. Поддерживается замена переменных в формате {VARIABLE_NAME} и выравнивание текста с помощью директив {align:direction}.

Подробная документация доступна в файле Переменные окружения.


Подпись данных#

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: Сертификат в Base64
  • data: Подписываемые данные в Base64
  • password: Пароль от контейнера (если требуется)

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

{
  "cms": "MIAGCSqGSIb3DQEHAq...AAAAAAAA"
}

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