Работа с SSL/TLS сертификатами
Добрый день!
Уже месяц бьюсь над задачей интеграции со Сбербанком.
Задача:
Отправлять из 1С запрос к Серверу банка, а от него получать обратно ответ.
Проблема:
При отправке запроса нужно добавить к запросу Клиентский сертификат, который Банк для нас сделал по CSR запросу, но при отправке выходит след ошибка:
"{ВнешняяОбработка.HTTP.Форма.Форма.Форма(106)}: Ошибка при вызове метода контекста (Send)
WinHttp.Send(ТекстДляСервера);
по причине:
Произошла исключительная ситуация (WinHttp.WinHttpRequest): В сертификате клиента отсутствовали учетные данные."
На форумах пишут, что данная ошибка происходит из-за того, что WinHttp.WinHttpRequest.5.1 не может отследить цепочку сертификатов. И советуют использовать MSScriptControl.ScriptControl для отключения проверки, но это не помогает.
Вот весь код:
Certificate - Сертификат который прислал сбербанк в ответ на наш CSR запрос
Certificate_privat - вторая часть ключа, для расшифровки ответа
Certificate - подписан сертификатами Sbebank External CA 2 и Sberbank Root CA
Все сертификаты установил в хранилище "Локальный компьютер"
Certificate - в Личное
Certificate_privat - в "Доверенные корневые центры сертификации"
Sbebank External CA 2 и Sberbank Root CA - в "Доверенные корневые центры сертификации"
Sbebank External CA 2 - в "Промежуточные центры сертификации"
Sberbank Root CA - в "Сторонние корневые центры сертификации"
Подскажите может быть кто нибудь сталкивался с подобной проблемой, что я делаю не верно?
Уже месяц бьюсь над задачей интеграции со Сбербанком.
Задача:
Отправлять из 1С запрос к Серверу банка, а от него получать обратно ответ.
Проблема:
При отправке запроса нужно добавить к запросу Клиентский сертификат, который Банк для нас сделал по CSR запросу, но при отправке выходит след ошибка:
"{ВнешняяОбработка.HTTP.Форма.Форма.Форма(106)}: Ошибка при вызове метода контекста (Send)
WinHttp.Send(ТекстДляСервера);
по причине:
Произошла исключительная ситуация (WinHttp.WinHttpRequest): В сертификате клиента отсутствовали учетные данные."
На форумах пишут, что данная ошибка происходит из-за того, что WinHttp.WinHttpRequest.5.1 не может отследить цепочку сертификатов. И советуют использовать MSScriptControl.ScriptControl для отключения проверки, но это не помогает.
Вот весь код:
ТекстДляСервера = "<?xml version=""1.0"" encoding=""UTF-8""?><soapenv:Envelope xmlns:pws=""http://servicecenter.peregrine.com/PWS"" xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">
|<soapenv:Body><pws:ListRequest><pws:model><pws:keys></pws:keys><pws:instance></pws:instance></pws:model><pws:Password>1</pws:Password></pws:ListRequest></soapenv:Body></soapenv:Envelope>";
&НаСервере
Процедура ПроверитьСоединение()
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.SetClientCertificate("LOCAL_MACHINE\my\Certificate");
//WinHttp.Option(2,"Windows-1251");
//WinHttp.Option(4,"13056");
//WinHttp.Option(6, Истина);
//WinHttp.Option(12,Истина);
// ************************** Начало блока по отключению защищенного соединения **********
Скрипт= Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddObject("WinHttp",WinHttp);
Скрипт.Eval("WinHttp.Option(2)=1251"); // установка кодировки страницы
Скрипт.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags Игноировать ошбибки при SSL соединении
Скрипт.Eval("WinHttp.Option(6)=true");//blnEnableRedirects Разрешить перенаправления
Скрипт.Eval("WinHttp.Option(12)=true");//blnEnableHttpsToHttpRedirects Разрешить перенаправления с защищенного на не защиещенное соединение
// ************************** Конец блока по отключению защищенного соединения **********
WinHttp.Open("POST", "https://191.51.18.2:1244", Ложь);
WinHttp.Send(ТекстДляСервера);
ТТ = WinHttp.ResponseText();
КонецПроцедуры
ПоказатьCertificate - Сертификат который прислал сбербанк в ответ на наш CSR запрос
Certificate_privat - вторая часть ключа, для расшифровки ответа
Certificate - подписан сертификатами Sbebank External CA 2 и Sberbank Root CA
Все сертификаты установил в хранилище "Локальный компьютер"
Certificate - в Личное
Certificate_privat - в "Доверенные корневые центры сертификации"
Sbebank External CA 2 и Sberbank Root CA - в "Доверенные корневые центры сертификации"
Sbebank External CA 2 - в "Промежуточные центры сертификации"
Sberbank Root CA - в "Сторонние корневые центры сертификации"
Подскажите может быть кто нибудь сталкивался с подобной проблемой, что я делаю не верно?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот