Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Работа с CAPICOM - выбор сертификата и подпись.

v7: Работа с CAPICOM - выбор сертификата и подпись.
Я
   brenli
 
11.02.20 - 20:51
Всем привет.
Вторые сутки ломаю мозг по использованию библиотеки CAPICOM.
Необходимо реализовать выбор сертификата из списка , и возможность подписать ЭЦП этого сертификата.

Пытаюсь сделать следующее:
OSertificats = СоздатьОбъект("CAPICOM.Certificates");
OSertificats.Select(,,1); //true

bMultiSelect [in, optional]

Boolean value that indicates whether the user can select more than one certificate. True indicates multiple certificates can be selected by using the CTRL or SHIFT key. The default value is false.

При true  выпадает пустой список.
При false - выдает : Сертификаты недоступны, сертификаты не отвечают критериям.

Пробовал использовать

CURRENT_USER_STORE = 2;
MY_STORE = "My";  
STORE_OPEN_READ_ONLY = 0;


Store = СоздатьОбъект("CAPICOM.Store");
Store.Open(CURRENT_USER_STORE, MY_STORE, STORE_OPEN_READ_ONLY);

Вообще ничего не происходит.
Подскажите у кого есть опыт по реализации таких задач.
Спасибо
 
 
   Garykom
 
1 - 11.02.20 - 21:27
(0) https://www.cryptopro.ru/products/other/cryptcp
Приложение командной строки банальное, если не хочется чтобы окна мелькали то можно скрыть
   MWWRuza
 
2 - 11.02.20 - 21:33
(0)Ну, все правильно... А дальше:

Certs = Store.Certificates;
Для Сч = 1 По Certs.Count Цикл
ТекСерт  = Certs.Item(Сч);

Далее используйте: ТекСерт.Свойство,КотороеВамНужно...

КонецЦикла;
   Garykom
 
3 - 11.02.20 - 21:47
https://ru.wikipedia.org/wiki/Component_Object_Model официальной устаревшая технология, лучше не использовать чтобы в ближайшем будущем не поиметь кучу трудностей, которые придется снова героически преодолевать.
   Garykom
 
4 - 11.02.20 - 21:50
Вот уже IE (замена на Edge) с Microsoft Edge (на движок Chromium переходит где COM нету) того и дальше будет только хуже.
Так что забывайте уже о COM/OLE/ActiveX и используете другие методы, да старый древний запуск консольной утилиты/проги с параметрами по прежнему в строю.
И будущее за веб-сервисами.
   MWWRuza
 
5 - 11.02.20 - 22:01
Ну, консольное приложение из (1), платное... Лецензируется отдельно от КриптоПро, и работает с ним в паре. Интересно, сколько стоит?
   Garykom
 
6 - 11.02.20 - 22:10
(5) бесплатно, там устаревшая инфа в новых криптопро оно из коробки
   Garykom
 
7 - 11.02.20 - 22:14
(6)+ Точнее не бесплатно а в комплекте с платным КриптоПро оно.
Никакой лицензии отдельной не запрашивает, может конечно я и ошибаюсь но фактически так.
   Midrash
 
8 - 11.02.20 - 22:16
(3) да, COM  становится достоянием истории
   NorthWind
 
9 - 11.02.20 - 22:16
(0) советую сразу перейти на CADESCOM из комплекта КриптоПро. Разницы по вызовам с CAPICOM практически нет, соместимость процентов 95. Но при этом CADESCOM поддерживается, в том числе и для новых виндов, а CAPICOM давно с поддержки снят и не понятно, с какого очередного релиза Win10 он крякнет. Может с любого свежего.
   brenli
 
10 - 11.02.20 - 22:19
(9) CADESCOM  отдельно покупать надо или в коробке со штатным крипто про идет?
Где то видел CADESCOM  - 90 дней триал, а дальше лицензию надо.
   NorthWind
 
11 - 11.02.20 - 22:21
CADESCOM идет в составе браузерного плагина для CryptoPro. Скачивается все это дело с сайта CryptoPro бесплатно, само подцепляется к уже установленному CryptoPro автоматически и живет.

' -----------------------------------------------------------------------------------------
' Поиск сертификата в хранилище
'
Function GetSigningCert
    
    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, CStr (CertSHA1Hash))

    if Certs.Count > 0 Then
        Set GetSigningCert = Certs.Item (1)
    else
        Set GetSigningCert = Nothing
    end if
    
    Store = Unassgned

End Function
   NorthWind
 
12 - 11.02.20 - 22:21
эта функа ищет сертификат по его SHA1-хэшу и возвращает. Функа на VBS. Другого нет - скрипт писал именно на нем
   NorthWind
 
13 - 11.02.20 - 22:23
для капиком, собственно, все то же самое и тоже работает - изначально было на нем. Но я в конце концов с него ушел.
   Garykom
 
14 - 11.02.20 - 22:23
Кстати прикол хотите?

Если разрабатывается приложение которое с шифрованием на продажу то https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=9333 опс нужна "Лицензия ФСБ на криптографию и шифрование"
   NorthWind
 
15 - 11.02.20 - 22:29
Вот, если надо, формирование подписи отдельным файликом

' -----------------------------------------------------------------------------------------
' Подписание файла. Подпись кладется по тому же пути, где находится исходный файл, с
' расширением bin
'
Sub Sign (FileName, Cert, Prefix)
    
    SignFileName = GetBinFileName (FileName, Prefix)

    Set FileIn = CreateObject ("ADODB.Stream")
    FileIn.Type = 1
    FileIn.Mode = 3
    FileIn.Open ()
    FileIn.LoadFromFile (FileName)
    BinaryIn = FileIn.Read (-1)
    
    Set Signer = CreateObject ("CADESCOM.CpSigner")
    Signer.Certificate = Cert
    Signer.Options = 2
    Set SignedData = CreateObject ("CADESCOM.CadesSignedData")
    SignedData.Content = BinaryIn

    Base64Out = SignedData.SignCades (Signer, CADES_BES, True, CAPICOM_ENCODE_BASE64)

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

    SignedData = Unassigned
    Signer = Unassigned
    FileIn = Unassigned
    FileOut = Unassigned    

End Sub
   NorthWind
 
16 - 11.02.20 - 22:32
(10) нет такого. Если у вас крипто-про куплен, то браузер плагин ставится без каких-либо дополнительных вопросов и в нем этот кадеском есть и работает. Уже он у меня работает не один год так, а не 90 дней... Там единственное что - для некоторых более сложных подписей чем CADES_BES, нужна служба штампов времени. Вот она да, приобретается отдельно. Но это еще вопрос, нужна она вам или нет.
   brenli
 
17 - 11.02.20 - 22:39
(16) Вообще вся эта тема для работы с системой маркировки. Там вроде служба времени не нужна
   brenli
 
18 - 11.02.20 - 22:39
спасибо господа за пищу для ума.
   NorthWind
 
19 - 11.02.20 - 22:49
(4) браузеры браузерами, а на десктопе ком никуда не денется, пока жив сам по себе десктоп. Его и в х64 MS притащили, а значит, пока девать никуда не собираются.
   MWWRuza
 
20 - 11.02.20 - 22:52
Это все хорошо... Вариантов несколько, кто как хочет, тот так и заморочится... Но, вот как-бы из v7 научиться с аппаратными криптопровайдерами работать... Типа, ЕГАИСовского Рутокен-ЭЦП 2.0... Пока, не нашел способов :-(
   NorthWind
 
21 - 11.02.20 - 22:56
(20) читаю и не могу понять... А чем он принципиально отличается от любой другой смарт-карты, етокена того же?
   MWWRuza
 
22 - 11.02.20 - 23:00
Принципиально - тем, что с ним не работает тот-же КриптоПро. У него на борту свой, встроенный криптопровайдер. Все операции по подписанию и шифрованию происходят "внутри", с неизвлекаемыми ключами...
   MWWRuza
 
23 - 11.02.20 - 23:03
У обычных токенов, контейнер с ключами и сертификатами доступен "извне", их видит КриптоПро или VipNet, и с ними работает программно. Здесь свой "типаКриптоПро", внутри...
   MWWRuza
 
24 - 11.02.20 - 23:07
Кроме того, сертификат вместе с ключами с обычного токена, можно скопировать например на другой токен, в папку на диске, в реестр наконец... С Рутокен ЭЦП 2.0 или устаревшей JaCarta, такой фокус не проходит, сертификат вытащить можно, но без закрытых ключей...
   Garykom
 
25 - 11.02.20 - 23:10
   Garykom
 
26 - 11.02.20 - 23:10
(24) При перегенерации все прекрасно вытаскивается наружу ))
   Garykom
 
27 - 11.02.20 - 23:13
(25)+ pkcs11-tool — консольная утилита для управления токенами и смарт-картами и их содержимым через интерфейс PKCS#11.
https://github.com/OpenSC/OpenSC
   vde69
 
28 - 11.02.20 - 23:52
CAPICOM снята с поддержки лет уже как 10.... Зачем Вам то, что так сильно устарело?

полно опен проектов, тот-же гнус например очень даже хорошо работает с сертификатами (как эцп так и шифрование)...
   MWWRuza
 
29 - 12.02.20 - 00:38
Хм... Интересно... Просто заменой объекта:
Об = СоздатьОбъект("CAPICOM.Store");
на
Об = СоздатьОбъект("CADESCOM.Store");
получение списка сертификатов работает :-)
Дальше, пока не пробовал, надо будет на досуге заняться.
   NorthWind
 
30 - 12.02.20 - 08:19
(22) почитал. Насколько я понял, для работы с такими токенами у крипто-про раньше было специальное решение CryptoPro Рутокен CSP, но сейчас это уже неактуально, потому что пятерка работает с ними.
Посмотрите вот здесь https://www.cryptopro.ru/products/cryptopro-csp: "Носители с неизвлекаемыми ключами Многие пользователи хотят иметь возможность работать с неизвлекаемыми ключами, но при этом не обновлять токены до уровня ФКН. Специально для них в провайдер добавлена поддержка популярных ключевых носителей Рутокен ЭЦП 2.0, JaCarta-2 ГОСТ и InfoCrypt VPN-Key-TLS."
 
 
   NorthWind
 
31 - 12.02.20 - 08:20
   Сияющий в темноте
 
32 - 12.02.20 - 08:45
К рутокену идет свой доайвер,который прекрасно с ним работает.
плюс в том,что криптопро покупать не надо.
   NorthWind
 
33 - 12.02.20 - 09:33
(32) у человека вопрос, через какое апи можно дергать механизм подписи этим ключом, например, из 1с 7.7. Желательно понятно и с примерами. Криптопро в данном случае хорош тем, что там есть сеть разработчиков, примеры и как работать с cadescom/capicom, многие худо-бедно знают.
   MWWRuza
 
34 - 12.02.20 - 10:44
+(33)Да, именно так. Там, где он должен работать через свой драйвер - он работает, вообще без проблем, есть необходимый софт, плагины.
А вот как к нему из 7.7 достучаться, для меня пока загадка. Готовых примеров не нашел, а самому с предоставленным на сайте SDK разбираться - сложно, долго, и и самое главное, опыта не хватает... Да,
и по большому счету - и если только ради интереса, экономически не выгодно, кому надо - могут себе позволить плюсом к ЕГАИСовской ЭЦП еще и КриптоПрошную, вместе с самим КриптоПро, не космических денег они стоят...
Просто, было-бы удобно, один токен-одна ЭЦП на все, что связано с торговыми "извратами".
   big
 
35 - 12.02.20 - 10:56
(34) Если я правильно понял, то с КриптоПро идет бесплатная консольная утилита для подписи - csptest.exe и ею вполне таки можно пользоваться. Сам правда ещё не пробовал, просто читал мануал.

Или использование консольных утилит не подходит?
   NorthWind
 
36 - 12.02.20 - 11:37
(34) -> (30), криптопро уже умеет через свое апи работать с такими подписями. Правда, нужна версия 5, которая пока еще не у всех куплена, чаще всего у людей четверка.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.