cryptopro from alexrook — GithubHelp

/certificates — все установленные сертификаты пользователя

Если нет сертификатов:

Если сертификатов нет:

{
  "certificates": [
    {
      "privateKey": {
        "providerName": "Crypto-Pro GOST R 34.10-2022 KC1 CSP",
        "uniqueContainerName": "HDIMAGE\eb5f6857.000D160",
        "containerName": "eb5f6857-a08a-4510-8a96-df2f75b6d65a"
      },
      "algorithm": {
        "name": "ГОСТ Р 34.10-2022",
        "val": "1.2.643.7.1.1.1.1"
      },
      "valid": {
        "to": "24.05.2022 08:13:16",
        "from": "24.02.2022 08:03:16"
      },
      "issuer": {
        "E": "[email protected]",
        "C": "RU",
        "L": "Moscow",
        "O": "CRYPTO-PRO LLC",
        "CN": "CRYPTO-PRO Test Center 2",
        "raw": "CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, [email protected]"
      },
      "subject": {
        "C": "RU",
        "L": "Test",
        "O": "Test",
        "OU": "Test",
        "CN": "Test",
        "E": "[email protected]",
        "raw": "[email protected], CN=Test, OU=Test, O=Test, L=Test, S=Test, C=RU"
      },
      "thumbprint": "982AA9E713A2F99B10DAA07DCDC94A4BC32A1027",
      "serialNumber": "120032C3567443029CC358FCDF00000032C356",
      "hasPrivateKey": true
    }
  ],
  "status": "ok"
}

/cosign — добавление еще одной подписи к документу

Функция cpsignedData не может быть сделана для функционирования: cosigcades ()

/sign — подписание документов

Чтобы выбрать сертификат для подписи, необходимо указать один критерий поиска find_type:

  • Sha1 — для SHA1 сертификата
  • Subject — для субъекта подписывающего лица.

В query — параметры поиска, в pin — пин-код (если он установлен):

Вернется JSON — документ, в signedContent будет содержаться подписанный файл.

/unsign — получение исходного файла без подписей

Content возвратится в поле title.

/verify — проверка подписанного документа

Подпишите файл и проверьте его:

В случае успешной проверки файл возвращает список подписавших.

Github — navyzet/crypto-proxy: docker контейнер с cryptopro 4 и nginx.

Необходимо скачать и распаковать дистрибутив c тестовой лицензией «КриптоПро CSP» в папку distr. Для этого необходима регистрация на сайте.
Сборка тестировалась на дистрибутиве «КриптоПро CSP 4.0 для Linux (x86, rpm)»

Редактирование изображений:

Запуск контейнеров:

docker run -d --name crypto-nginx --privileged --security-opt seccomp=unconfined --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 443:443 -t crypto

Сертификат тестового сервера; замените название сайта на test.ru. Когда появится запрос на ввод криптовалютного пароля, введите пустой пароль:

Пример заключения:

[email protected]~/crypto-proxy # docker exec -ti crypto-nginx /root/config.sh navyzet.ru
CryptCP 4.0 (c) "Crypto-Pro", 2002-2022.
Command prompt Utility for file signature and encryption.
Creating request...
CPCSP: Signing with the use of GOST R 34.10-2001 keys is not allowed from January 1st, 2022. We highly recommend to move to the use of GOST R 34.10-2022 keys in advance. Continue with the GOST R 34.10-2001 key generation?
(o) OK, (c) Cancel
o
Press keys...
[..........................................................................]

CryptoPro CSP: Set password on produced container "container".
Password:
Retype password:
Passwords are not equal!
Password:
Retype password:
Sending request to CA...
Installing certificate...
Certificate is installed.
[ReturnCode: 0]
Certmgr 1.0 (c) "CryptoPro",  2007-2022.
program for managing certificates, CRLs and stores

