Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.07.2019(UTC) Сообщений: 31  Сказал(а) «Спасибо»: 2 раз
|
Автор: two_oceans  Автор: PashaTechnique  Автор: two_oceans  Заодно при проверке ответа фсс выяснилось, что у меня программа не ловит идентификатор алгоритма "http://www.w3.org/2001/10/xml-exc-c14n#WithComments", так что я тоже в выигрыше. То есть он не сравнивает схему ? Кто он? Алгоритм каноникализации CanonicalizationMethod Algorithm никак не связан со схемой подписи гост-2001 или гост-2012, если Вы об этом. Можно использовать любой из допустимых стандартом. Мне известно 6 вариантов значения - неэксклюзивный, неэксклюзивный обновленный, эксклюзивный и их вариации с комментариями. По моей ошибке:
у меня в программе есть функция которая при старте в специальном списке регистрирует соответствие идентификатора алгоритма в форме для xml ("ссылки на алгоритм"), функции его обработки и дополнительных данных вроде флагов алгоритма. Так вот эта функция регистрации сначала добавляет алгоритмы каноникализации без комментариев, потом добавляет к тем же адресам "#WithComments" для алгоритмов с комментариями, потом регистрирует все другие возможные трансформы, в отдельных списках вычисление хэша, вычисление подписи, проверка подписи. Заморочка была в том, что идентификатор "http://www.w3.org/2001/10/xml-exc-c14n#" (эксклюзивный без комментариев) уже оканчивался на решетку и после прибавления "#WithComments" получалось 2 решетки в адресе с комментариями, что не совпадало с правильным написанием и правильное написание трактовалось как неизвестный алгоритм. Сейчас поправил добавление решетки отдельно (чтобы была только одна решетка в адресе) и алгоритм стал ловиться, подпись ФСС проверилась успешно. Успешно потому что я тоже не заморачиваюсь с неправильными символами в ури при проверке.
Автор: PashaTechnique  Автор: two_oceans  Короче, я в шоке: открыл спецификацию и фсс на полном серьезе считают "http://eln.fss.ru/actor/fss/ca/1027739443236" валидным ID для тега сертификата. Когда уже отечественные гис будут на стандарты хотя бы смотреть)))
Я писал уже - путаница, там одно написано, тут другое говорят. Так в итоге то правильно как будет ?) А вот кто бы знал. Технически наличие двоеточия и слешей в ID не приведет к неправильному разбору xml и ури. Однако наличие этих символов запрещено стандартом (этакая перестраховка от разработчиков стандарта чтобы ID можно было использовать в других местах без оглядки) и парсеры работающие по стандарту обязаны считать это несоответствием схеме. У ФСС похоже парсер не проверяет схему (то есть в этом случае схему проверяют в своем коде и не заморочились проверкой данного пункта или даже специально исключили проверку). Ради интереса можно попробовать вместо CERT_... написать как они хотят, но это будет не по стандарту и такая подпись может не проверяться некоторыми средствами проверки подписи. Перепроверил себя еще раз, wsu:Id точно этого типа: Цитата:wsu:Id This global attribute supports annotating arbitrary elements with an ID. Attribute information Namespace: http://docs.oasis-open.o...security-utility-1.0.xsdSchema document: oasis-200401-wss-wssecurity-utility-1.0.xsd Type: xsd:ID Properties: Global, Qualified Value: A value of type xsd:ID. Автор: PashaTechnique  Автор: two_oceans  https://www.sql.ru/forum...ektronnyy-bolnichnyy-eln вот тут тоже немного обсуждали, кстати Shuraken тут на форуме тоже был когда пилил работу с фсс, но выложить код было запрещено контрактом. Можно попробовать в его тему тут написать, ему придет оповещение, вдруг чего еще полезного подскажет. А где его тема тут ?) Вот тут, не совсем его тема, но там он много писал https://www.cryptopro.ru...osts&t=13688&p=3Автор: PashaTechnique  Еще я буквально сегодня утром заметил, в кабинете фсс, выложили жирную надпись, в картинке можно посмотреть. Это значит что нужно алгоритмы менять? на 2001? Какой же я везучий Может по-этому сертификаты не совпадали, хоть и написано что продуктивная среда, но может тестовую тоже захватили, попробую пока) Как я понимаю, нет. Это для тех кто использовал для шифрования сертификат ФСС по алгоритму гост-2001. Если у использовался гост-2012, то должно работать без смены (в этот раз). Объявление и на тестовой и на рабочей, только даты и сертификаты разные. Вообщем-то ответили мне из ФСС, сказали сделать: сменить id на id их структуры, и так далее, это все сделал, но ошибка та же, ничего не изменилось, еще в ФСС мне ответили что якобы мое сообщение не такое как у них на старте, почему у меня написано SOAP большими буквами, а у них маленькими. И у меня назрел такой же вопрос, не является это ли ошибкой? Но я даже не понял как это исправить... Вообщем далее по порядку: Вот мой xml до значения header. Тут все пространства имен, все как у всех, но SOAP - большими. Код:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:fil="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Вот их xml до значения header. Тут soap - маленькими. И строки с версией xml у меня нет, как и с кодировкой документа. Код:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema">
Еще в ответе мне скинули мое переделанное сообщение, как нужно, и тут вот что выходит, опять же это уже загуглил все, путного нет ничего, про делфи старые форумы. Разница ошибок: На мое сообщение которое создаю сам. Код:
ORA-20001: Отсутствует подпись головной организации
Которое предложили мне. Код:
ORA-20001: Некорректная подпись головной организации: ЭЦП неверна. INVALID_SIGNATURE ЭП недействительна. Обратитесь к разработчику программного обеспечения, на котором осуществлялось подписание данных.
И я вообще в замешательстве теперь полном...
|