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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline eustace  
#1 Оставлено : 7 ноября 2014 г. 19:22:08(UTC)
eustace

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

Группы: Участники
Зарегистрирован: 07.11.2014(UTC)
Сообщений: 2
Откуда: Москва

Прошу помочь в решении проблемы, возникшей при разработке сервиса для интеграции торговой площадки с сайтом Госзакупок.

Суть:
1) Разработали сервис для выгрузки информации о проводимых торгах со сторонней площадки на госзакупки. Соединение по TLS, с двухсторонней аутентификацией.
2) Сервис написан на C#, .Net Framework 4.0.
2) На машине установлена CryptoPro 3.9, в хранилище сертификатов загружен серт торговой площадки, установка соединения проходит нормально.
3) Затем отправляется xml с данными о закупке, включающими в себя закодированные в Base64 файлы с описанием закупки.
4) В случае, если приложенные к закупке файлы маленькие (менее ~7Кб), всё проходит хорошо: сервер возвращает xml с информацией о том, что всё ок.
5) А вот если файл длиной больше 7Кб, то при получении ответа от сервера падает Exception:
A call to SSPI failed, see inner exception; The message received was unexpected or badly formatted.
Или, иногда,
An established connection was aborted by the software in your host machine
Причину, по которой появляются разные ошибки без изменения кода, установить не удалось
6) Других отличий, за исключением Base64-строки с содержимым файла, между xml нет.

Проверял на разных машинах (Win 2008R2, Win 8.1), из разных мест. Проблема точно не в канале связи.
Сообщение отправляется и получает ответ быстро (за доли секунды), т.е. проблема не в таймауте.

Но есть пара непонятных для меня моментов:
1) При валидации сертификата сервера не находится корневой сертификат. В ValidateServerCertificate:
chain.ChainStatus==PartialChain Не удается построить цепочку сертификатов для доверенного корневого центра.
; RevocationStatusUnknown Функция отзыва не смогла произвести проверку отзыва для сертификата.
; OfflineRevocation Невозможно проверить функцию отзыва, т.к. сервер отзыва сертификатов недоступен
.

2) После установки соединения в SslStream.LocalCertificate == null, хотя стрим создаётся с передачей userCertificateSelectionCallback:
Цитата:
SslStream sslStream = new SslStream(
client.GetStream(),
false,
ValidateServerCertificate,
ClientCertificateSelectionCallback);

и в методе ClientCertificateSelectionCallback локальный сертификат находится и проставляется куда следует.


Было подозрение, что надо на локальную машину установить корневые сертификаты Госуслуг и УЦ, выдавшего сертификат торговой площадки.
Попробовал, но результата не принесло. Да и в таком случае не ясно, почему маленький файл уходит корректно.

P.S. Если задаю вопрос не в том разделе прошу простить и перенести в корректное место.
Online Андрей Писарев  
#2 Оставлено : 7 ноября 2014 г. 19:29:34(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: eustace Перейти к цитате

Было подозрение, что надо на локальную машину установить корневые сертификаты Госуслуг и УЦ, выдавшего сертификат торговой площадки.
Попробовал, но результата не принесло. .


В какие хранилища и какие именно сертификаты ставились?
Техническую поддержку оказываем тут
Наша база знаний
Offline eustace  
#3 Оставлено : 8 ноября 2014 г. 3:14:25(UTC)
eustace

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

Группы: Участники
Зарегистрирован: 07.11.2014(UTC)
Сообщений: 2
Откуда: Москва

Автор: Андрей * Перейти к цитате

В какие хранилища и какие именно сертификаты ставились?

Сертификат площадки устанавливался даблкликом по файлу .pfx, в мастере выбран Current User и автовыбор расположения по типу. Появился в списке Personal:
UserPostedImage
Корневой сертификат УЦ Сберключа взял с их сайта (тут) и аналогично, но в мастере выбран Local Machine с автовыбором расположения. Появился в Trusted Root Certification Authoritets:
UserPostedImage
Сертификат Госзакупок взят с их сайта (вроде тут, но сейчас сайт выключен, не могу проверить). Установлен аналогично Сберключу, Local Machine, автовыбр. Появился в Intermediate Certification Authorities. Плюс там же появились сберключёвские:
UserPostedImage

Больше действий с сертификатами никаких не проводилось.
Не понятно, по какой причине "маленький" файл доходит, а "большой" - нет. Разве в случае проблем с сертификатами не должны оба варианта не работать?

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

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