Install:
=============================================================================
1-------
Issuer              :[email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=navyzet.ru
Serial              : 0x12002667752E825729E3CF803A000000266775
SHA1 Hash           : 0x9e8c54c44ad16152ab55a59275a3dd01ef31143f
SubjKeyID           : 80b4d87101a23e4050fb67a12f6ed72c424969c8
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 05/03/2022  15:15:32 UTC
Not valid after     : 05/06/2022  15:25:32 UTC
PrivateKey Link     : No
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2022_CRYPTO-PRO Test Center 2.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO Test Center 2.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.1
=============================================================================

[ErrorCode: 0x00000000]
Certmgr 1.0 (c) "CryptoPro",  2007-2022.
program for managing certificates, CRLs and stores

Exporting:
=============================================================================
1-------
Issuer              :[email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=navyzet.ru
Serial              : 0x12002667752E825729E3CF803A000000266775
SHA1 Hash           : 0x9e8c54c44ad16152ab55a59275a3dd01ef31143f
SubjKeyID           : 80b4d87101a23e4050fb67a12f6ed72c424969c8
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 05/03/2022  15:15:32 UTC
Not valid after     : 05/06/2022  15:25:32 UTC
PrivateKey Link     : Yes
Container           : HDIMAGEcontaine.0001514
Provider Name       : Crypto-Pro GOST R 34.10-2001 KC2 CSP
Provider Info       : ProvType: 75, KeySpec: 1, Flags: 0x0
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2022_CRYPTO-PRO Test Center 2.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO Test Center 2.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.1
=============================================================================
Export complete

[ErrorCode: 0x00000000]
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libssl.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libssl.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libssl.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libcrypto.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libcrypto.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libcrypto.so.1.0.0: no version information available (required by openssl)
openssl: /opt/cprocsp/cp-openssl/lib/amd64/libcrypto.so.1.0.0: no version information available (required by openssl)
 * Reloading nginx configuration nginx

Я использовал Chromium с поддержкой алгоритма ГОСТ.

Аналоги

Существует классный пакет CryptoProCSP.

  • Давно не обновлялся, использует версию PHP5.6
  • Мне пришлось изменить Dockerfile, чтобы заставить его работать.

Без скачивания на диск

Примечание: Иногда что-то «заедает», но при повторном запуске функционирует.

Возможные проблемы

Dockerfile содержит такие имена пакетов, как Для замены обновленной версии используйте lsb-cproccsp-4.0.19921-5.noarch.rpm

Запуск контейнера

Мы будем использовать контейнер под названием cryptopro, который мы будем использовать в качестве примера во всех случаях.

Использование контейнера на удаленной машине

Такие команды, как кошка.докер.должен быть реализован на локальной машине. Если контейнер Docker находится на удаленной машине, то команда должна быть отправлена через SSH. Команда подписания:

Приветствие файла /etc/banner отключается опцией -q. И файл /etc/motd не отображается в /etc/motd при выполнении команды ssh.

Вы можете использовать SSH, чтобы отправить на машину следующие позывные:

Криптопро 4.0 в докер контейнере

Содержание контейнера:

Лицензия

Установка серийных номеров:

Просмотр:

Обработка ошибок

Успешные действия позволяют вернуть код 200 и «статус»: «OK».

Действия с ошибками возвращают 4xх и 5x коды, «status»: «fail», в полях errMsg – описание ошибки.

Если вы хотите утверждать, что ваш подход к лечению неэффективен, то это не так,

Выведет такую ошибку

Подписание документа

В качестве иллюстрации давайте установим тестовый сертификат:

Его SHA1 Hash — dd45247ab9b6c600da42cc36e3fe, который мы будем использовать как указатель на нужный сертификат (узнайте его: certmgr -list).

Давайте теперь выпустим файл stdin в качестве команды и выполним шаги.

В целом, получилось довольно неуклюже. Команда caption теперь выглядит следующим образом: scripts/side делает то же самое.

Как я могу узнать об ошибке через стандартную $?

Получение исходного файла из sig-файла

Элементы из примера выше:

Похоже, но со сценарием

Проблемы

Терминал выведет: если пин-код введен неправильно.

Подпись останавливается.

Проверка подписи

Сохраните файл с вашей подписью на жестком диске вашего компьютера:

Если вы подписали документ, чек будет выглядеть, как показано на рисунке.

Похоже, но со сценарием

Просмотр установленных сертификатов

Пользовательские сертификаты:

Корневые сертификаты:

Установка корневых сертификатов

Для установки корневых сертификатов необходимо передать содержащий их файл в stdin-скрипт /scripts/root. Если файл содержит несколько сертификатов, они будут установлены все.

Установка сертификатов пользователя для проверки и подписания

Необходимо сгенерировать zip-файл bundle.zip и отправить его в stdin скрипта /scripts/мой пример такого zip-файла:

Как получить сертификат КриптоПро?

Первая обнаруженная связка файлов закрытых ключей будет рассматриваться как набор поврежденных папок, а первый файл, обнаруженный в корне архива, будет рассматриваться как сертификат. Если контейнер имеет пароль, он передается в качестве первого параметра командной строки.

Сертификаты/ каталог содержит комбинацию сертификата тестирования и цепочки закрытых ключей с PIN -кодом:

Примеры:

Формат данных

Данные в теле запроса POST должны исходить из x-www.

Выводятся данные в формате JSON.

Через скачивание на диск

Curl следует использовать для загрузки сертификата на диск, а затем передать его в команду установки:

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