
Программное подключение и обработка данных через 1С
Добрый день!
Пожалуйста, объясните почему, подскажите как и укажите на ошибки. Вот код подключения к Вашему API:
HTTPЗапрос = Новый HTTPЗапрос();
Соединение = Новый HTTPСоединение("dadata.ru",,,, Новый ИнтернетПрокси,, Новый ЗащищенноеСоединениеOpenSSL);
ОтветHTTP = Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
Проблема в том, что со временем появляется ошибка вида:
Ошибка при вызове метода контекста (ВызватьHTTPМетод)
ОтветHTTP = Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
по причине:
Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
То есть запросы могут проходить нормально и получать полноценный ответ, а потом через некоторое время начинают сыпаться ошибки. Подскажите куда смотреть и на что обратить внимание - хотим с Вами интегрироваться, но стабильности получить не удается. Тут явно что то с SSL - может явно как то Ваши сертификаты надо подсовывать 1С. но откуда их брать или...во общем помоги пожалуйста.
Ответ

Добрый день! Какую ошибку вы получаете (HTTP-код и текст ошибки)?

1С возвращает ошибку "Ошибка работы с Интернет: Ошибка инициализации SSL-соединения", т.е. при вызове метода POST

Попробуйте так:
ssl = Новый ЗащищенноеСоединениеOpenSSL( Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто), Новый СертификатыУдостоверяющихЦентровWindows()); Соединение = Новый HTTPСоединение("dadata.ru",,,,,,ssl);
И еще: вы используете прокси-сервер? Если да, попробуйте отключить его.

И с прокси и без прокси и различные варианты ЗащищенноеСоединениеOpenSSL и даже то, что Вы предложили) Может явно надо подсовывать Ваш сертификат, т.е. Новый СертификатКлиентаWindows(вашсертификат.pem)

Еще уточните, пожалуйста:
- Версия платформы 1С?
- Код подключения к API выполняется на сервере 1C или на клиенте?

на клиенте все прекрасно работает - по крайней мере сбоев не замечено, но задача запуститься на сервере)

Вот что удалось выяснить.
1. Документация 1С явно говорит о том, что сертификат клиента и сертификат удостоверяющего центра в простых случаях не требуются:
Создает защищенное соединение OpenSSL, использующего указанные источники клиентского сертификата и сертификатов удостоверяющих центров.
Если не указывается источник сертификатов удостоверяющих центров, то сертификат сервера не проверяется.
Если не указывается источник клиентского сертификата, то соединение возможно только с серверами, не требующими предоставления клиентского сертификата.
Это как раз наш случай: Дадата не требует клиентского сертификата.
2. Ваш код на моем тестовом сервере 1С работает без проблем.
3. Как вы пишете, у вас код тоже сначала работает, а ошибки начинают сыпаться через некоторое время.
В результате моя единственная гипотеза на сегодня — проблема в прокси-сервере или сетевых настройках, которые ваш сервер 1С использует для выхода в интернет. «Нечто» между сервером 1С и сервером Дадаты (ОС / прокси / маршрутизатор) через некоторое время перестает корректно обрабатывать исходящие соединения.
Как это можно проверить:
- Убедиться, что сервер 1С работает без использования прокси.
- Попробовать делать вызовы других сервисов, работающих через HTTPS (например, Яндекс), в течение длительного времени. Ошибка должна повториться.
- Попробовать работать с Дадатой по HTTP вместо HTTPS.
Сервис поддержки клиентов работает на платформе UserEcho
Вот что удалось выяснить.
1. Документация 1С явно говорит о том, что сертификат клиента и сертификат удостоверяющего центра в простых случаях не требуются:
Это как раз наш случай: Дадата не требует клиентского сертификата.
2. Ваш код на моем тестовом сервере 1С работает без проблем.
3. Как вы пишете, у вас код тоже сначала работает, а ошибки начинают сыпаться через некоторое время.
В результате моя единственная гипотеза на сегодня — проблема в прокси-сервере или сетевых настройках, которые ваш сервер 1С использует для выхода в интернет. «Нечто» между сервером 1С и сервером Дадаты (ОС / прокси / маршрутизатор) через некоторое время перестает корректно обрабатывать исходящие соединения.
Как это можно проверить: