Инструкции по установке¶
Условия применения¶
Требования для установки и настройки сервиса¶
Характеристика | Минимальное значение | Дополнение |
---|---|---|
Информационная емкость ОЗУ | 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 с дистрибутивом программного продукта.
-
Распакуйте скаченный архив
-
Войдите в каталог server-main:
-
Скачайте КриптоПро CSP 5.0 для Linux (x64, deb) linux-amd64_deb.tgz в каталог cryptopro. Для скачивания требуется пройти авторизацию на сайте КриптоПро.
-
Отредактируйте настройки конфигурации:
-
Откройте на редактирование файл .env;
- Задайте серверную лицензию КриптоПро CSP в переменной CRYPTOPRO_LICENSE
CRYPTOPRO_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXX -
Задайте серверную лицензию КриптоАРМ ГОСТ версии 3 в переменной TRUSTED_LICENSE
TRUSTED_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX -
Запустите сборку проекта:
-
Запустите проект:
Просмотреть логи:
Остановить проект:
Вход в сервис¶
Для входа в 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=="
}'
В запросе передаются следующие параметры:
- 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-интерфейс сервиса:
Пример отчета о проверки подписи:
Пример документа с визуализацией штампов подписей: