GitHub – taigasys/CryptoProCSP: Контейнер с установленным и запущенным КриптоПро CSP 4 и скомпилированным плагином PHP.

Описание

КриптоАРМ ГОСТ – это новый уровень развития знакомой многим программы КриптоАРМ. Новое приложение обеспечивает возможность создания и проверки электронной подписи файлов с произвольным расширением на операционных системах Windows, Linux и macOS.

КриптоАРМ ГОСТ работает с сертификатами и ключами усиленной квалифицированной электронной подписи и полностью совместим с криптопровайдером СКЗИ КриптоПро CSP начиная с версии 4.0.

В приложении поддержаны стандарты для электронной подписи и хеширования ГОСТ Р 34.10-2021 и ГОСТ Р 34.11-2021, которые с должны заменить прекращающие свое действие стандарты ГОСТ Р 34.10-2001 и ГОСТ Р 34.11-94.

Описание api

Для проверки открепленной подписи шлем пост запрос на /vsignf.phpС двума параметрами:

  • hash – Хеш документа по GOST`у
  • sign – подпись

В ответ прилетит json:Если ошибка до проверки сертификата:

{ "status":1, "mess":"Описание ошибки"
}

Если проверка прошла:

{ "status":0, // 0 - все хорошо "data":{ "verify":0, // Проверка 1 - пройдена подпись валидна, 0 - не пройдена подпсись не валидна "verifyMessage":"сообщение об рошибки с кодом (0x800B010A)", "signers":[ // подписанты { "signingTime":"", //дата подписания "cert":{ // данные сертификата подписи "validToDate":"16.05.2021 11:56:29", // Валиден до "validFromDate":"16.02.2021 11:46:29", // Валиден от "subjectName":{ // Данные подписанта "C":"RU", "CN":"Test" }, "issuerName":{// Данные УЦ выдавшего сертификат "CN":"CRYPTO-PRO Test Center 2", "O":"CRYPTO-PRO LLC", "L":"Moscow", "C":"RU", "E":"support@cryptopro.ru" }, "certSerial":"120025DA...00025DAA0" // Серийный сертификата } } ] }
}

Docker & ncanode

В проекте вы увидите два докерфайла, это:

Авторы

  • Malik Zharykov – Initial work

Важно!!!

По требованию АО «НИТ» | НУЦ РК. Библиотеки kalkancrypt-0.6.jar и kalkancrypt_xmldsig-0.3.jar
Были удалены из репозитория, поэтому для компиляции Вам необходимо подставить библиотеки
из комплекта разработчика (SDK) в директорию /lib.

Читайте также:  Электронные больничные | ЭЦП для больничных листов — Удостоверяющий центр СКБ Контур

Документация

Руководство пользователя.pdf

Зачем это нужно

Данный контейнер не претендует на истину в последней инстанции.Является больше пособием для развертывания CryptoPro CSP 4 в среде Linux:UbuntuДля продакшена его можно и нужно допиливать.

Кто использует?

Исходя из полученных писем от программистов, NCANode используется как в стартапах, так и в крупных страховых компаниях

Лицензия

Проект лицензирован под лицензией MIT

Пример

Пример запроса (запрос информации о ключе):

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

{ "result": { "notAfter": "2021-08-22 18:11:36", "ocsp": { "revokationReason": 0, "revokationTime": null, "status": "ACTIVE" }, "chain": [ { "valid": true, "notAfter": "2021-08-22 18:11:36", "keyUsage": "AUTH", "serialNumber": "122684438670642568061334282296011886211357830154", "subject": { "lastName": "ТЕСТОВИЧ", "country": "KZ", "commonName": "ТЕСТОВ ТЕСТ", "gender": "", "surname": "ТЕСТОВ", "locality": "АЛМАТЫ", "dn": "CN=ТЕСТОВ ТЕСТ,SURNAME=ТЕСТОВ,SERIALNUMBER=IIN123456789011,C=KZ,L=АЛМАТЫ,S=АЛМАТЫ,G=ТЕСТОВИЧ", "state": "АЛМАТЫ", "birthDate": "12-34-56", "iin": "123456789011" }, "signAlg": "SHA256WithRSAEncryption", "sign": "LLQvGPQP rdLBTPRf0EgLIo/D9TqxeZ52pRyuCHN...", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMII...", "issuer": { "commonName": "ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)", "country": "KZ", "dn": "C=KZ,CN=ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)" }, "notBefore": "2021-08-22 18:11:36", "keyUser": [ "INDIVIDUAL" ] } ], "serialNumber": "122684438670642568061334282296011886211357830154", "subject": { "lastName": "ТЕСТОВИЧ", "country": "KZ", "commonName": "ТЕСТОВ ТЕСТ", "gender": "", "surname": "ТЕСТОВ", "locality": "АЛМАТЫ", "dn": "CN=ТЕСТОВ ТЕСТ,SURNAME=ТЕСТОВ,SERIALNUMBER=IIN123456789011,C=KZ,L=АЛМАТЫ,S=АЛМАТЫ,G=ТЕСТОВИЧ", "state": "АЛМАТЫ", "birthDate": "12-34-56", "iin": "123456789011" }, "signAlg": "SHA256WithRSAEncryption", "sign": "LLQvGPQP rdLBTPRf0EgLIo/D9TqxeZ52pRyuCHNm5P2iOdSn3DuDid1k4pNFHFDIuJ...", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtKWLOJf9qCqA6EO/SV...", "issuer": { "commonName": "ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)", "country": "KZ", "dn": "C=KZ,CN=ҰЛТТЫҚ КУӘЛАНДЫРУШЫ ОРТАЛЫҚ (RSA)" }, "notBefore": "2021-08-22 18:11:36", "keyUser": [ "INDIVIDUAL" ], "valid": true, "keyUsage": "AUTH" }, "message": "", "status": 0}

Сборка проекта

Для сборки проекта необходимо:

  1. Подставить бибилиотеки kalkancrypt (Их можно запросить тут)
  2. mvn clean package

Собранный проект будет лежать: target/ncanode-jar-with-dependencies.jar

Сделано с ❤️

Установка

Предполагается что у вас установлен Docker.

Файлы и папки

/conf - кнфигурационные файлы Makefile.unix - Файл сборки расширения getRootAndCACert.php - скрипт получения корневых и УЦ сертификатов, необходимы для проверки подписей start.sh - скрипт инициализации и запуска необходимых сервисов в контейнере
/dist - дистрибутивы программ и файлы необходимые для компиляции и запуска приложений описаны в установке. linux-amd64_deb.tgz - дистрибутив CryptoPro CSP 4 cades_linux_amd64.tar.gz - дистрибутива КриптоПро ЭЦП Browser plug-in php-5.6.30.tar.bz2 - исходники необходимой версии PHP
/www - каталог с PHP API
/docker-compose-dev.yml - пример конфига для docker-compose
/Dockerfile - Файл сборки контенера
/run.sh - скрипт запуска контейнера со всеми необходимыми опциями

Функциональные возможности

  • Электронная подпись – создание (формирование) электронной подписи в двух вариантах: совмещенной и отделенной. Формат подписи CMS (PKCS#7). Проверка электронной подписи с учетом списков отозванных сертификатов. Добавление электронной подписи к уже существующей.

Оцените статью
ЭЦП Эксперт