Криптопро командная строка. КриптоПРО: Bat файл создания ЭЦП
П
утешествуя по интернету, пользователи иногда сталкиваются с пугающим предупреждением , внезапно выдаваемым браузером при переходе на сайт. Что это означает и что в таких случаях делать? Когда вы подключаетесь к какому-нибудь сайту, использующему протокол SSL
, удалённый сервер, на котором лежит этот сайт, предоставляет браузеру специальный цифровой документ, подтверждающий подлинность сайта. Это и есть сертификат безопасности.
Содержащаяся в нём информация представлена сведениями о сайте, подтверждённые независимой доверенной организацией. Однако выпускать сертификаты сайтов могут не только доверенные организации, в принципе, это может сделать кто угодно. Если выпустившая сертификат организация не занесена в список доверенных, при переходе на сайт появляется предупреждение, о котором говорилось выше. По здравом размышлении от посещения такого сайта желательно отказаться, но есть два исключения.

Либо вы абсолютно уверены в его подлинности и безопасности, либо это сайт одной из крупных интернет-компаний, например, Google, Яндекс и т.п. В последнем случае причина появления предупреждения кроется уже не в сайте, а в вашем компьютере. Иногда причиной ошибки становится неверно настроенные дата и время в операционной системе. Проверьте настройки даты/времени и исправьте их, если они были неверны. Если таким способом устранить ошибку не удалось, сертификат безопасности придётся установить вручную.
Распространяются сертификаты как на платной, так и на бесплатной основе. Скачать их можно на специализированных ресурсах, таких как Symantec, Geotrust, Rapidssl и им подобным. Для избавления от предупреждения на популярных интернет-сервисах, в том числе Google и Яндекс, должен подойти сертификат Equifax Secure Certificate Authority , скачать который можно бесплатно с сайта Geotrust .
Зайдите на страничку и загрузите упомянутый сертификат к себе на компьютер, для чего кликните по ссылке правой кнопкой мыши и в меню выберите «Сохранить ссылку как» . Скачанный файл будет иметь расширение PEM . Теперь его нужно установить в систему.

Для этого нажмите Win + R и выполните команду certmgr.msc . Запустится утилита управления сертификатами . В правой панели окна найдите пункт

Кликните по нему правой кнопкой мыши и выберите «Все задачи» -> «Импорт» и импортируйте сертификат с помощью мастера. Ту же самую процедуру выполняем для пункта «Сторонние корневые центре сертификации» .





