По просьбам трудящихся публикую инструкцию "выпускаем себе тестовые сертификаты крипто-про как горячие пирожки!". Здесь описан процесс получение сертификата квалифицированной электронной подписи (КЭП) содержащего любые данные (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, далее по ссылке Загрузка сертификата ЦС
и установить командой
/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file /tmp/certnew.cer
Вместо хранилища корневых сертификатов (uRoot) тут можно использовать хранилище для промежуточных УЦ (uCA). Так же важно понимать, что uRoot - это хранилище текущего пользователя, а не root, у него свое такое же хранилище.
Идем на страницу https://aleksandr-ru.github.io/RusCryptoJS/cryptopro.html#Выпуск_сертификата и вводим нужный нам DN (в формате JSON объекта), например:
{ "CN": "ОАО ТЕСТ", "2.5.4.4": "Иванов", "2.5.4.42": "Иван", "2.5.4.12": "Директор департамента", "2.5.4.9": "ул. Ивановская 99", "2.5.4.11": "Отдел маркетинга", "O": "ОАО \"Тест\"", "2.5.4.7": "г. Москва", "2.5.4.8": "77 г. Москва", "C": "RU", "1.2.840.113549.1.9.1": "example@domain.ru", "1.2.643.3.131.1.1": "2727020780", "1.2.643.100.1": "1022700525363", "1.2.643.100.3": "00000000052" }
где в следующих OID должны быть корректные (проходящие по контрольной сумме) данные
1.2.643.3.131.1.1: ИНН ФЛ (INN) 1.2.643.100.1: ОГРН 1.2.643.100.5: ОГРНИП 1.2.643.100.3: СНИЛС 1.2.643.100.4: ИНН ЮЛ (INNLE)
Для КПП нет официального OID, но некоторые используют 1.2.643.100.4
. Другие ГОСТ-овые OID можно посмотреть, например, по ссылке или в документе ФОРМАТ СЕРТИФИКАТА.pdf
Далее жмем Создать запрос на сертификат
, соглашаемся со всем и следуем инструкциям от CSP. В результате мы получаем запрос на сертификат (CSR) закодированный в base-64, копируем его в буфер обмена.
Переходим на сайт тестового УЦ КриптоПро по ссылке https://www.cryptopro.ru/certsrv/certrqxt.asp или https://testgost2012.cryptopro.ru/certsrv/certrqxt.asp для ГОСТ-2012, вставляем скопированный CSR в поле и жмем Выдать
.
На следующей странице обязательно выбираем Base64-шифрование
и жмем на ссылку Загрузить сертификат
.
Открываем полученный файл в любом редакторе и удаляем -----BEGIN CERTIFICATE-----
в начале и -----END CERTIFICATE-----
в конце, так чтоб осталось только тело сертификата между ними, и копируем его в буфер обмена.
Возвращаемся на страничку RusCryptoJS, где был создан CSR и вставляем скопированный сертификат в поле Certificate
и жмем Записать сертификат
. Параллельно можно поглядывать в консоль браузера, если интересно)
Дожидаемся сообщения об успехе, сертификат записан. Теперь сертификат со ссылкой на приватный ключ появится в выводе команды
/opt/cprocsp/bin/amd64/certmgr -list -store uMy
Полученным сертификатом можно полноценно пользоваться в тестовых целях, включая электронную подпись.