Ошибка инициализации ssl соединения 1с
Обычно проблема кроется в некорректных настройках "окружения" и проблему надо устранять вне программы "1С".
Чтобы убедиться, что проблема вне "1С", можно проверить есть ли доверие к ресурсу внешнего сервера в обычном Интернет-браузере (лучше в "Internet Explorer"), т.е. выполнить диагностику.
- узнать адрес сервера, с которым устанавливается защищенное соединение (зависит от сервиса, которым пытаетесь воспользоваться);
- правильно определить компьютер, с которого устанавливается защищенное соединение (зависит от режима использования программы "1С") и там открыть Интернет-браузер;
- указать в адресной строке Интернет-браузера адрес сервера и убедиться, что к данном узлу на компьютере есть доверие.
Шаг 1: как найти адрес сервера?
Шаг 2: как определить компьютер, на котором надо открыть Интернет-браузер?
Если программа "1С" используется в одном из следующих режимов(см. форму "Справка"-"О программе"):
2а) режим "Файловый", то соединение с внешним сервером устанавливается с того компьютера, на котором пользователь запускает программу "1С".
Надо на этом компьютере открыть Интернет-браузер (лучше "Internet Explorer);
2б) режим "Серверный", то соединение с внешним сервером устанавливается с того компьютера, на котором запускается служба "Агент сервера 1С:Предприятия 8.х".
Надо зайти на компьютер, где запускается служба «Агент сервера 1С:Предприятия 8.х» под учетной записью пользователя операционной системы, под которым эта служба стартует, и уже там открыть Интернет-браузер (лучше "Internet Explorer").
Шаг 3: как определить, есть или нет доверие к внешнему серверу?
В адресной строке Интернет-браузера следует указать адрес сервера, с которым надо проверить установку соединения, и нажать клавишу "Enter":
Необходимо щелкнуть на "замок" и посмотреть сведения о сертификате:
В открывшемся окне перейти на последнюю закладку и убедиться, что цепочка сертификатов корректная (непрерывная и без каких-либо предупреждающих иконок - Требование №2 ), и статус последнего в цепочке сертификата - "ОК" ( Требование №3 ):
3б) Если на каком-то из шагов диагностики нет доверия к внешнему ресурсу в браузере (нарушено, хотя бы одно из Требований 1, 2, 3) – рекомендуем обратиться в тех.поддержку соответствующего сервиса или банка, чтобы сначала настроить "окружение" и добиться того, что в браузере есть доверие к внешнему ресурсу, а уже затем пробовать повторно подключаться из программы "1С".
Пожалуйста, объясните почему, подскажите как и укажите на ошибки. Вот код подключения к Вашему API:
Соединение = Новый HTTPСоединение("dadata.ru". Новый ИнтернетПрокси,, Новый ЗащищенноеСоединениеOpenSSL);
Проблема в том, что со временем появляется ошибка вида:
То есть запросы могут проходить нормально и получать полноценный ответ, а потом через некоторое время начинают сыпаться ошибки. Подскажите куда смотреть и на что обратить внимание - хотим с Вами интегрироваться, но стабильности получить не удается. Тут явно что то с SSL - может явно как то Ваши сертификаты надо подсовывать 1С. но откуда их брать или. во общем помоги пожалуйста.
Ответ
Вот что удалось выяснить.
1. Документация 1С явно говорит о том, что сертификат клиента и сертификат удостоверяющего центра в простых случаях не требуются:
Создает защищенное соединение OpenSSL, использующего указанные источники клиентского сертификата и сертификатов удостоверяющих центров.
Если не указывается источник сертификатов удостоверяющих центров, то сертификат сервера не проверяется.
Если не указывается источник клиентского сертификата, то соединение возможно только с серверами, не требующими предоставления клиентского сертификата.
Это как раз наш случай: Дадата не требует клиентского сертификата.
2. Ваш код на моем тестовом сервере 1С работает без проблем.
3. Как вы пишете, у вас код тоже сначала работает, а ошибки начинают сыпаться через некоторое время.
В результате моя единственная гипотеза на сегодня — проблема в прокси-сервере или сетевых настройках, которые ваш сервер 1С использует для выхода в интернет. «Нечто» между сервером 1С и сервером Дадаты (ОС / прокси / маршрутизатор) через некоторое время перестает корректно обрабатывать исходящие соединения.
Использование SSL при работе с web-сервисами
Одним из элементов безопасности современного предприятия является использование защищенных каналов связи. Защищенные каналы связи позволяют предотвратить несанкционированный просмотр и изменение данных. Одним из наиболее популярных протоколов, реализующих защищенный канал, является протокол SSL . Данная статья описывает, как можно использовать протокол SSL при работе с web -сервисами "1С:Предприятия".
SSL ( Secure Socket Layer ) - протокол, использующийся для обеспечения защищенного взаимодействия между клиентом и сервером. SSL базируется:
· на в заимной аутентификации клиента и сервера для того, чтобы и клиент, и сервер были уверены в том, что они те, за кого себя выдают;
· цифровых подписях, для обеспечения целостности данных (защиты данных от несанкционированного изменения);
· шифровании, для обеспечения конфиденциальности данных (защиты данных от несанкционированного просмотра).
SSL - протокол поддерживает различные варианты шифров, цифровых подписей, сертификатов и т. д. для того, чтобы наиболее адекватно обеспечить защищенный канал требуемой стойкости.
· у становка алгоритмов шифрования, которые будут использоваться для шифрования и цифровой подписи передаваемых данных;
· установка сессионного ключа;
· аутентификация сервера на клиенте;
· аутентификация клиента на сервере.
SSL - сессия может быть переиспользована между клиентом и сервером.
Для выполнения аутентификации клиента на сервере и сервера на клиенте SSL использует сертификаты. Сертификат является документом, в котором описывается набор параметров того, для кого выполняется аутентификация. Например, сертификат может содержать имя пользователя или имя веб-сайта сервера. Сертификат также имеет цифровую подпись, которая используется для проверки его валидности. Для предотвращения возможности неконтролируемой выдачи сертификатов используются цепочки сертификатов. Началом цепочки сертификатов выступает Центр Сертификации - организация, занимающаяся выдачей сертификатов. Если определенному пользователю требуется сертификат, он посылает запрос в Центр Сертификации на выдачу сертификата. Центр Сертификации выдает готовый сертификат путем подписывания запроса собственным закрытым ключом. Пользователь, которому выдан сертификат, может, в свою очередь, выступать в качестве Центра Сертификации для других пользователей. Т. е. образуется цепочка сертификатов, корнем которой является корневой Центр Сертификации, как правило, общеизвестная организация. Чтобы клиент принял данный сертификат, он должен быть в списке сертификатов, которым доверяет этот клиент. В списке может быть как сам сертификат, так и любой сертификат из цепочки сертификатов данного сертификата. Как правило, это сертификат корневого Центра Сертификации.
Сертификат сервера является валидным, если его цифровая подпись соответствует содержимому сертификата, его дата действия не просрочена и веб-сайт, на который выдан данный сертификат, соответствует веб-сайту сервера. Если сертификат не является валидным, например, веб-сайт сертификата не соответствует веб-сайту сервера, то клиент не сможет взаимодействовать по протоколу SSL с web -сервисами этого сайта.
Чтобы сертификат сервера был принят клиентом, нужно поместить его или сертификат Центра Сертификации, выдавшего данный сертификат сервера, в файл cacert . pem , который находится в каталоге bin "1С:Предприятия". В этом файле перечислены все сертификаты, которым доверяет данный клиент. Файл имеет формат PEM ( Privacy Enhanced Mail ) - текстовый формат, в котором сертификаты закодированы в base 64 последовательности.
Для Apache web -сервера также нужно указать серверный сертификат и признак работы по защищенному каналу. Сертификат может быть получен при помощи утилиты openssl (см. документацию по mod _ ssl ).
у меня вопросы к разработчикам :
1)Есть ли хоть какая-то инструкция для работы с вашим Ветис.Api , хотелось бы видеть к каждому написанному методу вменяемую инструкция http://help.vetrf.ru/wiki/%D0%92%D0%B5%D1%82%D0%B8%D1%81.API, а то получается ни инструкции по подключению Ветис.Api( на php к примеру),ни к 1с
2) Пытаясь получить вменяемый информацию по телефону для интеграции с 1с и вашей платформой , самый классный ответ который я получил "а мы не знаем"
Наша организация не занимается интеграцией шлюза ни с 1С, ни с другими системами. И мы не предоставляем информации о хозяйствующих субъектах, реализующих или реализовавших готовые решения, поскольку это их право - делиться наработанной информацией.
Коллеги, "сырая документация" - понятие относительное. Что конкрентно и на какой странице вас не устраивает?
Егорова Ирина wrote: Здравствуйте!
По опыту других хозяйствующих субъектов можно сказать, что потребуется настроить защищённое HTTP-соединение.
Коллеги, "сырая документация" - понятие относительное. Что конкрентно и на какой странице вас не устраивает?
Почему я только сейчас узнаю что требуется устанавливать защищённое соединение? В вашей "документации" об это ни слова не сказано. Вот поэтому я и пишу что документация у вас никакая, дан самый минимум. Кстати, я спрашивал в техподдержке про защищённое соединение, мне ответили что оно не требуется
Ошибаетесь, вам ответили так: "Если вы пишете интеграцию с 1С, то по опыту других хозсубъектов можно сказать, что требуется. . "
P.S. Могли бы хотя бы создать FAQ в данном разделе по подобным вопросам, а то долго находить крупицы информации по различным темам.
Егорова Ирина wrote:
Ошибаетесь, вам ответили так: "Если вы пишете интеграцию с 1С, то по опыту других хозсубъектов можно сказать, что требуется. . "
smaximaa wrote:
: Ошибка при вызове метода контекста (submitApplicationRequest)
Отправка = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest(apiKey, application);
по причине:
Ошибка вызова операции сервиса: по причине:
Неизвестная ошибка. Ошибка работы с Интернет: Failure when receiving data from the peer
по причине:
Ошибка работы с Интернет: Failure when receiving data from the peer
При передаче запроса серверу выдается ошибка:
: Ошибка при вызове метода контекста (submitApplicationRequest)
Результат = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest( APIKey,SubmitApplicationRequest
по причине:
Ошибка вызова операции сервиса: :ApplicationManagementServiceBindingQSService:submitApplicationRequest()
по причине:
Неизвестная ошибка. Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
по причине:
Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
pchernov wrote: Хочу присоединится к теме.
При передаче запроса серверу выдается ошибка:
: Ошибка при вызове метода контекста (submitApplicationRequest)
Результат = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest( APIKey,SubmitApplicationRequest
по причине:
Ошибка вызова операции сервиса: :ApplicationManagementServiceBindingQSService:submitApplicationRequest()
по причине:
Неизвестная ошибка. Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
по причине:
Ошибка работы с Интернет: Ошибка инициализации SSL-соединения
Вопрос остается открытым требуется сертификат или нет для работы с сервисом? Кто нибудь решил эту проблему?
//Создаём определения веб-сервиса по WSDL-описанию
ОпределенияПодсистемаОбработкиЗаявок = Новый WSОпределения(
"http://api.vetrf.ru/schema/platform/services/ApplicationManagementService_v1.2.wsdl");
//Создаём прокси для обращения к веб-сервису и получение фабрики XDTO
ПроксиПодсистемаОбработкиЗаявок = Новый WSПрокси(
ОпределенияПодсистемаОбработкиЗаявок,
"http://api.vetrf.ru/schema/cdm/application/service",
"ApplicationManagementServiceBindingQSService",
"ApplicationManagementServiceBindingQSPort");
//Создаём объекты XDTO - параметры вызова веб-сервиса
SubmitApplicationRequest = Фабрика.Создать(Фабрика.Тип(
"http://api.vetrf.ru/schema/cdm/application/ws-definitions",
"submitApplicationRequest"));
Application = Фабрика.Создать(Фабрика.Тип(
"http://api.vetrf.ru/schema/cdm/application",
"Application"));
ApplicationDataWrapper = Фабрика.Создать(Фабрика.Тип(
"http://api.vetrf.ru/schema/cdm/application",
"ApplicationDataWrapper"));
//Присваиваем значения свойствам объектам XDTO
SubmitApplicationRequest.apiKey = APIKey;
SubmitApplicationRequest.application = Application;
Application.data = ApplicationDataWrapper;
Application.serviceId = ServiceID;
Application.issuerId = IssuerID;
Application.issueDate = ТекущаяДата();
Возможные решения
1. Проверка даты/времени на ПК
Проверьте корректность через «Панель управления — Часы и регион — Дата и время». Отправьте команду на автоматическую синхронизацию, если вы соединены с сетью Интернет.
2. Проверка доступности
Посмотрите сведения о сертификате. В открывшемся окне перейдите на последнюю закладку и убедитесь, что цепочка сертификатов корректная. Непрерывная и без каких-либо предупреждающих иконок.
Если адрес не открывается — другие распространенные причины:
• доступ заблокирован через файл hosts;
• нет доступа из-за прокси-сервера;
• ресурс блокирован firewall/антивирусом.
3. Отключение проверок
Список ИБ — Выбор базы — Изменить… — Дополнительно… — Далее >
Выберите клиентский сертификат: Не предоставлять
Выберите способ проверки сертификата сервера: Не проверять
Не проверять сертификат сервера
4. Игнорирование ошибки проверки отзыва
В конфигурацию платформы — в файл conf с расширением cfg — добавьте следующую опцию:
Расположение файла:
• C:\Program Files\1cv8\8.х.хх.хххх\bin\conf
• C:\Program Files (x86)\1cv8\8.х.хх.хххх\bin\conf
Данный механизм игнорирует именно ошибки проверки отзыва, а не отменяет проверку отзыва сертификата. Поэтому, если сертификат сервера отозван и это подтверждено, то соединение с таким сервером установлено не будет.
5. Импорт самоподписанного сертификата
Добавьте сертификат сервера на ПК, с которого вы подключаетесь, в список «Локальный компьютер — Доверенные корневые центры сертификации — Сертификаты».
В этом случае поставьте режим «Выберите способ проверки сертификата сервера = Хранилище сертификатов Windows». Или укажите файл сертификатов CA — как удобнее.
6. Диагностика ошибок
Используйте методические рекомендации по диагностике ошибок ОС Windows из официальной статьи 1С.
Если окружение настроено корректно и есть доверие к сертификату удаленного ресурса, то ошибки не будет. Пусть все получится. 🤗
Читайте также: