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

Уведомление

Icon
Error

19 Страницы«<1213141516>»
Опции
К последнему сообщению К первому непрочитанному
Offline two_oceans  
#131 Оставлено : 24 октября 2019 г. 12:57:24(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: HF_HF Перейти к цитате
Если что то интересное правлю, то проект на gitLab обновляю.
https://gitlab.com/Proje...v.a.andiev/example-smev3 ...
Самое главное мой выложенный код кому-нибудь помог ? А то вдруг я очевидные вещи выкладываю )))
Думаю что помог, просто на этот форум заходит большое количество посетителей без регистрации, периодически замечаю гостей и в этой теме, это скорее всего программисты. Если они не пишут новый вопрос, значит нашли ответ в уже написанном. И это плюс что смэв 3 стянулся в одну тему. С теми же больничными ФСС только мне тут попадалось около десятка тем.

Автор: HF_HF Перейти к цитате
Ваш вариант с адаптером мне тоже предлагали. Хочу узнать удобно работать через адаптер?
Конечно главное чтобы работало. Это начальство больше интересует, особенно в Гос проектах ...
Так у меня самописные адаптеры, что хочу то и ворочу, не те что с портала смэв 3. Про адаптеры на портале смэв 3 ранее говорили что там приходится допиливать - в одной статье на хабре вставляли пропущенную строчку в смэвовский трансформ, в других боролись с параметрами. Летом похоже адаптеры обновили и отзывов о новой версии пока не читал.
thanks 1 пользователь поблагодарил two_oceans за этот пост.
HF_HF оставлено 30.10.2019(UTC)
Offline gosha207778  
#132 Оставлено : 11 ноября 2019 г. 14:56:24(UTC)
gosha207778

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

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

Автор: HF_HF Перейти к цитате
Автор: two_oceans Перейти к цитате
Наверно еще замечательнее, если для других напишите какие "минорные изменения"/атрибут или ссылку на pull request. Или из прошлых сообщений архив обновили?


Если что то интересное правлю, то проект на gitLab обновляю.
https://gitlab.com/Proje...v.a.andiev/example-smev3
Ваш вариант с адаптером мне тоже предлагали. Хочу узнать удобно работать через адаптер?
Конечно главное чтобы работало. Это начальство больше интересует, особенно в Гос проектах ...

Самое главное мой выложенный код кому-нибудь помог ? А то вдруг я очевидные вещи выкладываю )))


ДА! ОЧЕНЬ ПОМОГ! сейчас занимаюсь тем что пишу иплементацию официального адаптера СМЭВ3 для отправки туда сообщений. Не могли бы вы обменяться контактами? у меня есть несколько вопросов\предложений к вам по вашему проекту.

telegram - gosha20777
vk - gosha20777
github - gosha20777
email - gosha20777@live.ru

Offline gosha207778  
#133 Оставлено : 12 ноября 2019 г. 15:28:48(UTC)
gosha207778

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

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

Всем привет!
Недавно столкнулся с проблемой подписи и трансформации сообщений для отправки их в СМЭВ3.

Для интеграции со смэв было принято решение использовать официальный адаптер смэв3 на java. В будущем мы планировали написать свою имплементацию этого адаптера.

Однако в процессе его настройки выяснилось что он работает не стабильно и с ним возникли трудности. Совершенно непонятно как он работает и какие сообщения отправляет. В результате чего я начал рассматривать варианты написание собственного модуля для интеграции со смэв.

Для меня остается не ясным как необходимо трансформировать сообщения для отправки в смэв и как их подписывать.

Было бы здорово получить такую функцию
string Smev3Request = TransformXmlToSmev3Message(inputXmlString, Sertificate ...)

где в качестве входных данных можно было бы подать сообщение вида:
https://smev3.gosuslugi....p;page=1&dTest=false

например отсюда. ну или то сообщение которое подается на вход в адаптер к смэв3. Но я не нашел тут таких ответов (или я что то не понимаю).

Почему бы не собраться всем и не запилить open source проект на эту тему?


P.s. До этого я никогда не работал с SOAP и СМЭВ. Более того никогда не работал в российских компаниях. По этому я слабо представляю как работает рос. Законодательство и вот это все.

Также мне удалось подписывать документы XML с помощью OpenSSL. То есть преобразовать PFX сертификат КриптоПро в сертификаты OpenSSL что позволит избавиться от КриптоПро и перейти на OpenSSL, а следовательно и на .NET Core/python и докерезировать сервис ну или использовать крипто про...

Вот мой проект по интеграции со смэв3 адаптером – если заменить адаптер на свободную имлементацию то может получиться хороший продукт

https://github.com/gosha...77/smev3_adapter_service

мои контакты есть в предыдущем сообщении.

Отредактировано пользователем 12 ноября 2019 г. 15:36:41(UTC)  | Причина: Не указана

Offline two_oceans  
#134 Оставлено : 14 ноября 2019 г. 10:30:14(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: gosha207778 Перейти к цитате
Всем привет!
Недавно столкнулся с проблемой подписи и трансформации сообщений для отправки их в СМЭВ3.
Для интеграции со смэв было принято решение использовать официальный адаптер смэв3 на java. В будущем мы планировали написать свою имплементацию этого адаптера.
Однако в процессе его настройки выяснилось что он работает не стабильно и с ним возникли трудности. Совершенно непонятно как он работает и какие сообщения отправляет. В результате чего я начал рассматривать варианты написание собственного модуля для интеграции со смэв.
Для меня остается не ясным как необходимо трансформировать сообщения для отправки в смэв и как их подписывать.
Было бы здорово получить такую функцию
string Smev3Request = TransformXmlToSmev3Message(inputXmlString, Sertificate ...)
где в качестве входных данных можно было бы подать сообщение вида:
https://smev3.gosuslugi....p;page=1&dTest=false
например отсюда. ну или то сообщение которое подается на вход в адаптер к смэв3. Но я не нашел тут таких ответов (или я что то не понимаю).
Привет! Не совсем понял что и во что собираетесь трансформировать. В паспортах сервисов как правило лежит часть сообщения, содержащая "бизнес-данные", отличающиеся для разных видов сведений. Предположу, что под транформацией Вы понимаете обертку "бизнес-данных" в общий для всех "конверт" СМЭВ 3?
Еще есть smev-transform для ЭП, не хотелось бы спутать терминологии.
Автор: gosha207778 Перейти к цитате
Почему бы не собраться всем и не запилить open source проект на эту тему?
Идея здравая, я целиком "за". Собственно именно это и хочу сделать. При реализации правда начинаются проблемы разного плана: 1) полной реализации пока я не встречал ни в одном опубликованном коде ПО, все городят "костыли", которые работают только с конкретным сервисом. У меня тоже не реализованы множество пунктов стандарта, но сервис для которого пишу это устраивает, потому что в xml для этого конкретного сервиса эти пункты срабатывают впустую и ничего не меняют в сообщении. Соответственно общий проект должен будет учитывать все сервисы (а их протестировать ВСЕ немного проблематично). Иначе всё сведется к тому что все взяли сырой проект и приделали свои костыли (как сейчас с адаптером); 2) программисты крайне неохотно переходят на другой язык (другую среду) программирования, поэтому Важно чтобы проект имел порты под все популярные среды программирования; 3) если проект будет включать подписание ЭП, то к сожалению open source проекты не подходят, так как подписание должно быть выполнено сертифицированным средством криптографической защиты (СКЗИ) или должен быть проведен контроль встраивания сертифицированного СКЗИ.
Автор: gosha207778 Перейти к цитате
Также мне удалось подписывать документы XML с помощью OpenSSL. То есть преобразовать PFX сертификат КриптоПро в сертификаты OpenSSL что позволит избавиться от КриптоПро и перейти на OpenSSL, а следовательно и на .NET Core/python и докерезировать сервис ну или использовать крипто про...
С сертификатом никаких проблем нет, проблема с ключами.

Автор: gosha207778 Перейти к цитате
Вот мой проект по интеграции со смэв3 адаптером – если заменить адаптер на свободную имлементацию то может получиться хороший продукт https://github.com/gosha...77/smev3_adapter_service мои контакты есть в предыдущем сообщении.
Конечно извиняюсь, не смотрел по ссылке, но что там еще нужно кроме адаптера? Бизнес-данные все равно придется формировать у каждой организации отдельно, так как у всех есть некое свое ПО работающее с зоопарком различных баз данных различных версий. Хотите пересадить всех на такой продукт? Заставить перебивать данные в новую базу данных. Увы, но это слишком оптимистично, большинство организаций мелкие, у них может даже не быть не то что программиста, но системный администратор приходит по 2 часа в неделю. Многие не станут брать open source продукт просто потому что не техподдержки, а имеющаяся техподдержка организации в таком продукте не разбирается. Максимум на что мы можем надеяться с проектом - заинтересовать неким "конструктором" множество junior/middle программистов, которые не хотят вникать в детали технологии ЭП или СМЭВ, но хотят прикрутить обмен со СМЭВ к своей не особо пряменькой программе. Выйдет тот же адаптер СМЭВ только другого авторства и "заваливающийся на другой бок".

Отредактировано пользователем 14 ноября 2019 г. 10:46:03(UTC)  | Причина: Не указана

Offline Dmitriy_Zh  
#135 Оставлено : 2 декабря 2019 г. 12:52:50(UTC)
Dmitriy_Zh

Статус: Участник

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

Добрый день! Есть у кого-нить готовый код генерации UUID для СМЭВ 3?
Offline two_oceans  
#136 Оставлено : 2 декабря 2019 г. 13:16:18(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день. В принципе у меня есть, но на СМЭВ еще не проверен. Вообще там просто: в Windows для времени берется SystemTimeAsFileTime, прибавляется константа перевода из одной точки времени отсчета в другую точку отстчета; часовая последовательность с потолка; мак-адрес сетевой; несколько обязательных бит. Отдельно обрабатывается случай вызова более 1 uuid за 1 десятимиллоинную секунды (то есть когда время одинаковое в вызовах - тут 2 варианта или просто увеличиваем часть времени или химичим с часовой последовательностью и мак адресом).
Offline Dmitriy_Zh  
#137 Оставлено : 2 декабря 2019 г. 16:53:54(UTC)
Dmitriy_Zh

Статус: Участник

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

Автор: two_oceans Перейти к цитате
Добрый день. В принципе у меня есть, но на СМЭВ еще не проверен. Вообще там просто: в Windows для времени берется SystemTimeAsFileTime, прибавляется константа перевода из одной точки времени отсчета в другую точку отстчета; часовая последовательность с потолка; мак-адрес сетевой; несколько обязательных бит. Отдельно обрабатывается случай вызова более 1 uuid за 1 десятимиллоинную секунды (то есть когда время одинаковое в вызовах - тут 2 варианта или просто увеличиваем часть времени или химичим с часовой последовательностью и мак адресом).


Нашел рабочий код для генерации. Теперь не могу побороть проблему с ЭЦП :( Завтра напишу примеры кода
Offline Dmitriy_Zh  
#138 Оставлено : 3 декабря 2019 г. 10:40:55(UTC)
Dmitriy_Zh

Статус: Участник

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

Добрый день! Столкнулся с проблемой при проверке ЭЦП.
Реализация через WCF клиент. Не могу найти место, в котором ломается подпись :(

Код



UPD:
Есть подозрение, что дело в сериализации которую использует WCF перед транспортировкой.
Нужно ли добавлять какие-нить настройки специальные или трансформации?

Отредактировано пользователем 3 декабря 2019 г. 14:54:51(UTC)  | Причина: Не указана

Offline two_oceans  
#139 Оставлено : 3 декабря 2019 г. 15:47:56(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Навскидку тоже не вижу где ломается. Варианты могут быть такие: не то значение PreserveWhitespace (СМЭВ предполагает документы без переводов строк и т.д., но менять все на false тоже может сломать подпись. конкретно желательно чтобы тег SignedInfo был сгенерирован в SignedXml без них, в остальных местах не так важно), не та кодировка (UTF-8 рекомендуется чтобы каноникализация не меняла кодировку).

Не пишу на дотнете, так что у меня остались еще вопросы: по смэвовскому трансформу (что-то странно что в одном месте классом, в другом адресом) - трансформ нормально отрабатывает? SignXml меняет data или нет? Возвращает запрос с подписью или только подпись? Если только подпись, то потом может все сломаться при вставке подписи где-то в client.SendRequest. Если целиком, то странно что в
Код:
client.SendRequest(request,
SignXml(SerializeSenderProvidedRequestData(request), "SIGNED_BY_CONSUMER"),
out _);
как будто request передается дважды. Наверно можно это посмотреть в общих исходниках, но вдруг у Вас "допилены" классы.

Для ясности не могли бы Вы прикрепить что возвращается из SignXml и что уходит на отправку?
Offline Dmitriy_Zh  
#140 Оставлено : 3 декабря 2019 г. 17:39:24(UTC)
Dmitriy_Zh

Статус: Участник

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

Автор: two_oceans Перейти к цитате
Навскидку тоже не вижу где ломается. Варианты могут быть такие: не то значение PreserveWhitespace (СМЭВ предполагает документы без переводов строк и т.д., но менять все на false тоже может сломать подпись. конкретно желательно чтобы тег SignedInfo был сгенерирован в SignedXml без них, в остальных местах не так важно), не та кодировка (UTF-8 рекомендуется чтобы каноникализация не меняла кодировку).

Не пишу на дотнете, так что у меня остались еще вопросы: по смэвовскому трансформу (что-то странно что в одном месте классом, в другом адресом) - трансформ нормально отрабатывает? SignXml меняет data или нет? Возвращает запрос с подписью или только подпись? Если только подпись, то потом может все сломаться при вставке подписи где-то в client.SendRequest. Если целиком, то странно что в
Код:
client.SendRequest(request,
SignXml(SerializeSenderProvidedRequestData(request), "SIGNED_BY_CONSUMER"),
out _);
как будто request передается дважды. Наверно можно это посмотреть в общих исходниках, но вдруг у Вас "допилены" классы.

Для ясности не могли бы Вы прикрепить что возвращается из SignXml и что уходит на отправку?


1)Кодировку буду принудительно делать UTF-8 (по умолчанию сериализация идёт в кодировке UTF-16)
2)Метод возвращает только подпись, т.к сигнатура метода отдальное принимает SenderProvidedRequestData и отдельно принимает CallerInformationSystemSignature

Данные для подписи (я формирую через сериализацию):


Подпись:


Служебный данные из трейса SignedXml
Преобразованный контент ссылки:


Выходные данные преобразования канонизации:


Данные которые сформировал клиент WCF для отправки:


Завтра вот думаю сформировать руками конверт для проверки и прогнать через портал.
Есть у меня подозрение, что WCF клиент что-то не так сериализует
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
19 Страницы«<1213141516>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.