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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Radzhab  
#1 Оставлено : 24 июля 2019 г. 15:17:43(UTC)
Radzhab

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

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

Сказал(а) «Спасибо»: 5 раз
Пытаюсь наладить связь с росреестром. Подключился через службы к wsdl. Подскажите как подписать soap запрос? В инете инфы ноль. Вообще можно ли его подписать без криптопро?)


Цитата:
var serviceUri = "http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003350/wsdl";
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);

var coll = store.Certificates.Cast<X509Certificate2>().ToArray();

X509Certificate2 clientCert = coll.FirstOrDefault(x => string.Equals(x.Thumbprint, clientCertThumbprint, StringComparison.InvariantCultureIgnoreCase));
X509Certificate2 serverCert = coll.FirstOrDefault(x => string.Equals(x.Thumbprint, serverCertThumbprint, StringComparison.InvariantCultureIgnoreCase));


RosreestrServicePortTypeClient client = new RosreestrServicePortTypeClient();
client.ClientCredentials.ClientCertificate.Certificate = clientCert;
client.ClientCredentials.ServiceCertificate.DefaultCertificate = serverCert;

client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
client.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;

string serverCommonName = serverCert.GetNameInfo(X509NameType.SimpleName, false);

EndpointAddress myEndpointAddr = new EndpointAddress(new Uri(serviceUri),
EndpointIdentity.CreateDnsIdentity(
serverCommonName));

client.Endpoint.Address = myEndpointAddr;
client.ChannelFactory.Endpoint.Contract.ProtectionLevel = ProtectionLevel.None;
Offline two_oceans  
#2 Оставлено : 25 июля 2019 г. 5:41:25(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Автор: Radzhab Перейти к цитате
Пытаюсь наладить связь с росреестром. Подключился через службы к wsdl. Подскажите как подписать soap запрос? В инете инфы ноль. Вообще можно ли его подписать без криптопро?)
Как ноль? Судя по адресу Вы хотите подписать для сервиса по форматам СМЭВ2, вот о "подписании для СМЭВ 2" и ищите информацию, процедура подписания в основном унифицированная, можете поискать старые статьи для фнс и пфр (сейчас они почти полностью перешли на СМЭВ 3, новые статьи не подойдут). Извращенных способов каноникализации и подписания просто море, на том же хабре найдется с десяток. Есть целая эпопея как на VFP пилили подписание для пфр с непоследовательным, но подробным разжевыванием всех процедур. В "основном унифицированная", потому что росреестр (если правильно помню) мается ерундой и несмотря на передачу по защищенным каналам СМЭВ еще сами файлы-вложения в ответах шифрует. С учетом того что СМЭВ 2 планируют прикрыть поэтапно в ближайшем будущем, возможно лучше подключаться сразу к СМЭВ 3, чтобы не переделывать через полгода-год. Для СМЭВ 3 есть даже типовой адаптер.

Подписать без КриптоПро CSP можно при условии что есть еще какой-либо криптопровайдер поддерживающий подписание по алгоритмам гост или openssl (часть из отечественных криптопровайдеров сделаны на основе openssl - добавлением модуля гост). Из коробки windows (как и стандартная новая openssl без модуля) не поддерживает гост, поэтому если ничего не устанавливали, то и подписать не сможете. Сертификат гост просто не пройдет проверку и будет отклонен функционалом подписания как поврежденный.

А если что-то напоминающее криптопровайдер присутствует, то тут уже открывается масса вариантов как именно подписать, начиная от ... подписания в командной строке openssl c модулем гост и переформирования вывода в соап-запрос (модуль можно собрать из исходников на гитхабе. К слову, у Криптопро тоже есть модуль, но он требует наличия самого КриптоПро CSP, а старый модуль openssl не поддерживает гост-2012), сочетанием модуля и библиотек openssl (без командной строки, получая результат в буфер), сочетанием специальной библиотеки подписания вроде xmlsec + библиотек openssl + модуля, подписание тестовой утилитой криптопро ... (множество других извращенных способов подписать xml)... до подписание низкоуровневыми CryptoAPI, подписание библиотеками для подписи документов Office (так как они тоже xml), прямая работа с подписанием в .NET/Java. На фоне всех выкрутасов последнее удобнее всего.

Отредактировано пользователем 25 июля 2019 г. 5:50:43(UTC)  | Причина: Не указана

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