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": ,
"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": 
}

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

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

  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). Проверка электронной подписи с учетом списков отозванных сертификатов. Добавление электронной подписи к уже существующей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector