При работе в распределенных инфраструктурах, особенно когда используются зарубежные серверы (например, шведские серверы в Citrix) и виртуальные машины, пользователи часто сталкиваются с проблемой: 1С, запущенная в терминальной сессии, не видит сертификат электронной подписи (ЭЦП), который физически находится на токене или установлен локально. Попытки администраторов "открыть порты" часто не приводят к успеху, так как работа с криптографией в терминальной среде требует комплексной настройки виртуальных каналов и системных служб.
Разберем подробно, как обеспечить видимость сертификата Контура в 1С при работе через Citrix, какие настройки должны выполнить системные администраторы и почему классический проброс TCP-портов здесь может не помочь.
Проанализируем ситуацию: когда вы работаете в Citrix, ваша 1С фактически запускается на удаленном сервере, а на ваш локальный компьютер передается только "картинка" и данные ввода. Если обработка Контура в 1С требует подписи документа, она ищет криптопровайдер (например, КриптоПро CSP) и контейнер закрытого ключа именно на том сервере, где запущена 1С.
Для того чтобы сервер "увидел" ваш локальный сертификат, используется механизм Smart Card Redirection (перенаправление смарт-карт). Это не проброс порта в привычном понимании (как, например, порт 80 или 443), а использование виртуального канала внутри самого протокола доставки Citrix (ICA/HDX). По умолчанию Citrix использует порты 1494 и 2598. Если сессия уже установлена, значит, эти порты открыты, и дополнительные сетевые порты для "проброса сертификата" обычно не требуются.
Это основной и наиболее правильный способ. Если 1С не видит токен (Рутокен, eToken), системным администраторам необходимо проверить настройки политик в Citrix Studio или через групповые политики (GPO). Рассмотрим шаги настройки:
Allowed (Разрешено).Citrix Workspace app (или Receiver) с поддержкой USB-перенаправления.Важно помнить: если токен физически вставлен в сервер 1С, а вы хотите видеть его в сессии, ситуация меняется. В этом случае сервер должен быть настроен на работу с локальными считывателями в терминальном режиме.
Выясним причину, по которой даже при включенных политиках сертификат может быть недоступен. Криптопровайдеры обращаются к устройствам через системную службу Windows. Разберем, что нужно проверить:
На обоих концах соединения (и на вашем локальном ПК, и на сервере 1С в Швеции) должна быть запущена служба Smart Card (SCardSvr). Если на сервере 1С эта служба отключена или находится в состоянии "Остановлена", 1С никогда не увидит ваш сертификат, даже если он успешно "проброшен" протоколом Citrix.
Рекомендуем установить тип запуска этой службы в значение Автоматически. Также на сервере 1С в настройках КриптоПро CSP на вкладке "Оборудование" должен быть добавлен считыватель "Все смарт-карты" или "Все подключенные считыватели".
Если администраторы не могут настроить проброс через Citrix из-за политик безопасности, проанализируем альтернативный вариант — копирование контейнера закрытого ключа непосредственно на сервер 1С. Это часто называют "крайним вариантом", но он является самым стабильным.
Если ваш сертификат позволяет экспорт (не установлен флаг запрета экспорта при генерации в УЦ), вы можете:
КриптоПро CSP скопировать контейнер с Рутокена в реестр локального компьютера.Контейнеры в реестре обычно находятся по пути:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\<SID>\Keys\
Внимание: при использовании этого метода физический токен больше не потребуется, но необходимо обеспечить строгую безопасность сервера, так как закрытый ключ будет храниться в его реестре.
В некоторых случаях обработка Контура в 1С взаимодействует не напрямую с криптопровайдером, а через вспомогательные службы, такие как Контур.Плагин. Если системные администраторы спрашивают про конкретные порты, возможно, речь идет о взаимодействии локальных компонентов внутри сервера.
Проанализируем стандартные порты, которые могут потребоваться:
Контур.Плагина. Эти порты должны быть открыты во внутреннем брандмауэре сервера (Firewall) для входящих и исходящих соединений по адресу 127.0.0.1 (loopback).Если обработка Контура в 1С пытается вызвать плагин, установленный на вашем локальном ПК, через терминальную сессию — это практически неосуществимо без использования специальных средств "обратного проброса" портов. В такой ситуации единственный надежный путь — установка всех необходимых компонентов (КриптоПро, Контур.Плагин, сертификат) непосредственно на тот сервер, где исполняется код 1С.
Подведем итог для передачи технического задания админам:
SCardSvr на целевом сервере 1С.КриптоПро CSP, убедитесь, что в настройках (вкладка "Оборудование") установлена возможность работы с удаленными считывателями (PC/SC).12222-12224 внутри сервера.Рассмотрев все варианты, можно сделать вывод: в 90% случаев проблема решается именно правильной настройкой политик Citrix и службы смарт-карт, а не открытием внешних портов на сетевом оборудовании.