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

Честный Знак: Не пройдена проверка подписи.

Честный Знак: Не пройдена проверка подписи.
Я
   Megas
 
17.06.20 - 16:43
Здравствуйте.
Пробую по API в Честный Знак передать информацию по обуви.

Раньше была другая подпись, которая на днях истекла, и с ней документ передавался нормально.
Теперь новая актуальная подпись, и например Документы EDI ей подписываются и принимаются нормально, а вот ЧЗ не хочет её нормально воспринимать.
Получаю TOKEN, и тут подпись работает,  но дальше когда я подписываю документ и отправляю, мне пишет: Не пройдена проверка подписи,  при этом через Web интерфейс(браузер) подписывается нормально.

Кто знает с чем может быть связана пробемма?
   D_E_S_131
 
1 - 17.06.20 - 17:09
В ЛК для пользователя добавляли новый сертификат под новую подпись?
   Megas
 
2 - 17.06.20 - 17:53
(1) Сейчас гляну =) Спасибо
   spectre1978
 
3 - 17.06.20 - 17:54
Сертификат нужно отправить в ту контору, которая будет проверять. Иначе она никак не поверит.
   Megas
 
4 - 17.06.20 - 18:05
(3) Это что означает?
Через Веб интерфейс заходит.
В пользователях указан какойто сертификат но там странные даты. срока действия 03.01.51681 - 29.03.52932
Когда нажал добавить и указал новый сертификат, То мне сказало что он уже зарегестрирован
   spectre1978
 
5 - 17.06.20 - 18:24
(4) это значит, что когда вы получили новую подпись, то ее сертификат нужно тем или иным способом донести до конторы, которая ее проверяет. В ЛК загрузить или по почте отправить или ещё как-то, но если его у них не будет - проверку они сделать не смогут.
   Megas
 
6 - 17.06.20 - 18:36
(5) У меня 1 пользователь, если пытаюсь добавить ещё и выбираю новый "Сертификат", То пишет - данный сертификат уже зарегистрирован.
   vovastar
 
7 - 17.06.20 - 18:42
(5) по почте ЭЦП отправить? Вы зачем такое советуете?
   lodger
 
8 - 17.06.20 - 18:51
(0) тут только техпод ЧЗ поможет. очередной глюк у них.
   spectre1978
 
9 - 17.06.20 - 18:51
(7) сам сертификат без закрытого ключа - без проблем. Ничего страшного в этом нет.
   spectre1978
 
10 - 17.06.20 - 18:52
(5) напишите в поддержку, возможно, у них ЛК сломался и надо чтобы сотрудник ручками прописал сертификат в систему.
   Гость из Мариуполя
 
11 - 17.06.20 - 19:07
(5) в нормальных системах сертификат доносится автоматически , поскольку автоматически прицеплен к подписанному документу.
А это какая-то недоразвитая система, в которой сертификат нужно посылать отдельно или отдельно регистрировать в ЛК.
К примеру, в налоговую или в ФСС я никакой сертификат специально отдельно никуда не отправляю.
Подписываю отчетность или ЭЛН и фьють. И ведь как-то принимают :)
Налоговая, значится, может из подписанного документа извлечь сертификат и проверить его,  а честный знак, значится, не может. Пусть сходят в ИФНС на стажировку.


(7) вован, ты не поверишь, но когда ты кому-то отсылаешь любой док, подписанный ЭЦП, тем самым ты отсылаешь свой сертификат. :)
   vovastar
 
12 - 17.06.20 - 19:16
(11) Да я это прекрасно знаю. Не до конца прочитал в суть отправки чего то там по электронке.
Просто не думаю, чтобы в ЧЗ операторы ручками сертификаты правили у себя. Если каждый им начнет так сертификаты отсылать чтобы они у себя в системе их регистрировали, то смысл этой всей автоматизации?
   vovastar
 
13 - 17.06.20 - 19:19
+(12) чем то напоминает в этом Сбербанк АСТ, там такая же муть.
   NorthWind
 
