Работа со сторонними сервисами по HTTPS (SSL) с использованием клиентского сертификата

1. Tomynoker 24.03.21 20:58 Сейчас в теме
Добрый день, коллеги.
Руководство решило интегрироваться с банком МКБ для приема платежей по QR-коду, обязателен сертификат и подключение по HTTPS с заявленного IP. Столкнулся со следующей проблемой - банк предоставил клиентский сертификат, вот с ним и ничего не получается. И в систему установил (в корневые доверенные), и в чистом виде его 1С-ке передавал, и в cacert.pem добавил - результат один:
"Ошибка работы с Интернет: Failure when receiving data from the peer"
Код проще некуда:
   стСтруктураДанныхJSON = Новый Структура;
    ....................................
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);  
    ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
    
    ЗаписатьJSON(ЗаписьJSON, стСтруктураДанныхJSON);
    СтрокаJSON = ЗаписьJSON.Закрыть();
    
    ssl = Новый ЗащищенноеСоединениеOpenSSL(//);
            //Новый СертификатКлиентаФайл("D:\filename.p12", "password"),
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());  
    
    HTTPСоединение = Новый HTTPСоединение("host", port,,,,, ssl);
    Заголовки = Новый Соответствие;
        .................................
    
    запросPOST = Новый HTTPЗапрос("address", Заголовки);
    запросPOST.УстановитьТелоИзСтроки(СтрокаJSON, "utf-8", ИспользованиеByteOrderMark.НеИспользовать);
    
    Ответ = HTTPСоединение.ОтправитьДляОбработки(запросPOST);
Показать


Может кто сталкивался? Уже не знаю в какую сторону искать...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. pyrkin_vanya 488 24.03.21 23:25 Сейчас в теме
4. ptolomei 25.03.21 13:33 Сейчас в теме
(1) попробуй конвертировать сертификат в другой формат, в нашем случае помогла конвертация сертификата в .pfx. и подключение через
Новый СертификатКлиентаФайл(Поставщик.Сертификат,Поставщик.Пароль)
6. VKislitsin 968 03.08.22 18:31 Сейчас в теме
(1) Tomynoker, удалось ли найти решение проблемы?
у меня через Новый СертификатКлиентаФайл(ИмяФайла, Пароль) работает, а с сертификатом, установленным в хранилище не удается запустить.
3. 1C-Maximus 25.03.21 09:27 Сейчас в теме
Пробовал, тогда отваливается по таймауту
5. Tomynoker 26.03.21 12:12 Сейчас в теме
7. gml 03.08.22 22:13 Сейчас в теме
Я тоже пытался подключить из хранилища, но не получилось.
Похоже, метод СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто) ищет в хранилище локальных сертификатов пользователя, от имени которого запущен сервис 1С, такой сертификат, у которого имя владельца (Subject) соответствует имени пользователя в ActiveDirectory. У нас в организации сертификаты выпускаются только на имена машин, и такие сертификаты не подхватывает 1С.

Сделал через файл в формате .pfx (в файл обязательно надо включать приватный ключ и как следствие - защищать его паролем).
Сертификат должен быть клиентским (иметь свойство Проверка подлинности Сервера и соответствующие параметры использования).
После этого работает метод СертификатКлиентаФайл(ИмяФайла, Пароль). Сертификат лежит в файловой системе сервера приложений 1С, права на доступ к файлу прописаны только для администраторов и пользователя, от имени которого запущен сервис 1С.
Проверить работоспособность сертификата можно с помощью браузера, попытавшись подключиться к Web-странице сервиса и выбрав из личного хранилища нужный сертификат. Браузеры соответствие имен клиентского сертификата и пользователя не проверяют. Успешная установка SSL/TLS -соединения означает, что Ваш сертификат работоспособен.
VKislitsin; +1 Ответить
Оставьте свое сообщение

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