Инструкции по установке#
- Требования к системе
- Технологический стек
- Установка
- Вход в сервис
- Проверка работы сервиса
- Установка сертификатов
- Настройка отчета
- Подпись данных
Требования к системе#
| Характеристика | Минимальное значение | Дополнение |
|---|---|---|
| Информационная емкость ОЗУ | 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 или выше
Установка и первый запуск сервиса#
-
Создайте и перейдите в рабочую директорию:
-
Загрузите конфигурационные файлы:
-
Создайте директорию cryptopro:
-
Скачайте актуальную версию КриптоПро CSP 5.0 для Linux (x64, deb) и скопируйте файл linux-amd64_deb.tgz в каталог
cryptoarm-server/cryptopro.📌 Для скачивания требуется пройти авторизацию на сайте КриптоПро.
-
Отредактируйте настройки конфигурации:
Откройте файл .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}- выравнивание по ширине
- Укажите серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE:
-
Запустите сборку:
-
Запустите сервис:
Дополнительно:
-
Просмотр логов:
-
Остановка:
-
Обновление версии образа сервиса до актуальной:
Сборка из исходников#
-
Склонируйте репозиторий:
-
Выполните п. 3-5 из Установка и первый запуск сервиса
-
Запустите сборку:
Вход в сервис#
Для входа в web интерфейс сервиса откройте в браузере: http://SERVER:PORT
- Пример: http://172.17.1.115:3037
Swagger документация по REST API: http://SERVER:PORT/docs
- Пример: http://172.17.1.115:3037/docs
Проверка работы сервиса#
Проверить работу сервиса можно следующими способами:
- С помощью Swagger документации
http://SERVER:PORT/docs - С помощью утилиты 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: Сертификат в Base64data: Подписываемые данные в Base64password: Пароль от контейнера (если требуется)