14 - 17.06.20 - 19:29
(11) они все работают не напрямую, а через оператора, который, собственно, обычно и выписывает вам ЭЦП на год после оплаты Соответственно, сертификаты ваши у оператора есть еще до того как вы отправите первое письмо. И если вы без предупреждения подпишете отчет подписью, выданной другим УЦ и отправите доки в налоговую, скорее всего, оператор вам отпишет болт.
То же самое банк-клиент - ключи всегда выписываются запросом через банк, по-другому не предусмотрено.
А операторы того же EDI и Честный знак требуют, чтобы перед началом обмена вы им показали сертификат.
   NorthWind
 
15 - 17.06.20 - 19:32
кстати, из всех этих богоугодных заведений только ФСС позволяет обмен напрямую и они да, удовлетворяются тем сертификатом, который в письме. Дополнительно им высылать не надо.
   vovastar
 
16 - 17.06.20 - 19:33
(14) ну почему? Например, при входе в личный кабинет налогоплательщика я просто показываю свой сертификат. А например Сбербанк АСТ, требует помимо этого, хранения моего сертификата у себя на сервере.
   NorthWind
 
17 - 17.06.20 - 19:34
(16) через ЛКН ЮЛ отчетность отправлять нельзя. Там документооборот не предусмотрен никакой. Максимум выписку можно запросить, по-моему, так.
   vovastar
 
18 - 17.06.20 - 19:36
(17) ну если только так. То может они и правы.
   Гость из Мариуполя
 
19 - 17.06.20 - 22:09
А что оператор? сертификат у оператора и сертификат в ИФНС - это совершенно разные места.
Оператор НЕ регистрирует наши сертификаты в налоговой и не исправляет нашу ЭЦП на свою.
Налоговая получает отчеты, подписанные нашим ЭЦП, а не оператора.
Равно как и мы получаем протокол, подписанный ЭЦП налоговой.

А оператор всего лишь квитирует получение и отправку.

Да, у оператора есть наши сертификаты изначально. А у налоговой - нет.
А ФСС вообще может обходиться без оператора.
Так что оператор - это всего лишь передаточное звено, но никак не регистратор наших сертификатов в налоговой.  А то, что он якобы удостоверяет нашу личность - так в самом сертификате и указаны и корневые и промежуточные удостоверяющие центры сертификации.

И помимо ФСС куча сервисов так же работает. Те же госуслуги. Никто что, не пользовался госуслугами под ЭЦП учреждения? Та же ГИС ГМП.
Да и налоговая ведь выписку ЕГРЮЛ и прочий обмен через ЛК тоже делает без участия оператора, но с использованием ЭЦП. И, кстати, почему тут говорят только про  выписку? А ККТ что, не через ЛК, в на бумажке в налоговую носите?
   NorthWind
 
20 - 18.06.20 - 07:36
(19) взаимоотношений оператора с ФНС я лично точно не знаю и поэтому не могу утверждать, передает он сертификаты или не передает. Для меня достаточно того что он обычно сам является УЦ и генерирует подписи, т.е. при необходимости у него есть не то что сертификаты, а даже и закрытые ключи.
Сервисов работает много, но мало кто таким образом занимается пакетным документооборотом. ФСС, кажется, единственный, у кого есть апи и кому можно скидывать отчеты и больничные в промышленных количествах. Разного рода личники - не совсем то.
Регистрация ККТ - это разовая операция, не документооборот. А вот работа ККТ - пример как раз обратный. Мы обязательно предъявляем данные ККТ и данные ФН каждый год (или три). И дальше в процессе работы ничего менять не можем. Нельзя, например, свой ФН вставить в другую кассу взамен вышедшей из строя.
Так что выходит, что в общем-то почти везде, где есть поток документов, есть предварительная загрузка своих идентификационных данных на ресурсы уполномоченных организаций.
   Megas
 
