Как настроить безопасный SSL-обмен между старой УТ 10.3 и сайтом на Битрикс

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Современные требования к безопасности веб-ресурсов диктуют жесткие правила: практически все интернет-магазины сегодня работают исключительно по защищенному протоколу HTTPS (SSL). Однако владельцы старых, сильно доработанных и снятых с поддержки конфигураций 1С:Управление торговлей 10.3 часто сталкиваются с непреодолимым препятствием при попытке настроить обмен данными. Старые механизмы платформы и встроенные модули интеграции «из коробки» не умеют корректно работать с защищенными соединениями.

Обновление всей конфигурации до актуального релиза или накат нового модуля интеграции от «1С-Битрикс» часто оказываются невозможными из-за огромного объема кастомного кода и высокой стоимости таких работ. В этой статье мы подробно разберем, как решить проблему обмена по протоколу HTTPS без глобального обновления системы.

---

Метод 1. Простая замена протокола в настройках обмена (без изменения кода)

Прежде чем приступать к программированию или установке стороннего софта, проверим самый простой и быстрый способ. В некоторых случаях современная версия платформы 1С:Предприятие 8.3 (на которой запускается ваша старая база УТ 10.3) способна самостоятельно обработать SSL-соединение.

Выполним следующие шаги для проверки:

  1. Перейдем в настройки узла обмена с сайтом в вашей 1С.
  2. Найдем поле ввода адреса сайта (URL скрипта обмена).
  3. Вместо привычного протокола http:// вручную пропишем https://. Например: https://ваш_сайт.ru/bitrix/admin/1c_exchange.php.
  4. Укажем стандартный защищенный порт 443 вместо 80 в параметрах соединения (если порт вынесен в отдельное поле).
  5. Запустим тестовую выгрузку.

Если ваша платформа 1С достаточно свежая (например, старше релиза 8.3.10), а SSL-сертификат сайта выдан доверенным центром сертификации, обмен может заработать сразу без каких-либо доработок. Однако, если система выдает ошибку соединения или «Удаленный узел не прошел проверку», переходим к следующим, более надежным методам.

---

Метод 2. Точечная доработка кода 1С (Решение для разработчиков)

Если первый метод не принес результатов, нам потребуется внести минимальные изменения в код, отвечающий за создание интернет-соединения. Поскольку обмен в вашей конфигурации идет через доработанный план обмена, мы найдем место, где инициализируется объект HTTPСоединение.

Обычно этот код располагается в общем модуле, связанном с интеграцией Битрикс (например, Б_ОбменССайтомСервер, Б_ОбщиеПроцедурыИФункцииОбменаССайтом), либо непосредственно в модуле самого плана обмена.

Выясним причину ошибки: в старом коде УТ 10.3 соединение создается без указания параметров безопасности:

Соединение = Новый HTTPСоединение(Сервер, Порт, Пользователь, Пароль, Прокси);

Чтобы заставить платформу использовать шифрование SSL, нам необходимо передать в конструктор специальный объект защищенного соединения. Модифицируем этот участок кода следующим образом:


// 1. Создаем объект защищенного соединения с использованием системных сертификатов Windows
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(), 
    Новый СертификатыУдостоверяющихЦентровWindows()
);

// 2. Передаем этот объект седьмым параметром в конструктор HTTPСоединения, принудительно указав порт 443
Соединение = Новый HTTPСоединение(
    Сервер, 
    443, // Порт для HTTPS
    ИмяПользователя, 
    Пароль, 
    Прокси, 
    Таймаут, 
    ЗащищенноеСоединение
);

После внесения этих изменений платформа будет использовать встроенную библиотеку OpenSSL для шифрования трафика при обмене с сайтом.

---

Метод 3. Использование локального SSL-прокси Stunnel (Решение без изменения кода)

Рассмотрим ситуацию, когда конфигурация базы 1С полностью закрыта для изменений, находится на строгой поддержке, или в штате просто нет программиста. В этом случае идеальным выходом будет использование бесплатной утилиты-посредника stunnel.

Эта программа берет на себя всю работу по шифрованию данных. Она принимает обычный HTTP-трафик от вашей 1С на локальном компьютере, шифрует его в SSL и отправляет на сервер вашего сайта.

Проанализируем пошагово процесс настройки этой схемы:

  1. Скачаем и установим программу stunnel на компьютер или сервер, с которого запускается сеанс обмена 1С.
  2. Откроем для редактирования конфигурационный файл stunnel.conf (его можно найти в папке установленной программы).
  3. Полностью очистим его содержимое или допишем в конец файла следующие строки конфигурации:

[bitrix-exchange]
client = yes
accept = 127.0.0.1:8080
connect = ваш_домен_сайта.ru:443
  1. Запустим службу или приложение stunnel. Теперь утилита слушает локальный порт 8080.
  2. В настройках узла обмена 1С:Управление торговлей заменим адрес сайта на локальный:
    http://127.0.0.1:8080/bitrix/admin/1c_exchange.php.

Как это работает на практике: Наша старая 1С отправляет незашифрованные данные на локальный адрес 127.0.0.1:8080 по стандартному протоколу HTTP. Программа stunnel мгновенно перехватывает этот трафик, "одевает" его в защищенную SSL-оболочку и перенаправляет на реальный сервер вашего сайта по защищенному порту 443. Для сайта это выглядит как стандартное безопасное соединение, а для 1С — как простой локальный обмен.

---

Решение частой проблемы: Ошибка «Удаленный узел не прошел проверку»

При использовании Метода 1 или Метода 2 программисты часто сталкиваются со следующей системной ошибкой платформы: Ошибка работы с Интернет: Удаленный узел не прошел проверку. Это происходит потому, что платформа 1С (особенно старых релизов) не доверяет центру сертификации, который выдал SSL-сертификат вашему сайту (например, очень популярному бесплатному сертификату Let's Encrypt).

Разберем два эффективных способа устранения этой проблемы:

Способ А. Обновление корневых сертификатов внутри платформы 1С

В каталоге установки вашей платформы (например, C:\Program Files\1cv8\8.3.10.2650\bin\) хранится специальный файл-хранилище доверенных сертификатов cacert.pem. Если этот файл устарел, 1С не сможет подтвердить подлинность современного сертификата вашего сайта.

  1. Найдем файл cacert.pem в папке bin вашей версии платформы.
  2. Скачаем актуальный файл корневых сертификатов (например, с официального сайта curl).
  3. Заменим старый файл cacert.pem на новый (предварительно сделав резервную копию старого файла).
  4. Перезапустим агент сервера 1С (если обмен выполняется в клиент-серверном варианте на стороне сервера) или перезапустим клиентское приложение (если обмен идет в файловом режиме).

Способ Б. Проверка и настройка цепочки SSL-сертификатов на веб-сервере

В отличие от веб-браузеров, которые умеют самостоятельно «достраивать» недостающие звенья цепочки сертификатов безопасности, платформа 1С крайне чувствительна к правильности настройки SSL на самом сервере сайта. Если на стороне веб-сервера (Nginx или Apache) прописан только основной сертификат домена без промежуточных сертификатов цепочки, 1С всегда будет выдавать ошибку проверки.

Проанализируем конфигурацию вашего веб-сервера:

Применяя данные подходы, мы сможем гарантировать стабильный, защищенный и бесперебойный обмен данными между устаревшей учетной системой 1С:Управление торговлей 10.3 и современным сайтом под управлением «1С-Битрикс».

← На главную