Работа со сторонними сервисами по HTTPS (SSL) с использованием клиентского сертификата
Добрый день, коллеги.
Руководство решило интегрироваться с банком МКБ для приема платежей по QR-коду, обязателен сертификат и подключение по HTTPS с заявленного IP. Столкнулся со следующей проблемой - банк предоставил клиентский сертификат, вот с ним и ничего не получается. И в систему установил (в корневые доверенные), и в чистом виде его 1С-ке передавал, и в cacert.pem добавил - результат один:
"Ошибка работы с Интернет: Failure when receiving data from the peer"
Код проще некуда:
Может кто сталкивался? Уже не знаю в какую сторону искать...
Руководство решило интегрироваться с банком МКБ для приема платежей по 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);
ПоказатьМожет кто сталкивался? Уже не знаю в какую сторону искать...
По теме из базы знаний
- Занимательный PowerShell
- Обзор полезных методов БСП 3.1.4
- Работа с WEB-сервисами под HTTPS на примере прямого обмена между базами (1С – 1С)
- Взаимодействие с сотрудниками и клиентами из одного окна конфигурации 1С (Телеграм, ВКонтакте, Facebook, Discord). Преимущества, технические особенности, подводные камни
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я тоже пытался подключить из хранилища, но не получилось.
Похоже, метод СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто) ищет в хранилище локальных сертификатов пользователя, от имени которого запущен сервис 1С, такой сертификат, у которого имя владельца (Subject) соответствует имени пользователя в ActiveDirectory. У нас в организации сертификаты выпускаются только на имена машин, и такие сертификаты не подхватывает 1С.
Сделал через файл в формате .pfx (в файл обязательно надо включать приватный ключ и как следствие - защищать его паролем).
Сертификат должен быть клиентским (иметь свойство Проверка подлинности Сервера и соответствующие параметры использования).
После этого работает метод СертификатКлиентаФайл(ИмяФайла, Пароль). Сертификат лежит в файловой системе сервера приложений 1С, права на доступ к файлу прописаны только для администраторов и пользователя, от имени которого запущен сервис 1С.
Проверить работоспособность сертификата можно с помощью браузера, попытавшись подключиться к Web-странице сервиса и выбрав из личного хранилища нужный сертификат. Браузеры соответствие имен клиентского сертификата и пользователя не проверяют. Успешная установка SSL/TLS -соединения означает, что Ваш сертификат работоспособен.
Похоже, метод СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто) ищет в хранилище локальных сертификатов пользователя, от имени которого запущен сервис 1С, такой сертификат, у которого имя владельца (Subject) соответствует имени пользователя в ActiveDirectory. У нас в организации сертификаты выпускаются только на имена машин, и такие сертификаты не подхватывает 1С.
Сделал через файл в формате .pfx (в файл обязательно надо включать приватный ключ и как следствие - защищать его паролем).
Сертификат должен быть клиентским (иметь свойство Проверка подлинности Сервера и соответствующие параметры использования).
После этого работает метод СертификатКлиентаФайл(ИмяФайла, Пароль). Сертификат лежит в файловой системе сервера приложений 1С, права на доступ к файлу прописаны только для администраторов и пользователя, от имени которого запущен сервис 1С.
Проверить работоспособность сертификата можно с помощью браузера, попытавшись подключиться к Web-странице сервиса и выбрав из личного хранилища нужный сертификат. Браузеры соответствие имен клиентского сертификата и пользователя не проверяют. Успешная установка SSL/TLS -соединения означает, что Ваш сертификат работоспособен.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот