Почему 1С при работе через веб-сервер IIS не может соединиться с интернет-сервисами и как это исправить

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

Часто системные администраторы и разработчики сталкиваются с ситуацией: база 1С, опубликованная на веб-сервере IIS, отлично работает с документами и справочниками, но при попытке выполнить обмен с внешними ресурсами (например, ВЕТИС, Честный Знак, ЭДО или просто проверка обновлений) возникают ошибки. При этом в обычном файловом режиме или через толстый клиент всё работает корректно. Разберем подробно, почему это происходит и как правильно настроить серверную среду для бесперебойной работы 1С с интернетом.

Выясним причину: почему веб-сервер блокирует запросы

Основная причина кроется в контексте безопасности. Когда мы запускаем 1С как обычное приложение, она работает под правами текущего пользователя Windows. Этот пользователь имеет доступ к своим сертификатам, временным папкам и сетевым настройкам. Однако веб-сервер IIS запускает процессы 1С (через пул приложений) под специальной системной учетной записью, такой как ApplicationPoolIdentity.

У этой учетной записи крайне ограниченные права. Рассмотрим подробнее, чего именно ей не хватает:

  1. Доступ к криптографии: У системного процесса нет доступа к личным сертификатам пользователей (хранилище "Текущий пользователь").
  2. Профиль пользователя: По умолчанию для пула приложений не загружается профиль пользователя, а значит, отсутствуют пути к папкам Temp и веткам реестра HKEY_CURRENT_USER.
  3. Права на запись: Ограничен доступ к папкам платформы 1С и системным временным каталогам Windows.

Способ 1: Быстрое решение через изменение удостоверения пула

Проанализируем самый простой метод, который помогает в большинстве случаев "здесь и сейчас". Этот способ заключается в передаче пулу приложений максимальных прав в системе. Рассмотрим шаги настройки:

  1. Откроем Диспетчер служб IIS.
  2. В дереве соединений выберем раздел Пулы приложений.
  3. Найдем пул, который используется для вашей публикации 1С (обычно это DefaultAppPool, если вы не создавали отдельный).
  4. Нажмем правой кнопкой мыши и выберем пункт Дополнительные параметры.
  5. В разделе "Модель процесса" найдем параметр Удостоверение (Identity).
  6. Нажмем на кнопку с троеточием и в появившемся окне выберем LocalSystem (Локальная система).
  7. Нажмем ОК и выполним перезапуск веб-сервера (команда iisreset в консоли).

Важное предостережение: Использование LocalSystem дает процессу 1С неограниченные права на сервере. С точки зрения безопасности это "плохой тон". Если ваш веб-сервер смотрит в открытый интернет, рекомендуется использовать Способ 2.

Способ 2: Безопасная настройка прав и профиля

Разберем, как сделать работу стабильной, не открывая "дыру" в безопасности сервера. Вместо того чтобы давать права суперпользователя, мы создадим отдельную учетную запись и настроим её окружение.

Шаг 1: Настройка профиля пользователя. В тех же дополнительных параметрах пула приложений найдем параметр Загрузить профиль пользователя (Load User Profile) и установим его в значение True. Это критически важно для работы внешних компонентов 1С и обращения к API государственных сервисов.

Шаг 2: Работа с сертификатами. Если 1С должна работать с ГОСТ-шифрованием (через КриптоПро), выполним следующие действия:

Шаг 3: Права на каталоги. Проверим и добавим права "Изменение" (Modify) для пользователя, под которым работает пул (или для группы IIS_IUSRS), на следующие папки:

Настройка прокси-сервера для системного контекста

Иногда выясняется причина, по которой интернет не работает даже после настройки прав: настройки прокси-сервера в браузере пользователя не действуют на службы IIS. Проанализируем ситуацию, когда интернет "прямой", но система требует явного указания настроек. Для этого воспользуемся командной строкой от имени администратора:

netsh winhttp show proxy

Если команда показывает, что прокси не настроен, а он вам нужен, или наоборот — прокси мешает работе, его можно сбросить или импортировать из настроек браузера Internet Explorer:

netsh winhttp import proxy source=ie

Разрядность пула приложений и внешние компоненты

Посмотрим на технический нюанс разрядности. Многие компоненты для работы с маркировкой или криптографией могут быть 32-битными. Если ваш сервер 64-битный и пул приложений работает в 64-битном режиме, компонента не загрузится. Чтобы это исправить, в дополнительных параметрах пула приложений включите опцию Разрешены 32-разрядные приложения (Enable 32-Bit Applications).

Резюме

Для корректной работы сервисов 1С через веб-сервер IIS необходимо:

  1. Либо перевести пул на LocalSystem (быстро), либо создать выделенного пользователя с загрузкой профиля Load User Profile = True (правильно).
  2. Обеспечить доступ процесса IIS к сертификатам криптографии в хранилище компьютера.
  3. Выдать права на запись в папку Temp и программные каталоги 1С.
  4. Проверить соответствие разрядности пула и используемых драйверов (КриптоПро, внешние компоненты).

Соблюдение этих правил позволит использовать все возможности 1С:Предприятия в режиме веб-клиента без ограничений по взаимодействию с внешним миром.

← На главную