21 - 18.06.20 - 12:35
Решил.
То ли они проверку какую добавили, или переделали что то.Поменял параметры при подписи по последнему руководству и всё стало подписываться.
   VitShvets
 
22 - 19.06.20 - 11:38
(21) А не поделитесь куском кода или примером, как документы ЧЗ отправляете? Подключаюсь к ЧЗ используя CAdESCOM.*:

Токен = comSignedData.SignCades(comCPSigner, 1, Ложь, );// comSignedData это CAdESCOM.CadesSignedData

Токен получаю нормально, документы входящие забираю. А исходящие не создаются. Меня люто бомбит с поведения их системы - вызываю сервис, возвращается честный идентификатор нового документа, ошибок нет. Но и документа в ЛК тоже нет. Есть у меня подозрение, что это что-то из за подписи, как-то криво я её получаю...

Конфа древняя КА. В поддержку ЧЗ написал, неделю назад, молчат как рыба об лёд.
   VitShvets
 
23 - 19.06.20 - 16:52
   Megas
 
24 - 19.06.20 - 16:54
(22)
ВашНовыйСгенерированныйТокен = ТекущийТоккен;
    
    DocumentType = "LP_SHIP_GOODS";                      // LP_SHIP_RECEIPT

    //АдресHTTP = "/api/v3/lk/documents/create?pg=shoes";

    АдресHTTP = "/api/v3/lk/documents/shipment/create";
    
    
    // Получить случайные данные.

    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Authorization", "Bearer " + ВашНовыйСгенерированныйТокен);

bDetached     = Ложь;
    sThumbprint = "aa aa aa aa aa aa aa aa aa aa aa 64 ce aa 8c 72 2e fd d5 28";// Тут хеш отпечаток от подписи,  что б найти нужную

    СтрокаВБазе = УбратьСимволы1013(Base64Строка( ПолучитьДвоичныеДанныеИзСтроки(СтруктурированныйJSON)));
    
    //ПодписанныеДанные = ПодписатьТекст(СтруктурированныйJSON, sThumbprint, bDetached, 1);

       ПодписанныеДанные = ПодписатьТекст(СтрокаВБазе, sThumbprint, bDetached, 1);

    
    
    // обертка //

    ПакетДанных    = Новый Соответствие;    
    //ПакетДанных.Вставить("product_document", УбратьСимволы1013(Base64Строка( ПолучитьДвоичныеДанныеИзСтроки(СтруктурированныйJSON))));

    ПакетДанных.Вставить("product_document", СтрокаВБазе);
    ПакетДанных.Вставить("document_format", "MANUAL");
    ПакетДанных.Вставить("type", DocumentType);
//    ПакетДанных.Вставить("signature", ПодписатьЭЦПЧерезСОМОбъекты(СтруктурированныйJSON, Ложь, Истина));

    ПакетДанных.Вставить("signature", ПодписанныеДанные);
    
    СтруктурированныйJSON = РаботаСФорматомJSON.ЗаписатьJSON(ПакетДанных);

            
    Соединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
    Запрос = Новый HTTPЗапрос(АдресHTTP, Заголовки);

    Запрос.УстановитьТелоИзСтроки(СтруктурированныйJSON);
    
    Попытка                    
        Ответ = Соединение.ОтправитьДляОбработки(Запрос);
        ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
    Исключение
        Сообщить(ОписаниеОшибки());                                              
        Соединение = Неопределено;
        Возврат ;
    КонецПопытки;       
    
    
    Если Ответ.КодСостояния = 200 тогда
        РазборОтвета = РаботаСФорматомJSON.ПрочитатьJSON(ТекстОтвета);
        ПоказатьJSON(РазборОтвета)
    КонецЕсли;
    JsonText = ТекстОтвета; 
    Сообщить( ТекстОтвета );



// sThumbprint - отпечаток сертификата, используемого для подписи; строка,

// представляющая отпечаток в шестнадцатеричном виде
// пример 195934d72dcdf69149901d6632aca4562d8806d8

