Любой язык - Крипто про он же csptest.exe

Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

Цитата Ageron:



покажите формат вывода контейнеров с ключами

csptest -keyset -enum_containers -fqcn -verifycontext
Любой язык - Крипто про он же csptest.exe




\\.\FAT12_F\d9eebaf9-ba20-4a2e-9480-2490f976b2f5

\\.\FAT12_F\d31d043b-6368-411b-91c2-9d479d67e9b1

\\.\FAT12_F\ea67cde7-2a3e-4f24-afe4-5553b6290b13

\\.\FAT12_F\82176ef9-076e-4661-bf70-4f035307ea54

\\.\FAT12_F\73a78cad-2b53-47df-bc9a-c12959ee5ad5

\\.\FAT12_F\d232b854-0356-4cc4-b51f-9b5eda1edf6a

\\.\FAT12_F\76a5248e-6d98-4400-a7c4-766d7013c1fd

\\.\FAT12_F\83dce872-d49f-45d6-8761-9be05d915fe5

\\.\FAT12_F\53dfc883-8f5d-4cef-bce4-4ed0737fcf40

\\.\FAT12_F\77456a81-4b90-46b5-b276-147a4507d8a7

\\.\FAT12_F\62ed7b12-33d6-42b6-8774-ecac899a06ba

\\.\FAT12_F\e2a52506-f46a-449c-8e04-7a10e6d4e6aa

\\.\FAT12_F\cef3154b-5890-4614-8932-a2c73ea845bc

\\.\FAT12_F\370415f5-9085-4582-b57c-bf746947a814

\\.\FAT12_F\86ba2ee2-c1ab-4e3a-b750-94cd57b6f1d5

\\.\FAT12_F\99296548-3222-4f15-ada7-79d6bf8283ad
Аватара пользователя
YuS_2

Re: Любой язык - Крипто про он же csptest.exe

Сообщение YuS_2 »

С форума Крипто Про подсказали команду просмотра данных ключа

certmgr -list -cont "cont_name"

В командной строке вся нужна инфа есть, как то автоматически ее можно выбрать из нужных полей?

каждая инфа обозначена "О=***", "CN=****", "Not valid before : 24/07/2018 13:43:01 UTC"

их можно (эти 3 пункта) вывести в файл в формате "Исходное название ключа = "Значение CN=****" "Значение О=****" "Значение Not valid before :24.07.2018"

И после подставить в команду csptest.exe -keycopy -src "\\.\FAT12_F\1f4caf5dcd5746218c2d13d961cc323d" -dest "\\.\FAT12_G\"То что после = из файла?" -pindest=""
Аватара пользователя
Ageron

Re: Любой язык - Крипто про он же csptest.exe

Сообщение Ageron »

Цитата ownsmir:



Можно как то убрать проверку пароля? Они без пароля все
Любой язык - Крипто про он же csptest.exe




Да можно конечно, но вопрос в том, что это пример для ЭЦП физ.лица, который был у меня под рукой. Содержимое ваших ключей может быть другим...

Пароль убрать так:



Код:

Код: Выделить всё

#requires -v 5.0
$arr = dir *.key
$arr|%{
	#"Введите пароль ключа $($_.fullname)"
	#$pass = read-host -assec
	$cert = get-pfxcertificate $_.fullname #-pass $pass
	$hash = ($cert.subject -split ',')|convertfrom-stringdata
	$name = $hash.cn
	ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif
}


Цитата ownsmir:



их можно (эти 3 пункта) вывести в файл в формате
Любой язык - Крипто про он же csptest.exe




можно всё, что не запрещено Изображение




Цитата ownsmir:



"CN=****"
Любой язык - Крипто про он же csptest.exe





Цитата YuS_2:



$name = $hash.cn
Любой язык - Крипто про он же csptest.exe
Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

Цитата YuS_2:



Да можно конечно, но вопрос в том, что это пример для ЭЦП физ.лица, который был у меня под рукой. Содержимое ваших ключей может быть другим...

Пароль убрать так:

Код:

#requires -v 5.0

$arr = dir *.key

$arr|%{

#"Введите пароль ключа $($_.fullname)"

#$pass = read-host -assec

$cert = get-pfxcertificate $_.fullname #-pass $pass

$hash = ($cert.subject -split ',')|convertfrom-stringdata

$name = $hash.cn

ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif

}

Цитата ownsmir:

их можно (эти 3 пункта) вывести в файл в формате »

можно всё, что не запрещено

Цитата ownsmir:



Все равно выходит окно ввода PS((

"CN=****" »

Цитата YuS_2:

$name = $hash.cn »
Любой язык - Крипто про он же csptest.exe
Аватара пользователя
YuS_2

Re: Любой язык - Крипто про он же csptest.exe

Сообщение YuS_2 »

С форума Крипто Про подсказали команду просмотра данных ключа

certmgr -list -cont "cont_name"

В командной строке вся нужна инфа есть, как то автоматически ее можно выбрать из нужных полей?

каждая инфа обозначена "О=***", "CN=****", "Not valid before : 24/07/2018 13:43:01 UTC"

их можно (эти 3 пункта) вывести в файл в формате "Исходное название ключа = "Значение CN=****" "Значение О=****" "Значение Not valid before :24.07.2018"

И после подставить в команду csptest.exe -keycopy -src "\\.\FAT12_F\1f4caf5dcd5746218c2d13d961cc323d" -dest "\\.\FAT12_G\"То что после = из файла?" -pindest=""



Или без вывода в файл из предыдущей команды можно эти данные отфильтроватьи подставить?




Цитата YuS_2:



Да можно конечно, но вопрос в том, что это пример для ЭЦП физ.лица, который был у меня под рукой. Содержимое ваших ключей может быть другим...

Пароль убрать так:

Код:

#requires -v 5.0

$arr = dir *.key

$arr|%{

#"Введите пароль ключа $($_.fullname)"

#$pass = read-host -assec

$cert = get-pfxcertificate $_.fullname #-pass $pass

$hash = ($cert.subject -split ',')|convertfrom-stringdata

$name = $hash.cn

ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif

}

Цитата ownsmir:

их можно (эти 3 пункта) вывести в файл в формате »

можно всё, что не запрещено

Цитата ownsmir:

"CN=****" »

Цитата YuS_2:

$name = $hash.cn »
Любой язык - Крипто про он же csptest.exe




Вот что получается



PS C:\Windows\system32> #requires -v 5.0

$arr = dir D:\2018-05-.000\*.key

$arr|%{

#"Введите пароль ключа $($_.fullname)"

#$pass = read-host -assec

$cert = get-pfxcertificate $_.fullname #-pass $pass

$hash = ($cert.subject -split ',')|convertfrom-stringdata

$name = $hash.cn

ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif

}

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\header.key Назначение: D:\2018-05-.000\.key".

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\masks.key Назначение: D:\2018-05-.000\.key".

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\masks2.key Назначение: D:\2018-05-.000\.key".

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\name.key Назначение: D:\2018-05-.000\.key".

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\primary.key Назначение: D:\2018-05-.000\.key".

Введите пароль:

get-pfxcertificate : Требуемый объект не найден.

строка:6 знак:10

+ $cert = get-pfxcertificate $_.fullname #-pass $pass

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Изображение [Get-PfxCertificate], CryptographicException

+ FullyQualifiedErrorId : GetPfxCertificateUnknownCryptoError,Microsoft.PowerShell.Commands.GetPfxCertificateCommand



WhatIf: Выполнение операции "Переименование файла" над целевым объектом "Элемент: D:\2018-05-.000\primary2.key Назначение: D:\2018-05-.000\.key".
Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

Задача изменилась:

1. командой certmgr -list -cont "\\.\FAT12_F\*****" выводится информация такого вида:

Certmgr 1.1 (c) "Crypto-Pro", 2007-2018.

program for managing certificates, CRLs and stores



=============================================================================

1-------

Issuer : E=ca@skbkontur.ru, ОГРН=1026605606620, ИНН=006663003127, C=RU, S=66 Свердловская область, L=Екатеринбург, STREET=Пр. Космонавтов д. 56, OU=Удостоверяющий центр, O="АО ""ПФ ""СКБ КОНТУР""", CN="АО ""ПФ ""СКБ КОНТУР"""

Subject : CN="Название компании""", SN=Фамилия, G=Имя Отчество, C=RU, S=77 г. Москва, L=Москва, STREET="Адрес", O="Название компании""", T=Генеральный Директор, ОГРН=**********, СНИЛС=**********, ИНН=**********, E=почта, OID********************=********-********-********, РНС ФСС=********

SHA1 Hash : ***************************************

SubjKeyID : ***************************************

Signature Algorithm : ГОСТ Р 34.11/34.10-2001

PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)

Not valid before : 24/07/2018 13:43:01 UTC

Not valid after : 24/07/2019 13:52:01 UTC

PrivateKey Link : Certificate from container. No link to key

CA cert URL :
http://cdp.skbkontur.ru/certificates/kontur-q1-2018.crt


CA cert URL :
http://cdp2.skbkontur.ru/certificate...ur-q1-2018.crt


CDP :
http://cdp.skbkontur.ru/cdp/kontur-q1-2018.crl


CDP :
http://cdp2.skbkontur.ru/cdp/kontur-q1-2018.crl


Extended Key Usage : *********************************

***************************************

***************************************

***************************************

***************************************

***************************************

***************************************

=============================================================================



[ErrorCode: 0x00000000]



Звездочкой * закрыл конфиденциальную информацию



Нужно записать в переменную из вывода верхней команды данные:

Subject : CN=Название компании

Not valid before : 24/07/2018

Issuer : CN=СКБ КОНТУР



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

csptest.exe -keycopy -src "\\.\FAT12_F\1f4caf5dcd5746218c2d13d961cc323d" -dest "\\.\FAT12_П\Название компании 24.07.2018 СКБ КОНТУР" -pindest=""
Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

Цитата ownsmir:



Вот что получается
Любой язык - Крипто про он же csptest.exe




файлы .key - это не сам сертификат


Цитата:



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




поэтому на попытку считывания командлетом не подходящих данных, вываливается соответствующая ошибка ...




Цитата ownsmir:



командой certmgr -list -cont "\\.\FAT12_F\*****" выводится информация такого вида:
Любой язык - Крипто про он же csptest.exe




предполагаю, что в контейнере находится сам сертификат, который и читает certmgr...

Выковыривать информацию из вывода в консоль cmd, дело неблагодарное, хоть и не безнадежное...

Всё же, предлагаю воспользоваться powershell-ом для получения данных сертификата.



Код:

Код: Выделить всё

$cert = get-pfxcertificate f:\исходное_наименование_каталога\имя_сертификата.cer
$hashsubject = ($cert.subject -split ',')|convertfrom-stringdata
$hashissuer = ($cert.issuer -split ',')|convertfrom-stringdata

и далее:


Цитата ownsmir:



Нужно записать в переменную из вывода верхней команды данные:

Subject : CN=Название компании

Not valid before : 24/07/2018

Issuer : CN=СКБ КОНТУР
Любой язык - Крипто про он же csptest.exe




можем все это получить:



Код:

Код: Выделить всё

$name_date = "{0:dd.MM.yyyy}" -f $cert.notbefore
$name1 = $hashsubject.cn
$name2 = $hashissuer.cn
$new_name = $name1 + $name_date + $name2
ren f:\исходное_наименование_каталога $new_name -whatif

можно всё это автоматизировать, главное получить принципиальную работоспособность на примере...
Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

[q=YuS_2]$cert = get-pfxcertificate f:\исходное_наименование_каталога\имя_сертификата.cer

$hashsubject = ($cert.subject -split ',')|convertfrom-stringdata

$hashissuer = ($cert.issuer -split ',')|convertfrom-stringdata
Любой язык - Крипто про он же csptest.exe




Получается в папке с ключем должен быть сертификат .cer?

Его же там нет...

Мне не файлы нужно переименовать, мне нужно изменить дружественное название ключей чтобы в криптро про они отображались по образцу "Ромашка, ООО от 13.01.2019 СКБ Контур". Файлы на флешке мне вообще трогать не нужно. Про файлы я писал не зная откуда можно взять информацию о ключе.
Аватара пользователя
YuS_2

Re: Любой язык - Крипто про он же csptest.exe

Сообщение YuS_2 »

Цитата ownsmir:



Получается в папке с ключем должен быть сертификат .cer?

Его же там нет...
Любой язык - Крипто про он же csptest.exe




Сертификат в криптоконтейнере неизвлекаемый, но он там есть и без криптопро прочесть его проблематично, поэтому видимо придется таки разбирать cmd консольный вывод...
Аватара пользователя
ownsmir

Re: Любой язык - Крипто про он же csptest.exe

Сообщение ownsmir »

Цитата YuS_2:



Сертификат в криптоконтейнере неизвлекаемый, но он там есть и без криптопро прочесть его проблематично, поэтому видимо придется таки разбирать cmd консольный вывод...
Любой язык - Крипто про он же csptest.exe




Эх... Да



Больше никто не реагирует к сожалению(((

Сколько в интернете прочитал, толком не могу найти информацию как правильно взять определенную информацию и потом ее использовать.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»