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":"[email protected]"
                    },
                    "certSerial":"120025DA...00025DAA0" // Серийный сертификата
                }
            }
        ]
    }
}

Docker & ncanode

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

Авторы

  • Malik Zharykov – Initial work

Важно!!!

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

Читайте также:  ЭП — ALT Linux Wiki

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

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

Оцените статью
ЭЦП Эксперт
Добавить комментарий