// ТекстДляПодписи должен быть в Base64
// bDetached - Истина/Ложь - откреплённая(для подписаниядокументов)/прикреплённая(для получения токена авторизации) подпись

Функция ПодписатьТекст(ТекстДляПодписи, sThumbprint, bDetached, CADESCOM_BASE64_TO_BINARY = 0 )
//    CADESCOM_BASE64_TO_BINARY = 0; // Входные данные пришли в Base64

    CADESCOM_CADES_TYPE = 1;// Тип усовершенствованной подписи

    CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;// Атрибут штампа времени подписи

    oSigner = Новый COMОбъект("CAdESCOM.CPSigner");
    // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи.

    oSigner.Certificate = ПолучитьСертификатПоОтпечатку(sThumbprint);
    oSigningTimeAttr = Новый COMОбъект("CAdESCOM.CPAttribute");
    oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
    oSigningTimeAttr.Value = ТекущаяДата();
    oSigner.AuthenticatedAttributes2.Add(oSigningTimeAttr);
    ТекстДляПодписи = СокрЛП(ТекстДляПодписи);
    oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
    // Объект CadesSignedData предоставляет свойства и методы для работы с усовершенствованной подписью.

    oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
    oSignedData.Content = СокрЛП(ТекстДляПодписи);
    EncodingType = 0;
    sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE,
    bDetached, EncodingType);
    // Метод добавляет к сообщению усовершенствованную подпись.

    Возврат sSignedMessage;// Подпись в формате Base64

КонецФункции
//Отпечаток - строка HEX

Функция ПолучитьСертификатПоОтпечатку(ОтпечатокСтр)
    Рез = Неопределено;// Найденный сертификат (Com-объект)

    CAPICOM_CURRENT_USER_STORE = 2;
    //2 - Искать сертификат в ветке "Личное" хранилища.

    CAPICOM_MY_STORE = "My";
    // Указываем, что ветку "Личное" берем из хранилища текущего пользователя

    CAPICOM_STORE_OPEN_READ_ONLY = 0;// Открыть хранилище только на чтение

    oStore = Новый COMОбъект("CAdESCOM.Store");// Объект описывает хранилище сертификатов 182

    oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
    CAPICOM_STORE_OPEN_READ_ONLY);// Открыть хранилище сертификатов

    // 1 вариант: поиск сертификата по отпечатку

    CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
    Certificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH,
    ОтпечатокСтр);
    Рез = Certificates.Item(1);
    //2 вариант: обходом по коллекции и сравнение с отпечатком

    //Для Каждого ТекСертификат Из oStore.Certificates Цикл

    //ТекОтпечаток = ТекСертификат.Thumbprint; // возвращается отпечаток вшестнадцатеричном виде

    //Если ВРЕГ(ТекОтпечаток) = ВРЕГ(ОтпечатокСтр) Тогда //Рез = ТекСертификат;

    //Прервать;

    //КонецЕсли;

    //КонецЦикла;

    oStore.Close();// Закрыть хранилище сертификатов и освободить объект 61

    Возврат Рез;
КонецФункции

Надеюсь помог
   Megas
 
25 - 19.06.20 - 16:57
(23) У меня к тому же 82 поэтому функции Base64Строка( ПолучитьДвоичныеДанныеИзСтроки()) - самописные - в 83 это проще =)
и
Функция УбратьСимволы1013(Строка) Экспорт
    Возврат СтрЗаменить(СтрЗаменить(Строка, Символы.ПС, ""), Символы.ВК, "");// Ещё бывают символы "77u/", при необходимости удалять и их.

КонецФункции
   marty0701
 
26 - 19.06.20 - 18:08
Можно чуть подробнее, где именно надо обновить сведения о сертификате, у нас закончился 18 числа, сегодня ловим какие-то ошибки невнятные при передаче данных в ЧЗ. УТ 11.4, на старой подписи всё работало, новую установили, 1с ее видит, проверку проходит, но оформить приемку товаров, например, не удаётся.


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