В практике администрирования систем на базе 1С:Предприятие 8.3 часто возникает специфическая задача: необходимо ограничить сервер 1С в использовании локально установленного аппаратного ключа (USB HASP). Типичный сценарий — когда на сервере активированы программные лицензии, которые должен раздавать сервер, а аппаратный ключ предназначен исключительно для клиентских машин, работающих через HASP License Manager. Рассмотрим подробнее, почему стандартные флаги в настройках не всегда помогают, и разберем по шагам, как правильно настроить такую схему.
Проанализируем ситуацию: многие администраторы пытаются снять флаг «Использовать аппаратную защиту (ключ защиты)» в настройках консоли кластера или параметрах базы. Для управления этими параметрами в разных операционных системах удобно использовать альтернативную консоль администрирования серверов 1С (ras). Однако при поиске клиентской лицензии сервер 1С:Предприятие зачастую игнорирует этот параметр. Выясним причину этого поведения.
Дело в том, что процессы сервера (rmngr, rphost) обращаются к ключу, установленному в тот же физический сервер, напрямую через драйвер (Local API). Параметр UseHwLicenses в файлах конфигурации или настройках запуска эффективно работает для толстого и тонкого клиентов, но менеджер кластера при раздаче лицензий «видит» локальный порт USB на уровне системы. Пока ключ вставлен в сервер, драйвер Sentinel (HASP) предоставляет к нему доступ любому процессу с правами администратора или системной службы.
Рассмотрим важный нюанс, упомянутый в обсуждении. Если ваши программные лицензии (включая комьюнити-лицензии разработчика на сервере 1С) при активации были привязаны к многопользовательскому аппаратному ключу, то любая попытка «спрятать» ключ от сервера приведет к неработоспособности программных лицензий. Проанализируем механизм проверки:
.lic).ID аппаратного HASP.Важно: В таком случае единственный способ изолировать ключ — это выполнить перепривязку программных лицензий к параметрам самого сервера (CPU, материнская плата, BIOS) с использованием резервного пин-кода, и только после этого физически удалять ключ.
Чтобы эффективно управлять лицензиями, разберем по шагам стандартный алгоритм поиска (для версии 8.3), когда клиент подключается к серверной базе:
NetHASP.ini). Если на терминальном сервере стоит HASP LM, клиент может забрать лицензию оттуда.Проблема «перетекания» лицензий (когда со временем сервер начинает выдавать всё больше лицензий с USB-ключа) связана с механизмом кэширования. 1С сохраняет информацию о последнем успешном получении лицензии в файлах 1cv8conn.pfl. Если однажды клиент получил лицензию от сервера, он будет пытаться делать это снова и снова, минуя поиск через HASP LM.
Рассмотрим наиболее эффективные методы блокировки поиска локального ключа сервером.
Это самый надежный способ, если физически сервер только один. Проанализируем шаги:
HASP License Manager.nethasp.ini, запретив поиск ключей по сети (параметр NH_SERVER_ADDR не должен указывать на IP виртуальной машины).Если есть возможность, перенесите ключ на любой другой компьютер в локальной сети. Посмотрим на последовательность действий:
HASP License Manager.nethasp.ini (лежит обычно в C:\Program Files\1cv8\conf) прописываем запрет на вещание (broadcast) и не указываем адрес машины «Б» в списке серверов лицензий.При таком подходе сервер 1С будет «видеть» только свои программные лицензии, а терминальные пользователи будут забирать лицензии напрямую с машины «Б» через свои настройки nethasp.ini. В ситуациях, когда лицензии «зависают», вам может пригодиться специальное WEB приложение для управления сеансами "1С сервера", которое позволяет оперативно завершать лишние процессы.
В ходе обсуждения часто возникает вопрос о контроле за раздачей лицензий. Чтобы понять, кто именно забирает лицензии с аппаратного ключа, включим лог-файл в nhsrv.ini. Разберем пример настройки секции:
[NHS_SERVER]
NHS_USERLIST = enabled
NHS_LOGFILE = C:\Logs\hasp_activity.log
NHS_LOGSIZE = 2048
NHS_LOG_ERROR_EVENTS = enabled
После внесения изменений необходимо перезапустить службу Sentinel LDK License Manager. В указанном файле вы увидите список IP-адресов и идентификаторов сессий, что поможет определить, «подсасывает» ли лицензии сервер 1С или они уходят клиентам.
Чтобы сбросить «привычку» сервера выдавать лицензии с USB, после настройки ограничений рекомендуется очистить файлы параметров соединений. Перед очисткой полезно изучить подробную информацию по рабочему каталогу центрального сервера (srvinfo) и методам его очистки. Проанализируем, где они находятся:
%ProgramData%\1C\1cv8\srvinfo\reg_XXXX\1cv8conn.pfl%AppData%\1C\1cv8\1cv8conn.pflУдаление этих файлов (при остановленной службе 1С) заставит систему инициировать поиск лицензий заново согласно установленным вами приоритетам в nethasp.ini и настройках кластера.
Подведем итог: Заблокировать поиск локального USB-ключа программными методами внутри одной ОС крайне сложно, так как сервер 1С имеет приоритетный доступ к драйверу. Наилучшим решением является либо перепривязка программных лицензий к железу с выносом ключа на другой хост, либо изоляция ключа внутри виртуальной среды.