По просьбам трудящихся публикую инструкцию "выпускаем себе тестовые сертификаты крипто-про как горячие пирожки!". Здесь описан процесс получение сертификата квалифицированной электронной подписи (КЭП) содержащего любые данные (OID) на тестовом удостоверяющем центре КриптоПро.
Изначально предполагается, что у нас уже установлен CryptoPro CSP и КриптоПро ЭЦП Browser plug-in, если нет, то идем качаем на официальный сайт. Все операции будут описаны относительно работы в ОС Linux. В MacOS и Windows, в принципе, не должно быть существенных отличий, кроме поправки на пути к исполняемым файлам.
Так же необходимо наличие действительного сертификата тестового УЦ КриптоПро в корневом хранилище сертификатов. Проверить его наличие можно командой
/opt/cprocsp/bin/amd64/certmgr -list -store uRoot
В выводе должно быть что-то вроде
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 Serial : 0x37418882F539A5924AD44E3DE002EA3C SHA1 Hash : 0xcd321b87fdabb503829f88db68d893b59a7c5dd3 SubjKeyID : 4e833e1469efec5d7a952b5f11fe37321649552b Signature Algorithm : ГОСТ Р 34.11/34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits) Not valid before : 27/05/2019 07:24:26 UTC Not valid after : 26/05/2024 07:34:05 UTC PrivateKey Link : No
И если вдруг его нет, или истек срок действия (Not valid after), то нужно скачать свежий со страницы https://www.cryptopro.ru/certsrv/certcarc.asp, далее по ссылке Загрузка сертификата ЦС
и установить командой
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file /tmp/certnew.cer
В продолжении темы про выпуск сертификатов в Крипто-ПРО расскажу про добавление SubjectSignTool к запросу на сертификат (CSR) через командную строку.
Мануал к cryptocp говорит нам использовать -ext /path/to/ext/file
, но вот про то, как создать файл с расширениями, естественно, умалчивает.
Про работу JavaScript КриптоПро
Пишу, как говорится, о наболевшем, я от всей души ненавижу создателей браузерного плагина crypto-pro, но об этом в PS, а теперь к делу. В процессе формирования запроса на сертификат (CSR) силами cadesplugin нам нужно добавить в него расширение SubjectSignTool (OID.1.2.643.100.111) со значением в виде строки (UTF8String).
На первый взгляд все кажется не сложно: создать объект X509Enrollment.CObjectId
и инициализировать его значением, создать объект X509Enrollment.CX509Extension
и инициализировать его созданным OID и нужной строкой с правильным EncodingType. Сделать это правда придется два раза, для синхронного и асинхронного режима, но об этом тоже в PS. На практике все не так просто, и приходится погружаться в низкоуровневое кодирование ASN.1.