Разработка и поддержка интеграции между платформой 1С и веб-сайтами (например, на базе «1С-Битрикс») часто требует детального анализа отправляемых и принимаемых пакетов данных. Если обмен начинает работать некорректно, типовых логов в самой 1С или на стороне CMS может быть недостаточно. В таких ситуациях незаменимым инструментом становится сниффер сетевого трафика Fiddler. Однако просто запустить его на компьютере и сразу увидеть трафик обмена 1С не получится. Давайте разберем по шагам, почему так происходит, и как правильно настроить совместную работу этих систем.
Когда мы запускаем Fiddler, он автоматически регистрирует себя в качестве системного прокси-сервера операционной системы Windows (WinINet). Любые запросы от веб-браузеров начинают проходить через него, и мы сразу видим всю сетевую активность. С платформой 1С ситуация обстоит иначе.
Платформа 1С:Предприятие осуществляет HTTP/HTTPS-запросы напрямую через собственные внутренние механизмы платформы или системные библиотеки, игнорируя настройки системного прокси по умолчанию. Ситуация усложняется, если база работает в клиент-серверном режиме. В этом случае регламентное задание обмена выполняется на стороне сервера 1С в процессе rphost, который запущен от имени служебной учетной записи (например, USR1CV8). Эта учетная запись вообще не знает о том, что в сеансе интерактивного пользователя запущен Fiddler.
Для того чтобы перехватить этот трафик, нам необходимо принудительно указать платформе 1С, что все запросы должны отправляться через прокси-сервер Fiddler. По умолчанию Fiddler слушает локальный порт 8888 по адресу 127.0.0.1.
Если мы используем современную типовую конфигурацию (например, «Управление торговлей», «ERP» или «Комплексная автоматизация»), разработчики уже предусмотрели возможность настройки параметров доступа в интернет прямо из пользовательского интерфейса. Это самый простой и безопасный способ перенаправить трафик обмена.
Рассмотрим пошагово, как выполнить эту настройку:
127.0.0.1. Порт укажем по умолчанию для Fiddler — 8888.Важное примечание для клиент-серверных баз: Если сервер 1С находится на отдельном физическом или виртуальном сервере, а Fiddler запущен на вашем рабочем компьютере, укажите в настройках 1С сетевой IP-адрес вашего рабочего компьютера. При этом в самом Fiddler необходимо разрешить принимать внешние подключения. Для этого перейдем в меню Fiddler: Tools -> Options -> Connections и установим флажок Allow remote computers to connect (Разрешить удаленным компьютерам подключаться). После этого перезапустим Fiddler.
Что делать, если мы работаем в старой конфигурации, самописной системе или настройки прокси в интерфейсе заблокированы? В этом случае мы можем применить глобальную настройку платформы через файл конфигурации inetcfg.xml. Этот метод жестко перенаправит абсолютно весь исходящий интернет-трафик платформы 1С на прокси-сервер.
Выполним следующие шаги:
inetcfg.xml.
<config xmlns="http://v8.1c.ru/8.2/inetcfg">
<proxy port="8888" server="127.0.0.1" bypassOnLocal="true">
<protocols>
<protocol name="http"/>
<protocol name="https"/>
</protocols>
</proxy>
</config>
C:\Program Files\1cv8\conf\. Если база работает в серверном режиме, этот файл необходимо разместить на сервере 1С. Обратите внимание: в параметре server нужно указать IP-адрес той машины, где физически запущен и работает Fiddler.После того как мы перенаправили трафик, мы можем столкнуться с тем, что современный сайт (работающий по протоколу HTTPS) откажется принимать наши запросы, а 1С начнет выдавать критическую ошибку: «Ошибка работы с Интернет: Удаленный узел не прошел проверку». Почему это происходит?
По умолчанию HTTPS-трафик зашифрован. Чтобы Fiddler мог показать нам содержимое XML- или JSON-пакетов, которые 1С отправляет на сайт, он должен расшифровать этот трафик. Для этого в настройках Fiddler включают опцию Decrypt HTTPS traffic (в меню Tools -> Options -> HTTPS). В этот момент Fiddler начинает работать по технологии Man-in-the-Middle (MitM): он перехватывает защищенное соединение и подменяет оригинальный SSL-сертификат сайта своим собственным самоподписанным сертификатом.
Платформа 1С строго следит за безопасностью соединений. Обнаружив, что сертификат сайта подменен неизвестным ей сертификатом Fiddler, система безопасности 1С блокирует соединение. Чтобы решить эту проблему, нам нужно заставить 1С доверять сертификату Fiddler.
Проанализируем процедуру добавления сертификата Fiddler в список доверенных сертификатов платформы 1С:
Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop. На вашем рабочем столе появится файл с именем FiddlerRoot.cer.
-----BEGIN CERTIFICATE-----
... [набор случайных символов base64] ...
-----END CERTIFICATE-----
cacert.pem. Перейдем в каталог установленной платформы 1С. Для актуальных версий платформы путь на сервере или локальном компьютере будет выглядеть так: C:\Program Files\1cv8\[ВерсияПлатформы]\bin\cacert.pem (например, C:\Program Files\1cv8\8.3.22.1709\bin\cacert.pem).cacert.pem в текстовом редакторе с правами Администратора. Прокрутим файл в самый низ, перейдем на новую строку и вставим скопированный ранее текстовый блок сертификата Fiddler. Сохраним файл.Важное предупреждение: Обратите внимание, что файл cacert.pem привязан к конкретной версии платформы 1С. При обновлении платформы (когда у вас появится новая папка с номером версии в каталоге 1cv8) процедуру импорта сертификата в новый файл cacert.pem потребуется повторить.
После выполнения всех настроек перезапустим сеанс 1С (или службу Агент сервера 1С:Предприятия, если настройки выполнялись для сервера) и запустим обмен заново. В окне Fiddler начнут отображаться запросы к вашему сайту. Мы сможем детально изучить заголовки запросов, структуру передаваемых XML-данных, параметры авторизации, а также увидеть точные ответы веб-сервера с кодами ошибок, что позволит быстро локализовать и устранить любые проблемы интеграции.