2019-11-06 22:55:49

Выпуск тестовых сертификатов ЭП КриптоПро с любыми данными

КриптоПро ЭЦП

КЭП

По просьбам трудящихся публикую инструкцию "выпускаем себе тестовые сертификаты крипто-про как горячие пирожки!". Здесь описан процесс получение сертификата квалифицированной электронной подписи (КЭП) содержащего любые данные (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

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