Инструкции по установке
Условия применения
Требования для установки и настройки сервиса
Характеристика | Минимальное значение | Дополнение |
---|---|---|
Информационная емкость ОЗУ | 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 +
Установка и первый запуск сервиса
- Скачайте архив server-main.zip с дистрибутивом программного продукта.
wget https://git.digtlab.ru/trusted/cryptoarm/server/-/archive/main/server-main.zip
- Распакуйте скаченный архив
unzip server-main.zip
- Войдите в каталог server-main:
cd server-main/
- Скачайте КриптоПро CSP 5.0 для Linux (x64, deb) linux-amd64_deb.tgz в каталог cryptopro. Для скачивания требуется пройти авторизацию на сайте КриптоПро.
server-main/cryptopro/linux-amd64_deb.tgz
- Отредактируйте настройки конфигурации:
- Откройте на редактирование файл .env;
- Задайте серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE
CRYPTOPRO_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXX - Задайте серверную лицензию КриптоАРМ ГОСТ версии 3 в переменной TRUSTED_LICENSE
TRUSTED_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX -
Запустите сборку проекта:
docker compose build --pull -
Запустите проект:
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
- С помощью утилиты 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==" }'
- cms: открепленная (либо прикрепленная) подпись, закодированная в Base64
- 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-интерфейс сервиса:
Пример отчета о проверки подписи:
Пример документа с визуализацией штампов подписей: