CryptoPro
инфа по работе с КриптоПроАльтернативная библиотека на javascript
home/i_shmel/Downloads/CriptoPro/github/RusCryptoJS/docs/cryptopro.html
OpenSSL
// декодируем подпись из base64
openssl enc -d -base64 -in signedfile.sig -out signedfile
// извлекаем сертификат из подписи
openssl pkcs7 -in signedfile -print_certs -inform DER -out signercert.pem
// проверка времени действия сертификата
openssl x509 -noout -in signercert.pem -dates
// показать серийник сертификата:
openssl x509 -inform DER -in УЦ.cer -serial -noout | tr -d "serial="
openssl x509 -text -in 02.cer -inform DER | grep "serial:" | tr -d "serial" | tr -d ":"
// проверка сертификата
openssl x509 -text -in Югралесхоз.cer -inform PEM
// Преобразовать <file>.p7b в <file>.cer:
openssl pkcs7 -inform DER -outform PEM -in Certnew.p7b -print_certs > certificate_bundle.cer
// проверка ГОСТОВ
openssl ciphers | tr ":" "\n" | grep GOST
должно быть
GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89
// подключение ГОСТОВ
http://cainet.ru/content/pkcs7sign
// основы работы с OpenSSL
https://www.nixp.ru/articles/12.html
// советы и трюки OpenSSL
https://www.securitylab.ru/analytics/456595.php
CryptoPro
/opt/cprocsp/bin/amd64 $ - путь
листинг контейнеров
./csptest -keyset -enum_cont -fqcn -verifycontext
листинг сертификатов
./certmgr -list -store uroot
./certmgr -list -store uMy
Установка корневого сертификата
./certmgr -inst -store uroot -file ~/Downloads/certnew.cer
Установка личного сертификата
./certmgr -inst -store uMy -file ~/Downloads/CriptoPro/cert_18860.cer
Установка сертификата личного сертификата с привязкой к контейнеру
./cryptcp -instcert ~/Download/CryptoPro/cert_18886.cer
привязка сертификата к контейнеру с закрытым сертификатом
certmgr -inst -store uMy -file /var/opt/cprocsp/keys/portalcer.cer -cont '\\.\HDIMAGE\test' –pin *****
Удаление сертификатов из хранилища
./certmgr -delete
./certmgr -delete -store uroot
./certmgr -delete -store uMy
Удаление контейнера
./certmgr -delete -cont '\\.\HDIMAGE\testcont'
Подпись файла открепленной подписью
./csptest -sfsign -sign -detached -in c:\fakepath\testdoc.txt -out c:\fakepath\testdoc.txt.sig -my your@email -add
Проверка открепленной подписи
csptest -sfsign -verify -detached -in c:\fakepath\testdoc.txt -signature c:\fakepath\testdoc.txt.sig -my your@email
Запрос на выпуск сертификата
cryptcp -creatrqst r31.der -provtype 75 -cont Ivanov31 -dn "T=Руководитель,OID.1.2.840.113549.1.9.2=INN=0123456789/KPP=123456789/OGRN=0123456789123,CN=Петров Петр Петрович,OU=Тестовое подразделение,O=""ООО """"Тестовая организация"""""",L=Краснодар,S=23 Краснодарский край,C=RU,E=test@test.ru,ИНН=001234567890,ОГРН=0123456789123,СНИЛС=12345678901" -certusage "1.2.643.1.1,1.2.643.1.2,1.2.643.1.3.1,1.2.643.1.4.5,1.2.643.1.5,1.2.643.1.6" -both -ku -provname "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=7562&p=2
https://infotecs.ru/forum/topic/10345-sozdanie-zaprosa-na-kval-sertifikat-s-ispolzovaniem-sredstv-kriptopro/
Экспорт сертификатов и CRL:
./certmgr -export -cert -store root -all -dest root.p7b
./certmgr -export -crl -store CA -all -dest crl.p7b
Импорт сертификатов и CRL:
./certmgr -inst -all -crl -store CA -file crl.p7b
./certmgr -inst -all -store root -file root.p7b
Установка сертификатов используя КриптоПРО в Linux
https://estp.ru/test_eds/cert_install_linux/
Тестовый УД КриптоПро
https://www.cryptopro.ru/certsrv/
Демо-страница
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/main.html
===========================
На странице http://www.cryptopro.ru/products/csp/usage есть такая строка "Руководство программиста и тестовое ПО для версии 3.6 доступны на странице загрузки."
Заходите в Центр загрузки http://www.cryptopro.ru/downloads выбираете "КриптоПро CSP", находите гиперссылку "Документация для разработчиков и примеры (SDK)" и загружаете файл sdk.zip. И там целый проект в исходниках!
И смотрите как работать через CryptoAPI.
============================
Аутентификация на базе ЭЦП
https://habr.com/ru/post/123372/
Тестовая выдача сертификата на сайте КриптоПро
https://www.cryptopro.ru/certsrv/certrqma.asp
Шпаргалка по CryptoPro
https://iamsan.ru/unix-like/cryptopro-linux-faq
Инструкция SDK
https://cpdn.cryptopro.ru/default.asp?url=content/cades/plugin.html
Проверка подписи
https://dss.cryptopro.ru/Verify/Verify/
Некоторые подробности работы с Криптопро на Линуксе в одной статье
http://pushorigin.ru/cryptopro/cryptcp
Форум
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=5141 //установка сертификатов
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=2134 //общий процесс шифрования и расшифровки через консоль
Репозиторий для работы с плагином в браузере
https://github.com/Aleksandr-ru/RusCryptoJS
Репозиторий библиотеки gosoap
https://github.com/tiaguinho/gosoap
Альтернативная библиотека для работы с КриптоПро
https://github.com/bankrot/cadesplugin
Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL
https://habr.com/ru/post/275039/
Переход на ГОСТ-2012: главное о новом стандарте электронной подписи
https://iecp.ru/articles/item/421784-perehod-na-novyj-GOST-2012
Открытый ключ
https://lapo.it/asn1js/ - можно взять тут, загрузив сертификат
Возвращается ASN.1 кодирование открытого ключа, в том виде, в котором ключ хранится в сертификате.
Подробнее смотрите стандарт http://www.ietf.org/rfc/rfc4357.txt
Код: 0 99: SEQUENCE { 2 28: SEQUENCE { 4 6: OBJECT IDENTIFIER GOST R 34.10-2001 (1 2 643 2 2 19) 12 18: SEQUENCE { 14 7: OBJECT IDENTIFIER '1 2 643 2 2 36 0' 23 7: OBJECT IDENTIFIER : id-GostR3411-94-CryptoProParamSet (1 2 643 2 2 30 1) : } : } 32 67: BIT STRING, encapsulates { 35 64: OCTET STRING : 10 CD C7 83 5C 1B 18 84 E0 3F 54 9D BA C5 BE 56 : EB AF 79 AB D2 E6 B4 28 4D A0 FB 63 05 56 F6 D3 : 40 2F D2 62 10 0C BC D7 21 CA 69 78 E6 2D 97 E4 : 60 48 F5 84 E5 0B E1 05 64 5C 23 E7 E9 91 5D D6 : } : }
Первая цифра позиция, вторая длина. Длина всего ключа 101 байт.
bytes[0] = 0x30 - SEQUENCE, длина 99(0x63) состоит из параметров и ключа
bytes[2] = 0x30 - SEQUENCE, длина 28(0x1c) состоит из OID-а и параметров
bytes[4] = 0x06 - OID, длина 6 - 1.2.643.2.2.19 OID открытого ключа ГОСТ
bytes[12] = 0x30 - SEQUENCE, длина 18(0x12) параметры ключа
bytes[14] = 0x06 - OID, длина 7 - 1.2.643.2.2.36.0 OID набора параметров эллиптической кривой для ГОСТ 3410-2001
bytes[23] = 0x06 - OID, длина 7 - 1.2.643.2.2.30.1 OID параметров хеширования ГОСТ 3411-94
bytes[32] = 0x03 - BIT STRING длина 67(0x43) "обертка" для ключа
bytes[35] = 0x04 - OCTET STRING длина 64(0x40) собственно ключ - 64 байта