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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline ostoha  
#1 Оставлено : 4 октября 2013 г. 10:50:40(UTC)
ostoha

Статус: Новичок

Группы: Участники
Зарегистрирован: 04.10.2013(UTC)
Сообщений: 5

Доброго всем дня: Столкнулся с проблемой подписания xml файлов в 1С 8.1 прошу разъяснения:

ИмяФайла - xml файл
ИмяВыхФайла - Имя нового файла


Код:

Функция ПодписатьФайл(ИмяФайла,ИмяВыхФайла)
    
    обХранСерт = Новый COMОбъект("CAPICOM.Store");
    обХранСерт.Open(2);
    
    мсСерт = обХранСерт.Certificates;
    Серт = Неопределено;
    Для каждого текСерт Из мсСерт Цикл
        Если текСерт.ValidToDate > ТекущаяДата() И текСерт.SerialNumber = "01CE5C45B54463E000000000048205DA" Тогда
            Серт = текСерт;
            Прервать;
        КонецЕсли;     
    КонецЦикла; 
    
    Если Серт = Неопределено Тогда
        Сообщить("Нет сертификатов");
        Возврат 0;
    КонецЕсли; 
    
    Signer = Новый COMОбъект("CAPICOM.Signer");
    Signer.Certificate = Серт;
    Signer.Options = 2;
        
    SignedData = Новый COMОбъект("CAPICOM.SignedData");
    Данные = Новый ДвоичныеДанные(ИмяФайла);
    Строка64=Base64Строка(Данные);
    Строка64=Прав(Строка64,СтрДлина(Строка64)-4);
    SignedData.Content  =  Строка64;
    Данные = Неопределено;
    
    Результат = SignedData.Sign(Signer, Истина, 0);
    ДвоичныеДанные = Base64Значение(Результат);
      ДвоичныеДанные.Записать(ИмяВыхФайла);
    ДвоичныеДанные = Неопределено;
    
    Verify = Новый COMОбъект("CAPICOM.SignedData");
    Данные = Новый ДвоичныеДанные(ИмяВыхФайла);
    Строка64 = Base64Строка(Данные);
    //Строка64=Прав(Строка64,СтрДлина(Строка64)-4);

    Строка64 = Строка64 + Символы.ПС;
    Verify.Content  =  Строка64;
    Verify.Verify(Результат, Истина, 0);
    
КонецФункции



Подписываю очень много xml, подскажите что формируется в итоге а то я новичек, у меня выходят bin файлы и у всех размер байт в байт (Это xml c подписью или сама подпись или что формируется?)
Как правельно подписать????????

Если Verify.Verify(Результат, Истина, 0); то ошибка:

{ВнешняяОбработка.EDI_СчФ_Выданные(1039)}: Ошибка при вызове метода контекста (Verify): Произошла исключительная ситуация: Неправильное значение хеша.
Verify.Verify(Результат, Истина, 0);
по причине: Произошла исключительная ситуация: Неправильное значение хеша.

Если Verify.Verify(Результат, Истина, 1); то ошибка:

{ВнешняяОбработка.EDI_СчФ_Выданные(1039)}: Ошибка при вызове метода контекста (Verify): Произошла исключительная ситуация: Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия.
Verify.Verify(Результат, Истина, 1);
по причине: Произошла исключительная ситуация: Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия.

Корневой сертификат установлен в доверенные центры сертификации...
????????

Отредактировано пользователем 4 октября 2013 г. 11:37:49(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#2 Оставлено : 4 октября 2013 г. 11:24:37(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Файл с подписью имеет определенный формат, само значение подписи - фиксированный размер, зависимый от используемых алгоритмов,
сертификат имеет определенный размер.
Отсюда, если используется один и тот же сертификат для подписания, то и файлы с подписью будут иметь одинаковый размер.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 4 октября 2013 г. 11:34:21(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Цитата:
Произошла исключительная ситуация: Неправильное значение хеша

Не тот файл проверяется, а если файл все же "тот", что был подписан (ниже распространенные ошибки):
а) он был изменен после подписания
б) данные передаются на проверку в COM "не так" как нужно.

Техническую поддержку оказываем тут
Наша база знаний
Offline ostoha  
#4 Оставлено : 4 октября 2013 г. 11:34:50(UTC)
ostoha

Статус: Новичок

Группы: Участники
Зарегистрирован: 04.10.2013(UTC)
Сообщений: 5

Так у меня файлы разные разных размеров, а результат выполнения:

Результат = SignedData.Sign(Signer, Истина, 0);

Всегда одинаков символ в символ, такого же не должно быть...или я чего то не понимаю?
Offline Андрей Писарев  
#5 Оставлено : 4 октября 2013 г. 11:36:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: ostoha Перейти к цитате
Так у меня файлы разные разных размеров, а результат выполнения:

Результат = SignedData.Sign(Signer, Истина, 0);

Всегда одинаков символ в символ, такого же не должно быть...или я чего то не понимаю?


Без разницы на размер исходного файла, если подпись отделенная...


p.s. прикрепите тогда уж тестовые файлы и эцп
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#6 Оставлено : 4 октября 2013 г. 11:37:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: ostoha Перейти к цитате
Так у меня файлы разные разных размеров, а результат выполнения:

Результат = SignedData.Sign(Signer, Истина, 0);

Всегда одинаков символ в символ, такого же не должно быть...или я чего то не понимаю?


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

Код:
SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)
Техническую поддержку оказываем тут
Наша база знаний
Offline ostoha  
#7 Оставлено : 4 октября 2013 г. 11:51:31(UTC)
ostoha

Статус: Новичок

Группы: Участники
Зарегистрирован: 04.10.2013(UTC)
Сообщений: 5

Автор: Андрей * Перейти к цитате
Автор: ostoha Перейти к цитате
Так у меня файлы разные разных размеров, а результат выполнения:

Результат = SignedData.Sign(Signer, Истина, 0);

Всегда одинаков символ в символ, такого же не должно быть...или я чего то не понимаю?


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

Код:
SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)


Метод Sign(Signer,bDetached,EncodingType)
Signer - подписант
bDetached - boolean (0 - файл подписи включает в себя содержание объекта; 1 - файл подписи не включает в себя содержание объекта)
EncodingType (0 - данные выгружаются в виде base64-кодированной строке)

Походу понял
Код:
Результат = SignedData.Sign(Signer, Истина, 0);


Формирует чисто подпись а если надо сам файл с подписью внутри тогда флаг необходимо поменять
Код:
Результат = SignedData.Sign(Signer, Ложь, 0);

Offline Андрей Писарев  
#8 Оставлено : 4 октября 2013 г. 11:56:05(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: ostoha Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: ostoha Перейти к цитате
Так у меня файлы разные разных размеров, а результат выполнения:

Результат = SignedData.Sign(Signer, Истина, 0);

Всегда одинаков символ в символ, такого же не должно быть...или я чего то не понимаю?


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

Код:
SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)


Метод Sign(Signer,bDetached,EncodingType)
Signer - подписант
bDetached - boolean (0 - файл подписи включает в себя содержание объекта; 1 - файл подписи не включает в себя содержание объекта)
EncodingType (0 - данные выгружаются в виде base64-кодированной строке)

Походу понял
Код:
Результат = SignedData.Sign(Signer, Истина, 0);


Формирует чисто подпись а если надо сам файл с подписью внутри тогда флаг необходимо поменять
Код:
Результат = SignedData.Sign(Signer, Ложь, 0);



Да.
Только "не чисто подпись",
а в определенном формате (включая сертификат\цепочку\дополнительные атрибуты)
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#9 Оставлено : 4 октября 2013 г. 11:57:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Цитата:
Произошла исключительная ситуация: Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия.

Корневой сертификат установлен в доверенные центры сертификации...


А тот ли корневой установлен в доверенные корневые ЦС?

Техническую поддержку оказываем тут
Наша база знаний
Offline ostoha  
#10 Оставлено : 4 октября 2013 г. 12:02:00(UTC)
ostoha

Статус: Новичок

Группы: Участники
Зарегистрирован: 04.10.2013(UTC)
Сообщений: 5

У нас диск поставки "Астрал" на нем единственный корневой сертификат другого даже и нет)))
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.