Статус: Участник
Группы: Участники
Зарегистрирован: 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;
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close