«Ошибка работы с Интернет» в 1С: причины и решение
Платформа не смогла выполнить HTTP-запрос к внешнему серверу. После двоеточия указана техническая причина: не найден адрес, не удалось подключиться, истёк таймаут или не прошла проверка SSL-сертификата.
Текст ошибки
Причины
- Нет доступа в интернет или имя сервера не разрешается DNS
- Подключение блокирует брандмауэр, антивирус или прокси-сервер
- Сервер не ответил за отведённое время
- Не проходит проверка SSL-сертификата сервера, в том числе выданного российским удостоверяющим центром
- Устаревшая версия платформы не поддерживает нужные протоколы TLS
- Сервис временно недоступен или изменил адрес
Для пользователя
- Проверьте, открывается ли интернет в браузере на этом же компьютере.
- Если в организации используется прокси, проверьте настройки прокси в программе. В типовых конфигурациях они находятся в разделе «Администрирование», в параметрах подключения к интернету.
- Попробуйте позже: сервис мог быть временно недоступен.
- Если ошибка про сертификат, установите в Windows корневые сертификаты удостоверяющего центра, которым подписан сертификат сайта, в том числе сертификаты российского удостоверяющего центра, если сервис их использует.
- Обновите платформу: новые версии лучше поддерживают современные протоколы и алгоритмы шифрования.
Расшифровка частых причин
- Couldn't resolve host name — не найден адрес сервера. Проверьте адрес и DNS.
- Couldn't connect to server — сервер не принимает соединение: неправильный порт, блокировка, сервис недоступен.
- Timeout was reached — сервер не ответил вовремя. Увеличьте таймаут или проверьте сеть.
- SSL connect error, сообщения о проверке сертификата — ошибка установки защищённого соединения.
Для разработчика
Для HTTPS передавайте объект защищённого соединения. Чтобы использовать сертификаты, установленные в Windows, а не только встроенный набор платформы, передайте сертификаты удостоверяющих центров ОС:
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(,
Новый СертификатыУдостоверяющихЦентровОС);
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , ,
30, ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос("/v1/status");
Попытка
Ответ = Соединение.Получить(Запрос);
Исключение
ЗаписьЖурналаРегистрации("Интеграция", УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
Шестой параметр конструктора — таймаут в секундах. Если его не задать, запрос может ждать слишком долго или, наоборот, обрываться на медленном сервисе.
Прокси
Прокси = Новый ИнтернетПрокси;
Прокси.Установить("https", "proxy.local", 3128, "user", "password");
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , Прокси, 30,
Новый ЗащищенноеСоединениеOpenSSL);
Где выполняется запрос
Серверный код в клиент-серверной базе ходит в интернет с сервера 1С. Доступ, прокси и сертификаты нужно проверять на сервере и для учётной записи, под которой работает служба 1С, а не на компьютере пользователя.
Частые вопросы
В браузере сайт открывается, а 1С пишет ошибку. Почему?
Браузер может использовать собственные настройки прокси и сертификатов. Кроме того, серверный код 1С выполняется на сервере, где доступа может не быть. Проверьте настройки прокси в 1С и доступ с сервера.
Как исправить ошибку проверки сертификата?
Установите корневой сертификат удостоверяющего центра в хранилище Windows и используйте в коде СертификатыУдостоверяющихЦентровОС. Также обновите платформу до актуальной версии.