Работа с SSL/TLS сертификатами

1. Alsegan 22.11.19 10:28 Сейчас в теме
Добрый день!
Уже месяц бьюсь над задачей интеграции со Сбербанком.

Задача:
Отправлять из 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 - в "Сторонние корневые центры сертификации"


Подскажите может быть кто нибудь сталкивался с подобной проблемой, что я делаю не верно?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Staind111 21.10.20 16:16 Сейчас в теме
(1) Подскажите, сегодня столкнулись с такой же ситуацией, как решился ваш вопрос?
3. Alsegan 22.10.20 12:49 Сейчас в теме
К сожалению никак. Проверили через JavaScript, всё работает , из 1С никак. В поддержке сбера тоже помочь не смогли.
4. Staind111 22.10.20 12:52 Сейчас в теме
(3)Спасибо, мы уже разобрались в чем у нас была проблема
5. Alsegan 22.10.20 16:22 Сейчас в теме
А в чем у вас была проблема?
6. Staind111 23.10.20 07:57 Сейчас в теме
(5)Забыли про команду
openssl.exe pkcs12 -export –in Certificate.crt -inkey CertificateClient.key -out Client.p12
т.е. без ключа закинули в систему сертификат присланный контрагентом в ответ на наш csr запрос))
7. Tony_Medvedos 09.12.21 10:06 Сейчас в теме
(6) Подскажите пожалуйста, после выполнения команды вы установили повторно сертификат?
Каким образом передача самого сертификата была выполнена в 1С?
Уже всю голову сломал с Новый ЗащищенноеСоединение. Как только не пробовал.
Можете показать как вы сделали?
8. Staind111 09.12.21 11:49 Сейчас в теме
(7)Не пойму что значит установили повторно, это новый сертификат, до этого он еще не был установлен.
У нас сделано не через ЗащищенноеСоединение, а как и в первом сообщении темы через COMОбъект.
9. Tony_Medvedos 09.12.21 16:03 Сейчас в теме
(8)Да, это я тупанул. Не понятно еще какой сертификат в команду вставлять. Есть сертификат .pfx , .crt и ключей - 6 штук (header, masks, masks2, name, primary, prymary2)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот