Формула errorcode 0x0000001

Формула errorcode 0x0000001 Электронная цифровая подпись

Дмитрий Кривокрысенко

Здравствуйте Господа!Благодарю за оказанную помощь.Подскажите пожалуйста пути решения в установке личного сертификата пользователя  *.cer в систему Alt Linux 7KDE x64, необходимо для работы с системой “ГАС Управление”. Все остальные шаги по установке КриптоПро и КриптоФокс прошел.А с установкой сертификата проблемы.Заранее благодарен



Дмитрий Кривокрысенко

Error(0x2). Can not open file   at /dailybuildsbranches/CSP_4_0/CSPbuild/CSP/src/certmgr/certmgr.cpp:2329

Подскажите пожалуйста, что это значит и как это решить, ибо только учусь.


КриптоПро не может найти файл сертификата. Зачем Вы под root его запускали, а в пути указали домашний каталог (то есть /root), где ничего не лежит?КриптоПро прекрасно работает под обычным пользователем. Под ним и скачивайте cer и запускайте certmgr (с установленным cryptopro-preinstall не нужно вводить полные пути к исполняемым файлам.



Дмитрий Кривокрысенко

при установке от имени пользователя тоже есть ошибка


А не связана она с кириллическим названием каталога “Загрузки” ?


[ErrorCode: 0x00000000]

Код ошибки 0 – не означает-ли, что ошибки нет?



Нет никакой ошибки, код 0.


Дмитрий Кривокрысенко

Благодарю за информацию!при попытке использовать token-manager, происходит импорт, даже сообщение об успешном импорте выходит, а самого файла сертификата  не видно. Только после импорта через certmgr, сертификат появляется в списке установленных. В чем причина может быть?


Дмитрий Кривокрысенко

В том случае, если используется Linux с rpm-пакетами, то необходимо его распаковать и скопировать в соответствующие каталоги/директории/папки. Необходимо также будет выполнить скрипт postinst от имени root:
#sh –xv postinst

сработало с установленным firefox-gost

« Последнее редактирование: 08.12.2016 14:20:25 от ruslandh »


пытаюсь сделать по этой инструкции https://geektimes.ru/post/280268/

сработало с установленным firefox-gost

Видимо нужно иметь несколько компьютеров для доступа к разным госсайтам


при попытке использовать token-manager, происходит импорт, даже сообщение об успешном импорте выходит, а самого файла сертификата  не видно. Только после импорта через certmgr, сертификат появляется в списке установленных. В чем причина может быть?


Дмитрий Кривокрысенко

в результате танца с бубном добился появления плагина в списке Firefox!!!!Дальше интересней!При входе на gasu.gov.ru всплывает окно плагина ура!Но пишет нет действующих сертификатов после установки token-manager, бывшему пользователю винды наглядно видны установленные корневые сертификаты! Но при установке личного сертификата вышло сообщение “импорт успешно!” и все в окне просмотра его нет. если выполнить certmgr -list то все пристойно, под номером 1 пользовательский под номером 2 корневой.где затык не пойму


Вы тут: Главная Popular Как изменить издание Windows, сохранив настройки и установленные программы

Если вы какое-то время уже пользуетесь одним из младших изданий Windows, возможно, вы задумывались над его обновлением до более красивой и функциональной системы.

Из этой статьи вы узнаете самый простой способ повышения издания Windows без потери привычной рабочей среды. При этом вам понадобится только ключ продукта. Здесь также описан способ понижения издания Windows 7 с сохранением всех настроек и программ с помощью ключа продукта и установочного диска.

В общем случае повышение издания Windows 10 достигается установкой старшего издания поверх. В ряде случаев можно обойтись просто вводом ключа продукта. У Microsoft есть подробная документация в двух статьях, хотя русский перевод в них машинный. Для каждой статьи я приведу основные тезисы.

Сводная таблица путей апгрейда различных версий и изданий Windows

  • Возможно только повышение издания (Home → Pro или Home → Education)
  • Enterprise LTSC можно обновить только до Enterprise или более новой версии Enterprise LTSC
  • Даунгрейд с сохранением файлов, но потерей программ и настроек возможен для Pro → Home и Education → Enterprise

Способы апгрейда и даунгрейда различных изданий Windows 10

  • Почти во всех случаях работает ввод ключа подходящего издания в Параметрах или из командной строки (changepk)
  • В ряде случаев даже не требуется перезагрузка (Pro → Education или Pro ← → Enterpise)
  • Даунгрейд до более ранних версий (1809 → 1803) невозможен за исключением отката
  • Поддерживаемые сценарии даунгрейда до младших изданий при истечении лицензии

Бонус! Как перейти с издания LTSC на Pro с сохранением программ и настроек.

Windows 7

Важное примечание о версиях Windows 7

Повысить или понизить издание Windows 7 с помощью установочного диска можно только в том случае, если выполняется любое из этих условий:

  • SP1 интегрирован в установочный диск (рекомендуется)
  • SP1 не установлен на ОС и не интегрирован в установочный диск

В противном случае, вы получите сообщение о том, что устанавливаемая система имеет более старую версию, чем текущая.

Повышение издания Windows 7

Перед вами меню «Пуск» только что установленной Windows 7 «Домашняя базовая».

Изменение издания Windows

Элемент Windows Anytime Upgrade (WAU) также доступен из панели управления, поэтому вы всегда найдете его поиском во всех изданиях, кроме «Максимальной». Кстати, WAU является единственным официально поддерживаемым способ обновления издания Windows.

Вам понадобится: ключ продукта.

Какие издания можно повысить

С помощью WAU вы можете очень быстро повысить любое издание, за исключением «Максимальной», конечно. В таблице перечислены все возможные пути обновления Windows 7.

Как изменить издание

Запустите WAU и введите ключ продукта. Его можно приобрести здесь же, оплатив кредитной картой, хотя это работает только для некоторых стран. Впрочем, ничто не мешает вам купить ключ в магазине Microsoft или в известных Интернет-магазинах AllSoft.ru и SoftKey.ru.

Перед изменением издания необходимо обновить систему, поэтому WAU автоматически загрузит все исправления после вашего одобрения. От вас больше не потребуется ничего, разве что немного терпения.

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

Совет

Чтобы ускорить дело, предварительно сделайте очистку диска. Людей с маленьким системным разделом или большим объемом личных файлов Windows может огорчить сообщением о недостатке места на системном разделе. В этом случае достаточно перенести файлы на другой раздел или внешний диск.

Повышение издания Windows Server 2008 R2

В серверных системах нет функции Windows Anytime Upgrade, зато аналогичная возможность заложена в DISM.

Dism /online /Set-Edition:Datacenter /ProductKey:12345-67890-12345-67890-12345

Причем такой путь доступен только для серверных систем. Честно говоря, я не проверял команду на практике, поэтому сообщите, если она не работает.

Аналогичные команды можно применять и к автономным образам, о чем можно узнать во всех подробностях из справки.

Понижение издания Windows 7

К понижению издания могут быть вполне обоснованные причины. Например, вы хотите перейти с пиратской Windows 7 «Максимальная» на лицензионную «Домашняя расширенная», которую получили в подарок за хорошее поведение. При этом вам не хочется заново настраивать систему и программы.

В принципе, этим способом можно не только понизить, но и повысить издание. Однако второе удобнее делать с помощью WAU.

  • установочный диск с изданием, которое вы хотите установить
  • ключ продукта, подходящий к изданию

Почему не работает изменение издания путем обновления системы

Программа установки Windows проверяет текущее издание перед его изменением, поэтому попытка обновления будет заблокирована на этапе проверки совместимости.

В сообщении излагается поддерживаемый путь, пусть и не слишком удобный. Тем не менее, есть и более короткий обходной путь, хотя и не имеющий официальной поддержки.

Предупреждение

Мне неизвестно, нарушает ли этот способ священное EULA. В любом случае, я привожу информацию исключительно с целью продемонстрировать, что заложенный в Windows механизм обновления системы может работать на повышение и понижение издания.

Процесс изменения издания

В библиотеке TechNet четко прописано, что переустановка поверх установленной системы возможна только в пределах текущего издания. Отсюда вытекает обходной путь: чтобы механизм заработал, надо изменить издание установленной системы на то, которое вы собираетесь установить.

  1. Откройте редактор реестра и перейдите в раздел
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  2. Измените значение параметра EditionID в соответствии с устанавливаемой системой.Изменение издания Windows
     Допустимые значения Windows 7:
    Enterprise
    Ultimate
    Professional
    HomePremium
    HomeBasic
    Starter

    Этого достаточно, чтобы пройти проверку совместимости.

  3. Запустите setup.exe с установочного диска и начните установку (можно по ходу дела установить недостающие обновления).
  4. В качестве типа установки выберите «Обновление».Изменение издания Windows
    Увеличить рисунок

По завершении процесса установки в вашем распоряжении окажется новое издание со всеми программами и настройками предыдущего.

Дискуссия

Если у вас есть вопросы по материалу, я с удовольствием отвечу на них. Предполагаю, что их будет немного, поэтому хочу обсудить два других момента.

Каким изданием Windows 7 вы пользуетесь?

Если честно, для моей повседневной работы вполне хватило бы «Домашней расширенной». Однако для ведения блога и ответов на форуме мне больше подходит «Максимальная». Причем удобнее использовать ее в качестве основной рабочей системы, чем держать на виртуальной машине.

Если вы проголосовали за один из двух первых пунктов, расскажите о тех возможностях «Максимальной», которые вам необходимы и отсутствуют в младших изданиях.

Читайте также:  Получить RSA-ключ | СБИС Помощь

Есть ли у вас опыт переустановки Windows 7 поверх установленной ОС?

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

Однако некоторые участники воспринимают такое предложение в штыки – мол, переустановка не является приемлемым решением. В XP так и было, но в Windows 7 можно не ждать у моря погоды, а исправить проблему в течение получаса.

Вам доводилось переустанавливать Windows 7 поверх? Сталкивались ли вы с проблемами? Расскажите о своем опыте!

Результаты голосования утеряны в связи с прекращением работы веб-сервиса опросов.

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

<!–
vbmenu_register(“postmenu_2877768”, true);

–>

Новый участник

Сообщения: 46

Благодарности: 0

Формула errorcode 0x0000001


Профиль

|
Отправить PM


| Цитировать


Здравствуйте! Уважаемые умы!
У меня по работе очень много разных эцп, от разных УЦ. Соответственно каждый УЦ при формировании ключа, обзывает его по своему, а зачастую это выглядит вот так “iojng-er4gedfgv-454g-45g45g” и т.д. Ну в общем все ключи называются по разному, бухгалтера несчастные по пол часа ищут нужное ЭЦП для работы с компанией по отчетности.
Смысл все темы таков, хочу взять все ключи на флешке (их порядка 1500) и через скрипт каждую подпись переименовать по человечески по образцу (НО информацию о ключе нужно брать из открытого ключа “Сертификата” т.к. актуальная и полная информация только там) образец “Ромашка, ООО от 13.01.2019 СКБ Контур” есть ли такая возможность?



Отправлено: 11:52,

02-07-2019

<!–

vbmenu_register(“postmenu_2878324”, true);

–>

Новый участник

Сообщения: 46

Благодарности: 0


Профиль

|
Отправить PM

| Цитировать


Цитата YuS_2:

Если код работает теперь, то его надо привести к автоматизации. Для этого необходимо определиться с этим:
1. Способ получения списка криптоконтейнеров. Для его создания используется определенная команда или же он собирается вручную? В общем, необходимо выбрать способ передачи списка в powershell.
2. Работает ли копирование контейнеров через csptest.exe, в принципе? Ошибка вываливается на некоторых контейнерах или на всех подряд?
– определимся с этими вопросами, тогда сделаю окончательный скрипт для копирования. »

Не совсем… Он по прежнему ругается на номер дома после ,

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

PS C:\Windows\system32> $subject = (($str[1].p2 -replace ',(?=[^=,]*,)') -split ',')
PS C:\Windows\system32> $subject
ОГРН=1234567890
 СНИЛС=1234567890
 ИНН=1234567890
 E=1234567890_1234567890
 OU=Общее подразделение
 T=Генеральный директор
 CN=Иванов Иванов Иванович
 SN=Иванов
 G=Иванов Иванович
 C=RU
 L=Москва
 STREET="ул.Лобненская
 21"

т.е. не по маске “имя=значение”
Надо как то удалить из вывода конец строки Suject вместе с STREET=”ул.Лобненская 21″ чтобы таких ошибок больше не выскакивало.

1. Есть список в файле такого вида:
\\.\FAT12_F\99296548-3222-4f15-ada7-79d6bf8283ad
\\.\FAT12_F\86ba2ee2-c1ab-4e3a-b750-94cd57b6f1d5
\\.\FAT12_F\370415f5-9085-4582-b57c-bf746947a814
\\.\FAT12_F\cef3154b-5890-4614-8932-a2c73ea845bc
\\.\FAT12_F\e2a52506-f46a-449c-8e04-7a10e6d4e6aa
\\.\FAT12_F\62ed7b12-33d6-42b6-8774-ecac899a06ba
\\.\FAT12_F\77456a81-4b90-46b5-b276-147a4507d8a7
\\.\FAT12_F\53dfc883-8f5d-4cef-bce4-4ed0737fcf40
\\.\FAT12_F\83dce872-d49f-45d6-8761-9be05d915fe5
\\.\FAT12_F\76a5248e-6d98-4400-a7c4-766d7013c1fd
\\.\FAT12_F\d232b854-0356-4cc4-b51f-9b5eda1edf6a
\\.\FAT12_F\73a78cad-2b53-47df-bc9a-c12959ee5ad5
\\.\FAT12_F\82176ef9-076e-4661-bf70-4f035307ea54
\\.\FAT12_F\ea67cde7-2a3e-4f24-afe4-5553b6290b13
и т.д.

2. Копирование так и не работает ругается:

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

>> cmd /c """C:\Program Files\Crypto Pro\CSP\csptest.exe"" -keycopy -contsrc "$fld" -contdest ""\\.\FAT12_D\$a""" -pindest="""""
WARNING: Useless positional arguments found: "Наталья", "Николаевна"
C:\Program Files\Crypto Pro\CSP\csptest.exe -keycopy [<options>]
CSPTEST copy container
<options>:
  -provsrc <name>   Specify source provider name
  -provdest <name>  Specify destination provider name
  -typesrc <type>   Specify source provider type
  -typedest <type>  Specify destination provider type
  -silent           Do not show any user interface
  -machinesrc       Use CRYPT_MACHINE_KEYSET
  -machinedest      Use CRYPT_MACHINE_KEYSET
  -contsrc <cont>   Source container
  -contdest <cont>  Destination container
  -archivable       Generate source key with CRYPT_ARCHIVABLE flag
  -pinsrc <PIN>     Source container pin
  -pindest <PIN>    Destination container pin
  -trace <mode>     Log level for internal messages
  -tfmt <flags>     Log format for internal messages
  -help             Print this help
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,034 sec
[ErrorCode: 0x00000001]



Отправлено: 15:36, 05-07-2019

| #31

<!–
vbmenu_register(“postmenu_2878347”, true);

–>

Аватара для YuS_2

Crazy

Contributor

Сообщения: 906

Благодарности: 400


Профиль

|
Отправить PM

| Цитировать


Цитата ownsmir:

из вывода конец строки Suject вместе с STREET=”ул.Лобненская 21″ »

а, да, что-то про конец строки я и не подумал … вот так должно быть:

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

$issuer = ($str[0].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
$subject = ($str[1].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata

Цитата ownsmir:

2. Копирование так и не работает ругается: »

тут я пока не могу ничего подсказать, ибо криптопро у меня нет. Но здесь важно определить, на всех контейнерах такая беда или на каком-то конкретном?
Пока проверьте исправленные строки, далее разберемся с выводом строки из переменной $a… что-то там явно не соответствует допустимому вводу csptest.exe

Цитата ownsmir:

1. Есть список в файле такого вида: »

с этим понятно, осталось только с копированием разобраться…

——-
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:


Отправлено: 17:39, 05-07-2019

| #32

<!–
vbmenu_register(“postmenu_2878424”, true);

–>

Новый участник

Сообщения: 46

Благодарности: 0


Профиль

|
Отправить PM

| Цитировать


YuS_2, YuS_2, YuS_2, YuS_2, YuS_2, YuS_2, YuS_2,

Цитата YuS_2:

Цитата ownsmir:
2. Копирование так и не работает ругается: »
тут я пока не могу ничего подсказать, ибо криптопро у меня нет. Но здесь важно определить, на всех контейнерах такая беда или на каком-то конкретном?
Пока проверьте исправленные строки, далее разберемся с выводом строки из переменной $a… что-то там явно не соответствует допустимому вводу csptest.exe
Цитата ownsmir:
1. Есть список в файле такого вида: »
с этим понятно, осталось только с копированием разобраться… »

С копированием разобрался) еще пару кавычек добавил к “$fld” и все сработало.
Собственно выкладываю получившийся код на текущий момент рабочий

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

#requires -v 3.0
$fld = "\\.\FAT12_H\0c91ac552c88477eb85fb27ec79fe7df"

$tmp = cmd /c """C:\Program Files\Crypto Pro\CSP\certmgr.exe"" -list -cont ""$fld"""
$str = $tmp|?{$_ -match 'Not valid after|Subject|Issuer'}|convertfrom-string -d ' : '
$issuer = ($str[0].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
$subject = ($str[1].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
$date = [datetime]::parse(($str[2].p2 -replace 'UTC','GMT'))
$a = ($subject.o -replace '"')+$(" {0:dd.MM.yyyy} " -f $date)+($issuer.o -replace '"')
cmd /c """C:\Program Files\Crypto Pro\CSP\csptest.exe"" -keycopy -contsrc ""$fld"" -contdest ""\\.\FAT12_D\$a"" -pindest="""

Как бы теперь сделать:
1. Чтобы в $fld = подставлялись строки из текстового файла со списком (или еще лучше чтобы строка подставилась и удалилась в тектовом файле если нет ошибок) кстати над эти думал, писать допом все в лог, чтобы ошибки разобрать если что…



Отправлено: 10:57, 06-07-2019

| #33

<!–
vbmenu_register(“postmenu_2878451”, true);

–>

Аватара для YuS_2

Crazy

Contributor

Сообщения: 906

Благодарности: 400


Профиль

|
Отправить PM

| Цитировать


Пробуйте:

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

#requires -v 3.0
$list = 'listcontainer.txt'
$certmgr = 'C:\Program Files\Crypto Pro\CSP\certmgr.exe'
$csptest = 'C:\Program Files\Crypto Pro\CSP\csptest.exe'
$dst = '\\.\FAT_D'

gc $list -enc utf8|%{
	try{
		[string]$container = $_
		$tmp = cmd /c """$certmgr"" -list -cont ""$_"""
		$str = $tmp|?{$_ -match 'Not valid before|Subject|Issuer'}|convertfrom-string -d ' : '
		$issuer = ($str[0].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$subject = ($str[1].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$date = [datetime]::parse(($str[2].p2 -replace 'UTC','GMT'))
		$a = ($subject.o -replace '"')+' '+($subject.cn -replace '"')+ `
		$(" {0:dd.MM.yyyy} " -f $date)+($issuer.o -replace '"')+' '+($issuer.cn -replace '"')
		cmd /c """$csptest"" -keycopy -contsrc ""$_"" -contdest ""$dst\$a"" -pindest="""""
	} catch {
		write-output "Произошла ошибка: $_ , контейнер: $container"|out-file error.log -enc utf8
	}
}

Только учтите, здесь добавлено поле “O” дополнительно к “CN” .

——-
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 06-07-2019 в 17:41.

Причина: поправки в коде

Это сообщение посчитали полезным следующие участники:


Отправлено: 12:49, 06-07-2019

| #34

<!–
vbmenu_register(“postmenu_2900910”, true);

–>

Новый участник

Сообщения: 46

Благодарности: 0


Профиль

|
Отправить PM

| Цитировать


Доброго дня… Хочу вернуться к данной теме…
Есть задача сделать помимо всей работы скрипта чтобы он дополнительно сравнил дату выпуска ключа и не обрабатывал его если дата меньше 16.12.2018 (на сегодняшний день), не подскажите как его изменить? Пробывал сам закончилось не рабочим скриптом.
Использую этот код:

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

#requires -v 3.0
$list = 'C:\erkey.txt'
$certmgr = 'C:\Program Files\Crypto Pro\CSP\certmgr.exe'
$csptest = 'C:\Program Files\Crypto Pro\CSP\csptest.exe'
$dst = '\\.\FAT12_J'

gc $list -enc utf8|%{
	try{
		[string]$container = $_
		$tmp = cmd /c """$certmgr"" -list -cont ""$_"""
		$str = $tmp|?{$_ -match 'Not valid before|Subject|Issuer'}|convertfrom-string -d ' : '
		$issuer = ($str[0].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$subject = ($str[1].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$date = [datetime]::parse(($str[2].p2 -replace 'UTC','GMT'))
		$a = ($subject.o -replace '"')+ `
		$(" {0:dd.MM.yyyy} " -f $date)+($issuer.o -replace '"')
		$container
		$a
		cmd /c """$csptest"" -keycopy -contsrc ""$_"" -contdest ""$dst\$a"" -pindest="""""
	} catch {
		write-output "Произошла ошибка: $_ , контейнер: $container"|out-file error.log -enc utf8
	}
}



Отправлено: 15:11, 17-12-2019

| #35

<!–
vbmenu_register(“postmenu_2900916”, true);

–>

Новый участник

Сообщения: 46

Благодарности: 0


Профиль

|
Отправить PM

| Цитировать


И было бы идеально еще перебор паролей сделать в команде

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

cmd /c """$csptest"" -keycopy -contsrc ""$_"" -pinsrc=""123456"" -contdest ""$dst\$a"" -pindest="""""

-pinsrc=””123456″” чтобы при неправльном пароле он попробЫвал другой который указан в переменной например.



Отправлено: 15:55, 17-12-2019

| #36

<!–
vbmenu_register(“postmenu_2901012”, true);

–>

Аватара для YuS_2

Crazy

Contributor

Сообщения: 906

Благодарности: 400


Профиль

|
Отправить PM

| Цитировать


Цитата ownsmir:

Доброго дня… Хочу вернуться к данной теме… »

“Вспомнить всё”©фильм
Формула errorcode 0x0000001

Цитата ownsmir:

чтобы он дополнительно сравнил дату выпуска ключа »

непросто вспомнить о чем шла речь полгода назад, для разовой-то задачи…
Вопрос только в том, где брать эту дату выпуска ключа. Возможно, это дата из поля “Not valid before”? Тогда, если не ошибаюсь, требуется это:

.bbccode{ width: 600px; }
.codepre{ width: 588px; padding-left:5px; }

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

#requires -v 3.0
$d = get-date('16.12.2018')
$list = 'C:\erkey.txt'
$certmgr = 'C:\Program Files\Crypto Pro\CSP\certmgr.exe'
$csptest = 'C:\Program Files\Crypto Pro\CSP\csptest.exe'
$dst = '\\.\FAT12_J'
gc $list -enc utf8|%{
	try{
		[string]$container = $_
		$tmp = cmd /c """$certmgr"" -list -cont ""$_"""
		$str = $tmp|?{$_ -match 'Not valid before|Subject|Issuer'}|convertfrom-string -d ' : '
		$issuer = ($str[0].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$subject = ($str[1].p2 -replace ',(?=[^=,]*(,|$))') -split ','|convertfrom-stringdata
		$date = [datetime]::parse(($str[2].p2 -replace 'UTC','GMT'))
		$a = ($subject.o -replace '"')+ `
		$(" {0:dd.MM.yyyy} " -f $date)+($issuer.o -replace '"')
		$container
		$a
		if ($date -gt $d){
			cmd /c """$csptest"" -keycopy -contsrc ""$_"" -contdest ""$dst\$a"" -pindest="""""
		}
	} catch {
		write-output "Произошла ошибка: $_ , контейнер: $container"|out-file error.log -enc utf8
	}
}

Цитата ownsmir:

чтобы при неправльном пароле он попробЫвал другой который указан в переменной например. »

Для этого необходимо получать код возврата от “csptest.exe” и если он возвращает какой-либо уникальный код, в случае неправильного ввода пароля, тогда можно что-нибудь будет придумать. Но, напомню: крипто про у меня не установлен, поэтому проверять и тестировать не на чем…

——-
scio me nihil scire. Ѫ



Отправлено: 09:30, 18-12-2019

| #37

Формула errorcode 0x0000001

Поговорим немного про средства электронной подписи (ЭП) с использованием отечественных ГОСТ-алгоритмов в Linux. Несмотря на то, что различные средства и интерфейсы по работе с ЭП в Linux развиты даже лучше, чем в Windows, использовать их не так просто.

Такое положение вещей сохранялось последние несколько лет. Но с конца 2016 года ситуация изменилась в лучшую сторону. Появилось сразу два продукта, которые позволяют работать с электронной подписью по стандарту ГОСТ и шифрованием без использования консоли – это Rosa Crypto Tool и Trusted eSign. Оба эти продукта для работы с криптографией используют «КриптоПро CSP» для Linux. Поэтому, перед тем как обратиться к описанию самих продуктов, поговорим немного про «КриптоПро CSP».

«КриптоПро CSP» под Linux — неоднозначный продукт. С одной стороны, это одно из самых распространенных и мощных сертифицированных средств по работе с криптографией как в Windows, так и в Linux. С другой стороны, для простого человека пользоватся его интерфейсами даже в Windows не так-то просто. А в Linux доступен только консольный интерфейс. Надеюсь, что компания «КриптоПро» в курсе этой ситуации, и в будущем нас ждут новые красивые и удобные интерфейсы, как для Windows, так и для Linux.

Для настройки нам понадобится:

  • Любимый дистрибутив Linux. Я использовал Ubuntu Linux 16.04 LTS и ROSA Fresh GNOME R8;
  • Сертифицированная версия КриптоПро CSP 4.0 R2 для Windows, UNIX и macOS;
  • Рутокен ЭЦП 2.0.

Настройка «КриптоПро» CSP

Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например, тут или тут), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.0 не является 100% совместимой с 3.x. Дополнительная причина – всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.

Приступаем к настройке.

Скачиваем «КриптоПро CSP» для Linux с официального сайта КриптоПро — www.cryptopro.ru/downloads

Распаковываем «КриптоПро CSP» для Linux:

tar -zxf ./linux-amd64_deb.tgz

Далее у нас есть 2 варианта – автоматическая установка и установка вручную. Автоматическая установка запускается командой:

sudo ./install.sh 

или

sudo ./install_gui.sh

Здесь надо отдать должное разработчикам «КриптоПро» – автоматическая установка для большинства дистрибутивов отрабатывает успешно. Хотя бывают и нюансы. Например, если у вас не хватает некоторых пакетов, то установка будет успешно завершена, хотя некоторый функционал работать не будет.

Если что-то пошло не так, или вы по тем или иным причинам хотите использовать установку в ручном режиме, то вам необходимо выполнить:

dpkg -i ./cprocsp-curl-64_4.0.0-4_amd64.deb lsb-cprocsp-base_4.0.0-4_all.deb lsb-cprocsp-capilite-64_4.0.0-4_amd64.deb lsb-cprocsp-kc1-64_4.0.0-4_amd64.deb lsb-cprocsp-rdr-64_4.0.0-4_amd64.deb

Для установки пакетов в ROSA используйте urpmi, вместо dpkg -i.

Устанавливаем лицензию для «КриптоПро CSP» для Linux и проверяем, что все работает нормально:

cpconfig -license -set <серийный_номер>
cpconfig -license –view

Мы должны получить что-то вроде:

License validity:
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Expires: 3 month(s) 2 day(s)
License type: Server.

Настройка работы с Рутокен ЭЦП 2

Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало. Я буду использовать Рутокен ЭЦП 2.0, который имеет сертификат ФСБ и поддерживает работу как с новыми, так и со старыми ГОСТами.

Формула errorcode 0x0000001

Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.

Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:

apt-get install libpcsclite1 pcscd libccid

Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:

dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb

Получаем тестовый сертификат

Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.

Воспользуемся тестовым УЦ компании «КриптоПро» по адресу — https://www.cryptopro.ru/certsrv/
Создаем запрос на сертификат с параметрами по умолчанию.

Формула errorcode 0x0000001

Проверим, что сертификат получен успешно.

Чтобы убедиться, что «КриптоПро CSP» успешно увидел токен, выполним:

list_pcsc

Мы должны получить что-то вроде:

Aktiv Rutoken ECP 00 00

Теперь проверяем, что сертификат на токене видится успешно:

csptest -keyset -enum_cont -verifyc -fq

Получаем:

CSP (Type:80) v4.0.9014 KC1 Release Ver:4.0.9842 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 13476867
\\.\Aktiv Rutoken ECP 00 00\822506788-dfcd-54c9-3a5e-e0a82a2d7f0
OK.
Total: SYS: 0,020 sec USR: 0,160 sec UTC: 0,870 sec
[ErrorCode: 0x00000000]

Записываем в хранилище сертификатов КриптоПро информацию об этом сертификате:

csptestf -absorb -cert -pattern 'rutoken'

Match: SCARD\rutoken_ecp_351d6671\0A00\62AC
OK.
Total: SYS: 0,010 sec USR: 0,140 sec UTC: 1,040 sec
[ErrorCode: 0x00000000]

Проверим, что сертификат успешно сохранился в хранилище:

certmgr -list -cert -store uMy

Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
 
=============================================================================
1-------
Issuer              : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Trusted eSign Test
Serial              : 0x120019F5D4E16D75F520A0299B00000019F5D4
SHA1 Hash           : 0x016f443df01187d5500aff311ece5ea199ff863e
SubjKeyID           : 204e94f63c68595e4c521357cf1d9279bff6f6e5
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 22/02/2017  10:53:16 UTC
Not valid after     : 22/05/2017  11:03:16 UTC
PrivateKey Link     : Yes                
Container           : SCARD\rutoken_ecp_351d6671\0A00\62AC
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
=============================================================================
 
[ErrorCode: 0x00000000]

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

Подпись средствами «КриптоПро CSP»

В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:

  • Отсутствие хорошей документации;
  • Отсутствие графического интерфейса.

Подписать можно с помощью команды:

csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256

Здесь,
my — параметр, в котором надо указать часть Common Name сертификата для подписи;
detached — позволяет создать открепленную подпись;
alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.

Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:

csptestf –sfsign

Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.

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

Rosa Crypto Tool

Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.

Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2016 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2. Сейчас утилита поддерживает работу только с «КриптоПро CSP» для Linux, однако в ближайшее время будет добавлена поддержка других криптопровайдеров.

Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.

Установить ее можно, использовав «Управление программами» в Rosa Linux.

Формула errorcode 0x0000001

Вставляем токен и запускаем утилиту.

Формула errorcode 0x0000001

Видим, что токен определился успешно и был найден наш сертификат.

Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.

Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.

Формула errorcode 0x0000001

Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.

Формула errorcode 0x0000001

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

По сравнению с использованием «КриптоПро CSP» из консоли:

+ На порядок проще использовать;
— Отсутствуют различные параметры подписи.

Исходный код программы доступен в публичном репозитории на ABF:
abf.io/uxteam/rosa-crypto-tool-devel
Система контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.

Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.

Trusted eSign

Второй продукт, про который мы поговорим, это Trusted eSign от компании “Цифровые технологии”. Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».

Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.

Найти продукт на сайтах компании “Цифровые технологии” непросто. Небольшое описание есть в магазине http://www.cryptoarm.ru/shop/trusted_esign, продукт также можно скачать в разделе «Центр загрузки» на сайте trusted.ru — https://trusted.ru/support/downloads/?product=133

К сожалению, продукт пока доступен только в виде deb пакета для 64-битных систем. С чем связано такое ограничение, непонятно. Будем надеяться, что в ближайшее время компания выпустит и rpm пакет, а также версии для 32-битных дистрибутивов Linux.

Скачиваем с официального сайта deb-пакет и устанавливаем командой:

dpkg –i ./trustedesign-x64.deb

Запускаем Trusted eSign.

Формула errorcode 0x0000001

Сразу видно, что разработка не обошлась без дизайнера. Никакого сарказма. Все действия делаются просто и логично, а внешний вид радует глаз. К сожалению, большинство средств и программ в области ИБ от российских разработчиков разработаны без привлечения UX-специалистов и дизайнеров и заставляют своих пользователей страдать и плакать кровавыми слезами. Создается впечатление, что другими средства информационной безопасности просто не могут быть. “Цифровые технологии” опровергают это. Плата за красоту и удобство – необходимость платить за лицензию.

Но вернемся к подписи.

Выбираем раздел “Электронная подпись”:

Формула errorcode 0x0000001

Выбираем «Сертификат для подписи»:

Формула errorcode 0x0000001

Выбираем файлы для подписи и жмем «Подписать»:

Формула errorcode 0x0000001

Что под капотом? Процитирую с сайта: “Приложение создано на современном движке Electron, для вызова криптографических операций применяется библиотека OpenSSL. Совместимо с СКЗИ “КриптоПро CSP 4.0” и поддерживает все криптографические алгоритмы, реализованные в нем.” Для тех, кто ещё не в курсе Electron — это фреймворк для создания десктопных приложений на платформе node.js.

Сравним Trusted eSign с Rosa crypto tool:

+ Более удобный и красивый интерфейс
— Платная лицензия

Резюме

Подведем итог. В конце 2016 – начале 2017 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.

Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux. Хорошие и удобные продукты российских разработчиков помогут государственным организациям и структурам нормально работать и выполнять требования по импортозамещению.

Такое развитие не может не радовать, особенно когда это происходит под Linux.

.

Наверняка есть немало пользователей, особенно пользователей Linux, кто считает, что консольных утилит достаточно. А также специалистов по информационной безопасности, которые считают, что дизайн и удобство — излишество в ИБ. Но я не могу с ними согласиться. Консольные утилиты, несомненно, идеальны для автоматизации. Но большинству пользователей удобнее работать с графическими интерфейсами. Даже в Linux.

Установка сертификатов используя КриптоПРО в Linux

Описание процесса установки приведено на примере дистрибутива семейства Debian (x64).Названия файлов и директорий могут варьироваться от системы к системе.

При установке личных сертификатов не нужны права суперпользователя, и наоборот, при установке сертификатов УЦ(корневых и промежуточных) могут потребоваться такие права.

Подключите USB носитель с ключевыми контейнерами и проверьте результат команды:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 16188003
\\.\FLASH\ivanov
\\.\FLASH\petrov
\\.\FLASH\sidorov
\\.\FLASH\vasiliev
\\.\FLASH\smirnov
OK.
Total: SYS: 0,020 sec USR: 0,060 sec UTC: 0,180 sec

Можно сразу установить личные сертификатов из всех доступных контейнеров одной командой:/opt/cprocsp/bin/amd64/csptestf -absorb -certsПроизойдет установка сертификатов, находящихся во всех доступных в момент запуска команды контейнерах (съемных флэш-носителях, жесткого диска и т. д.) в хранилище uMy.

Пример установки отдельно взятого сертификата из контейнера

При необходимости скопируйте ключевой контейнер \\.\FLASH\.\sidorov на жесткий диск:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\\.\FLASH\sidorov' -contdest '\\.\HDIMAGE\sidor'CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38556259
CryptAcquireContext succeeded.HCRYPTPROV: 38770755
Total: SYS: 0,000 sec USR: 0,100 sec UTC: 14,920 sec
[ErrorCode: 0x00000000]

Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении.

Проверьте наличие нового контейнера \\.\HDIMAGE\sidor:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 34554467
\\.\FLASH\ivanov
\\.\FLASH\petrov
\\.\FLASH\sidorov
\\.\FLASH\vasiliev
\\.\FLASH\smirnov
\\.\HDIMAGE\sidor
OK.
Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,130 sec
[ErrorCode: 0x00000000]

Установите личный сертификат:

/opt/cprocsp/bin/amd64/certmgr -inst -cont '\.HDIMAGEsidor'Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, [email protected], C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, [email protected], C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : No
CA cert URL         : <mark>http://cert1.ucestp.ru/estp.crt</mark>
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]

Скачайте корневой сертификат по ссылке выше (из поля CA cert URL): http://cert1.ucestp.ru/estp.crt и перенесите его, например, в домашнюю папку:

cp ~/Загрузки/estp.crt ~/estp.crt

Установите корневой сертификат (возможно потребуются права суперпользователя):

/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ~/estp.crtCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, [email protected], C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : OGRN=1234567890123, INN=1234567890, STREET=Арбат, [email protected], C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Serial              : 0x50D7BC0E4A3EC9994454EB83013EE5F5
SHA1 Hash           : 0xd2144a3e098b6f2decb224257f48e2b7c6d85209
SubjKeyID           : 07b753cd561dee8e5e83407be4575ecc05bfec14
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 17/06/2016  13:15:21 UTC
Not valid after     : 17/06/2021  13:25:01 UTC
PrivateKey Link     : No
=============================================================================
[ErrorCode: 0x00000000]

Проверьте установку личного сертификата:

/opt/cprocsp/bin/amd64/certmgr -list -store uMyCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, [email protected], C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, [email protected], C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : Yes
Container           : HDIMAGE\\sidor.000\2B01
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://cert1.ucestp.ru/estp.crt
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]

Оцените статью
ЭЦП Эксперт
Добавить комментарий