|   |   | 
| 
 | Подписание файлов excel c помощью КриптоПро Office Signature | ☑ | ||
|---|---|---|---|---|
| 0
    
        dr3amer 23.08.19✎ 13:23 | 
        Добрый день!
 Надо подписывать созданные файлы excel с помощью утилиты КриптоПро Office Signature. Подпись должна быть в самом файле. Сталкивался кто-нибудь с таким? Есть пример кода? Пробовал так: МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider","",80); ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(); Сертификаты = ХранилищеСертификатов.ПолучитьВсе(); МенеджерКриптографии.Подписать(ИмяФайла,Сертификаты[0]); Всё работает, но ничего не подписывается. | |||
| 1
    
        VladZ 23.08.19✎ 13:24 | 
        (0) "Всё работает, но ничего не подписывается." - что это значит? Можно подробнее описать, что происходит? И какой результат хотите увидеть.     | |||
| 2
    
        Chum 23.08.19✎ 13:37 | 
        (1) это значит, что никогда такого не было и вот опять.
 Система не ругается, но и ничего не происходит. | |||
| 3
    
        dr3amer 23.08.19✎ 14:04 | 
        Всё верно.
 Ругани от системы нет. Но и файлы сохранились без подписи. | |||
| 4
    
        sitex naïve 23.08.19✎ 14:08 | 
        (0) Что то не пойму так вы с помощью утилиты проверяете ?
 и да я подписваю так и все норм Подписать(<ИсходныеДанные>, <ВыходныеДанные>, <Сертификат>) | |||
| 5
    
        sitex naïve 23.08.19✎ 14:10 | 
        +(4) ПарольДоступаКЗакрытомуКлючу есть ? Установлен сам сертификат в Хранилище ?     | |||
| 6
    
        Di-dog 23.08.19✎ 14:17 | 
        Ничего не происходит, потому что 1С генерирует подпись отдельными двоичными данными и возвращает их в функции МенеджерКриптографии.Подписать(ИмяФайла,Сертификаты[0]);
 А Вы, судя по коду, вызываете эту функцию как процедуру... Либо как в (4) во второй параметр. :) | |||
| 7
    
        dr3amer 23.08.19✎ 16:27 | 
        Вызвал её как функцию.
 Возвращает двоичные данные. Это отдельно подпись или файл с подписью? Попробовал сохранить в файл xlsx, сохранилось, но не открывается. | |||
| 8
    
        dr3amer 23.08.19✎ 16:29 | 
        (6) Вызвал её как функцию. 
 Возвращает двоичные данные. Это отдельно подпись или файл с подписью? Попробовал сохранить в файл xlsx, сохранилось, но не открывается. | |||
| 9
    
        dr3amer 23.08.19✎ 16:31 | 
        (5) У меня на руках есть установленный КриптоПро Office Signature и сертификат.
 Сертификат получаю из хранилища сертификатов, там всё норм. Откуда взять закрытый ключ и зачем он мне при подписи? | |||
| 10
    
        dr3amer 23.08.19✎ 16:34 | 
        (4) Можете прислать пример кода который у вас нормально всё подписывает?
 У меня есть сертификат, есть файл, есть утилита КриптоПро Office Signature которая встраивается в Microsoft Office. На выходе я хочу получить файл excel с электронной подписью внутри. | |||
| 11
    
        Di-dog 23.08.19✎ 18:17 | 
        (8) Это двоичные данные подписи, сохраняются в формат p7s (PKCS#7)     | |||
| 12
    
        Гость из Мариуполя гуру 23.08.19✎ 19:20 | 
        (9) Та действительно, и зачем тебе какой-то ключ (закрытый) при подписывании. 
 Сертификат есть и ладно.. :))) Вот смотри - у меня есть бутылка коньяка. И есть сертификат на эту бутылку. Сертификат - бумажка с печатью, удостоверяющая, что коньяк подлинный, безумно коллекционный и дорогой, особого года издания. Тебе, раз тебе достаточно сертификата, чтобы набухаться, нужно понюхать бумажку. Но, лично мне, как хочешь, мне чтобы ощутить вкус и послевкусие, одного только бумажного сертификата маловато будет. :))) аналогично и с ЭЦП. Сертификат ключа - это по сути ничто, всего лишь некая опция, аналогичная сертификату к бутылке коллекционного коньяка.. и ничего более.. есть он в хранилище сертификатов ну и есть. У меня вон тоже сертификат на коньяк в хранилище есть. Коньяка вот только увы.. уже нет. Понимаешь теперь, почему твоя фраза "Откуда взять закрытый ключ и ЗАЧЕМ ОН МНЕ ПРИ ПОДПИСИ?" вызывает ржач. | |||
| 13
    
        dr3amer 24.08.19✎ 23:25 | 
        (12) Ключ я достану.
 Но неужто никто такого никогда не делал и не может просто прислать пример кода как это сделать? | |||
| 14
    
        dr3amer 24.08.19✎ 23:27 | 
        (12) При подписи в документе excel через КриптоПро закрытый ключ не запрашивается.     | |||
| 15
    
        Сияющий в темноте 25.08.19✎ 00:18 | 
        (14)он запрашивается один раз,потом криптопро в течение определенного времени его помнит.     | |||
| 16
    
        Сияющий в темноте 25.08.19✎ 00:21 | 
        вообще,насколько я помню,можно в файл подписи добавить исходный файл,так как файл подписи-э о контейнер,а вот чтобы в сам ексель дописать подпись-это поддержка со стороны ексель должна быть,иначе,любое изменение файла приводит к нарушению подписи,а ексель,насколько я помню,при открытии пишет дату открытия в свой файл,так что с проверкой подписи будут танцы с бубном.     | |||
| 17
    
        Гость из Мариуполя гуру 25.08.19✎ 02:40 | 
        (13) дык какой тебе кусок кода, если у тебя все в кучу в голове смешалось.
 вот смотри: КриптоПро Office Signature - это НЕ криптопровайдер, это всего лишь утилита (надстройка/плагин) к MS OFFICE. и, в свою очередь, этот плагин все равно для работы требует криптопровайдер КриптоПро CSP. то, что ты кодишь в (0) - это ты просто пытаешься подписать файл с помощью Крипто Про CSP, и никаким применением КриптоПро Office Signature тут и не пахнет, что есть он на компьютере, что нет, ты его не юзаешь в коде. Т.е. у тебя в итоге получиться просто обычный файл, подписанный тривиально с использованием обычного КриптоПро CSP. Для того, чтобы пользовать именно функционал плагина Office Signature (а не тривиальное подписывание произвольного файла с помощью КриптоПро CSP), ты должен к нему(плагину) ... ммм... как бы сказать, "дотянуться". А поскольку это всего лишь надстройка(плагин) в MS Office, то дотянуться до нее(надстройки) - хм.. через VBA. типа так: https://docs.microsoft.com/ru-ru/office/vba/_repo.en-us/api/office.signatureset.addnonvisiblesignature если юзаешь NET, можно еще посмотреть здесь: https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.core.signatureset.addnonvisiblesignature?view=office-pia PS: и да, идентификатор плагина КриптоПро Office Signature (то, что обозначается- varSigProviderID): {F5AC7D23-DA04-45F5-ABCB-38CE7A982553}. | |||
| 18
    
        dr3amer 26.08.19✎ 15:24 | 
        (17) Спасибо большое!
 Это то что нужно. Взял ссылку: https://docs.microsoft.com/ru-ru/office/vba/_repo.en-us/api/office.signatureset.addnonvisiblesignature При вызове метода AddNonVisibleSignature открывается окошко подписи документа. Пытаюсь найти способ не открывать окошко, а сразу передать в него свои данные подписи. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |