Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline vovick  
#1 Оставлено : 12 июля 2016 г. 17:17:12(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Добрый день.
Есть простейший VBS-скрипт, предназначенный для подписи файлов.

Код:

const CURRENT_USER_STORE = 2            
const MY_STORE = "My"			
const STORE_OPEN_READ_ONLY = 0	
const CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0

Set Store = CreateObject ("CAPICOM.Store")
Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY
Set Certs = Store.Certificates.Find (CAPICOM_CERTIFICATE_FIND_SHA1_HASH, "352ce56fb616c6ccda834da631b3cad5fdd69fd3")
if Certs.Count > 0 Then

	FileName = "ON_SFAKT_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"	

	Set Cert = Certs.Item (1)
	Set FileIn = CreateObject ("ADODB.Stream")
	FileIn.Type = 1
	FileIn.Mode = 3
	FileIn.Open ()
	FileIn.LoadFromFile (FileName + ".xml")
	BinaryIn = FileIn.Read (-1)
	
	Set Signer = CreateObject ("CAPICOM.Signer")
	Signer.Certificate = Cert
	Signer.Options = 2
	Set SignedData = CreateObject ("CAPICOM.SignedData")
	SignedData.Content = BinaryIn
	Base64Out = SignedData.Sign (Signer, True, 0)	

	Set FileOut = CreateObject ("ADODB.Stream")
	FileOut.Type = 2
	FileOut.Charset = "US-ASCII"
	FileOut.Mode = 3
	FileOut.Open ()
	FileOut.WriteText (Base64Out)
	FileOut.SaveToFile FileName + ".bin", 2
	FileOut.Close ()
	FileIn.Close ()

	SignedData = Unassgned
	Signer = Unassigned
	FileIn = Unassigned
	FileOut = Unassigned
	
End if

Store = Unassigned


Он правильно работает на старых ОС, но не работает на Windows 10 х64 Как я понимаю, в ней CAPICOM уже в принципе не поддерживается.
На какие средства можно перейти, чтобы корректно работало на современных ОС?
Возможно, на CADESCOM? Каким образом это корректно сделать?
Offline Андрей Писарев  
#2 Оставлено : 12 июля 2016 г. 18:08:27(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Здравствуйте.

Цитата:

в ней CAPICOM уже в принципе не поддерживается.


Как и для Windows 7 и выше, но его можно установить и использовать.

Можно использовать КриптоПро ЭЦП Browser plug-in

На демо-странице есть примеры работы, в т.ч. и для подписания файла.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 12 июля 2016 г. 18:12:19(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах

Руководство разработчика > КриптоПро ЭЦП SDK
Техническую поддержку оказываем тут
Наша база знаний
Offline vovick  
#4 Оставлено : 12 июля 2016 г. 18:53:21(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Спасибо, понял. Моя ошибка была в том что я не зарегистрировал CAPICOM в десятке, после регистрации все получилось.
Offline vovick  
#5 Оставлено : 12 июля 2016 г. 19:40:24(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Увы, не так-то все легко! Скачал, поместил в SysWOW64 и зарегистрировал как положено под администратором. Но - при попытке выполнить скрипт получаю ошибку

Невозможно создание объекта контейнером AciveX: 'CAPICOM.Signer'
Код: 800A01AD

собственно, как и ранее, сбой происходит на попытке создания этого объекта. CAPICOM.Store нормально создается, нормально перечисляет и ищет сертификаты, находит то что надо.
Но вот Signer не создается.
Гугление по этой проблеме не дает никаких внятных результатов.
Offline vovick  
#6 Оставлено : 12 июля 2016 г. 19:56:53(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Посмотрел примеры, попытался переехать на CADESCOM:

Код:

Set Store = CreateObject ("CADESCOM.Store")
Store.Open CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY
Set Certs = Store.Certificates.Find (CAPICOM_CERTIFICATE_FIND_SHA1_HASH, "352ce56fb616c6ccda834da631b3cad5fdd69fd3")
if Certs.Count > 0 Then

	FileName = "ON_SFAKT_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"	

	Set Cert = Certs.Item (1)
	Set FileIn = CreateObject ("ADODB.Stream")
	FileIn.Type = 1
	FileIn.Mode = 3
	FileIn.Open ()
	FileIn.LoadFromFile (FileName + ".xml")
	BinaryIn = FileIn.Read (-1)
	
	Set Signer = CreateObject ("CADESCOM.CpSigner")
	Signer.Certificate = Cert
	Signer.TSAAddress = "http://www.cryptopro.ru/tsp/tsp.srf"
	Signer.Options = 2
	Set SignedData = CreateObject ("CADESCOM.CadesSignedData")
	SignedData.Content = BinaryIn
	Base64Out = SignedData.Sign (Signer, True, 0)
	Set FileOut = CreateObject ("ADODB.Stream")
	FileOut.Type = 2
	FileOut.Charset = "US-ASCII"
	FileOut.Mode = 3
	FileOut.Open ()
	FileOut.WriteText (Base64Out)
	FileOut.SaveToFile FileName + ".bin.1", 2
	FileOut.Close ()
	FileIn.Close ()
	
End if
Store = Unassigned


Столкнулся с новой проблемой: подписание запускается, но в процессе него происходит ошибка
URL-адрес не использует поддерживаемый протокол
Код: 80072EE6

я так понимаю, проблема связана с получением штампа времени. Между тем у машины выход в сеть есть и SRF-файл скачивается, если просто задать строку в браузере.
Что может быть не так?

Offline Андрей Писарев  
#7 Оставлено : 12 июля 2016 г. 22:04:49(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: vovick Перейти к цитате
Увы, не так-то все легко! Скачал, поместил в SysWOW64 и зарегистрировал как положено под администратором. Но - при попытке выполнить скрипт получаю ошибку

Невозможно создание объекта контейнером AciveX: 'CAPICOM.Signer'
Код: 800A01AD

собственно, как и ранее, сбой происходит на попытке создания этого объекта. CAPICOM.Store нормально создается, нормально перечисляет и ищет сертификаты, находит то что надо.
Но вот Signer не создается.
Гугление по этой проблеме не дает никаких внятных результатов.



Запускаете vbs из 64x процесса (explorer.exe)?

И wscript.exe запускается из c:\windows\system32\ (это можно проверить из диспетчера задач, не закрывая окно с ошибкой или
мониторингом процессов)?


Сделайте так:
test.vbs - файл с кодом.
run.cmd - для запуска файла в 32-битном wscript.exe

в run.cmd пропишите так:
c:\windows\sysWow64\wscript.exe "полный путь в файлу test.vbs"

и всё заработает.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
vovick оставлено 12.07.2016(UTC)
Offline vovick  
#8 Оставлено : 12 июля 2016 г. 22:49:11(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Спасибо, помогло. Век живи - век учись, не подумал что есть 64-битный интерпретатор wscript отдельно от 32-битного, хотя, конечно, нужно было такое предположить.
А все-таки, в порядке обучения - куда посмотреть, чтобы довести до ума работу с CADESCOM? Все-таки будущее, как я понимаю, за ней...
Offline vovick  
#9 Оставлено : 27 октября 2018 г. 9:50:54(UTC)
vovick

Статус: Участник

Группы: Участники
Зарегистрирован: 12.07.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Липецк

Сказал(а) «Спасибо»: 8 раз
Подниму ветку. Время идет, CAPICOM давно скорее мертв чем жив, не говоря уже об отсутствии версии х64. Все-таки, чем современным пользоваться в скриптах для подписания документов? Наставьте на путь истинный. Если можно, с примером. Интересует главным образом подписание файлов для электронного документооборота (ЭДО). На капикоме все работает, но уже сейчас процесс его скачивания и установки на новые системы вызывает некоторую озабоченность.

Отредактировано пользователем 27 октября 2018 г. 9:54:16(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#10 Оставлено : 27 октября 2018 г. 11:41:00(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: vovick Перейти к цитате
Подниму ветку. Время идет, CAPICOM давно скорее мертв чем жив, не говоря уже об отсутствии версии х64. Все-таки, чем современным пользоваться в скриптах для подписания документов? Наставьте на путь истинный. Если можно, с примером. Интересует главным образом подписание файлов для электронного документооборота (ЭДО). На капикоме все работает, но уже сейчас процесс его скачивания и установки на новые системы вызывает некоторую озабоченность.


Здравствуйте.

Ответ был дан в начале.
Ничего не изменилось.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.