В главе Часто задаваемые вопросы вы найдете информацию по следующим темам:
При проверке подписи файла на рабочем столе под Windows XP с КриптоПро CSP 2.0 (2089) появляется ошибка "Произошла ошибка при загрузке подписанных данных. Указан неправильный алгоритм. (0x80090008)". При подписи файла в окне выбора сертификатов подписи все ГОСТовые сертификаты красные (ошибка "Произошла ошибка при построении пути сертификации"), а при их просмотре выдается "Целостность этого сертификата не гарантирована. Возможно, он поврежден или изменен".
Данная ошибка проявляется в КриптоПро CSP 2.0 (в
сборке 2089 включительно) при работе на Windows XP и связана с
поздней загрузкой CSP. Для ее решения сохраните следующие строки в
файл с расширением.reg и запустите его на исполнение или измените
настройки в реестре вручную:
Код:
REGEDIT4
"Group"="COM Infrastructure"
"Group"="COM Infrastructure"
Программа «КриптоАРМ» сообщает, что
"произошла ошибка при получении последней версии списка отзыва
сертификатов (СОС) из Удостоверяющего центра"
Для использования возможности получения СОС из УЦ необходимо
соблюдение следующих условий:
- В проверяемом сертификате должно присутствовать расширение «Точка распространения СОС / CRL Distribution Point (CDP)».
При этом если значений (URL’ов) в расширении несколько, то КриптоАРМ попытается скачать СОС по всем адресам до первого успешного скачивания. Правда, поддерживаются не все, но часто используемые протоколы, такие как "ftp", "http" и "file"
- По одной (оптимально, если по первой) из точек распространения СОС можно скачать СОС браузером, например, IE. При этом не вводя никакой дополнительной информации (имени пользователя, пароля, перехода по ссылкам)!
Протестировать можно следующим образом:
- закрыть все окна IE (т.к. они могут хранить параметры доступа к
серверу);
- запустить IE и вставить в поле адреса URL из точки
распространения СОС (например, для сертификата тестового КриптоПро
УЦ
(http://www.cryptopro.ru/CertEnroll/Test%20Center%20CRYPTO-PRO.crl);
- нажать Enter, после чего IE должен сразу предложить сохранить
скачанный файл СОС;
- сохранить СОС в файл и открыть его проводником Windows (должна
без ошибок открыться форма просмотра СОС).
- Должна быть зарегистрирована библиотека CPCRLUpdate.dll, которая находится в каталоге установки КриптоАРМ. При правильной установке КриптоАРМ она регистрируется автоматически, но вы можете ее зарегистрировать дополнительно, например:
regsvr32 "D:\Program
Files\Digt\Trusted\Desktop\cpcrlupdate.dll"
Последнюю версию библиотеки можно получить на сервере КриптоПро по
адресу:
ftp://cryptopro.ru/pub/CRLUpdate/cpcrlupdate.zip
Возможные ошибки обновления СОС:
1) 0x800401E4 (Синтаксическая ошибка / Invalid syntax) - может
возникать в случае использования библиотеки CPCRLUpdate.dll версии
1.0.0.1, попробуйте ее обновить.
1) 0x800C0005 - ошибка скачивания СОС по сети, например, файл не
найден или нет доступа.
2) 0x80092004 (Cannot find object or property.):
2.1) не найден издатель проверяемого сертификата;
2.2) файл СОС не соответствует проверяемому сертификату.
3) 0x80092007 (The specified certificate is self signed.) -
проверяемый сертификат - самоподписанный. Нет смысла проверять
самоподписанный сертификат по СОС, т.к. СОС подписывается тем же
самым самоподписанным сертификатом.
КриптоАРМ не возвращает код ошибки. Чтобы его получить, надо выполнить следующие действия:
- Создать папку, в нее сохранить проверяемый сертификат в Base64 формате с именем cert.cer;
- Сохранить следующий код скрипта в файл с расширением.vbs:
Код:
Option Explicit
Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("cert.cer", 1, False, 0)
Dim oCertBase64
oCertBase64 = file.ReadAll()
file.Close()
oCertBase64 = Right(oCertBase64,
Len(oCertBase64) - 27)
oCertBase64 = Left(oCertBase64, Len(oCertBase64) - 27)
"MsgBox CStr(oCertBase64)
Dim oCrlUpdate
Set oCrlUpdate = CreateObject("CPCRLUPDATE.CRLUpdate")
oCrlUpdate.StoreLocation = 0
oCrlUpdate.UpdateInterval = 10
Dim bResult
bResult = oCrlUpdate.Update_BASE64(oCertBase64)
MsgBox bResult
- Запустить файл скрипта из п.2.
- В результате должно появиться сообщение "True" в случае успешного обновления СОС, либо сообщение с кодом ошибки.
Примечание: Если в проверяемом сертификате отсутствует CDP, то метод проверки возвращает "True".
Вопросы сотрудничества
Программа "КриптоАРМ" - для
использования учебными заведениями. Что требуется указать в
гарантийном письме, для того чтобы использовать
программу?
Если вы предполагаете использовать программу "КриптоАРМ Старт", то
она действительно бесплатна и вы можете использовать ее без
предоставления каких-либо гарантийных писем. Речь по гарантийному
письму может идти тогда, когда вы решите использовать версию
"КриптоАРМ Стандарт" для работы с сертифицированными
криптопровайдерами. (Версия "Старт" поддерживает работу только со
стандартными Windows криптопровайдерами).
Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о Bat файле, который можно будет использовать для автоматизации подписи электронных документов.
Для того что бы автоматизировать процесс подписывания электронных документов нам понадобится:
1) Крипто-ПРО CSP;
2) USB Ключ (например рутокен), вставленный в USB порт;
3) Блокнот (Notepad.exe);
4) Установленные сертификаты для Вашего ключа;
Камнем преткновения во всей этой истории является файл csptest.exe который находится в директории КриптоПро (по умолчанию C:\Program Files\Crypto Pro\CSP\csptest.exe ).
Откроем командную строку и выполним команду:
Cd C:\Program Files\Crypto Pro\CSP\ и csptest
Мы увидим все возможные параметры данного exe файла.
select from: -help print this help -noerrorwait do not wait for any key on error -notime do not show time elapsed -pause Wait for keyboard input after completion so that you may check memory and other resources usage -reboot Call DestroyCSProvider() of last used CSP at exit Services (cryptsrv*, HSM, etc) not affected -randinitДля того, что бы увидеть параметры той или иной глобальной опции, достаточно вызвать данный файл с этой опцией, например
Csptest -sfsign
Таким образом, чтобы подписать файл через cmd средствами csptest.exe нужно вызвать команду:
Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович
где:
-my
— Указывает владельца ключа;
-in
— Указывает какой файл нужно подписывать. Если файл находится не в папке с csptest то нужно указывать полный путь.;
-out
— Указывает имя файла подписи;
Проверить подпись можно на сайте Госулсуг по данной ссылке .
Скорей всего. Если сейчас загрузить данный файл на сайте госуслуги, то появится ошибка. Вызвано это тем, что необходима информация об удостоверяющем центре. Так же не будет лишней дата и время подписи документов. Для этого к нашей команде нужно добавить два параметра:
Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add
Если же нам нужна подпись в осоединенном формате, то добавим еще один параметр:
Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached
Примечание:
Если подпись документа выполняется с ошибкой
Unable to open file
An error occurred in running the program.
.\signtsf.c:321:Cannot open input file.
Error number 0x2 (2).
Не удается найти указанный файл.
при вызове, как в последнем примере, и Вы уверены в правильности путей в параметре -in и -out, попробуйте создать подпись по первому примеру, а после выполнить команду с полным набором параметров!!!
Основную команду для подписи мы получили. Теперь немного упростим процедуру. Сделаем bat файл, при запуске которого будет подписывать файл Secret.txt, находящийся в тойже папке что и bat файл. Откроем блокнот и запишем слудующий код:
Chcp 1251 set CurPath=%cd% cd C:\Program Files\Crypto Pro\CSP call csptest -sfsign -sign -in %CurPath%\Secret.txt -out %CurPath%\Secret.txt.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached cd %CurPath%
Нажимаем «Файл» -> «Сохранить как» -> ЗадаемИмя с.bat -> «Сохранить»
Собсвенно и все. Для справки:
chcp 1251
— Задает кодировку для CMD. Необходимо для валидной обработки русских букв в коде;
set CurPath=%cd%
— Сохраняет путь текущей директории CMD в переменную CurPath;
cd
— Задает текущий путь CMD;
call
— Запускает программу;







