Почему HASP LM не видит ключ защиты 1С:Предприятия и как исправить эту проблему?

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

Мы часто сталкиваемся с ситуацией, когда система лицензирования 1С:Предприятия, основанная на аппаратных ключах HASP, начинает работать некорректно. Одной из самых распространенных проблем является сообщение "HASP LM не видит ключ" или невозможность получения лицензии, хотя ключ физически установлен. Давайте вместе разберем эту непростую ситуацию, выясним причины и найдем эффективные решения. Мы рассмотрим различные сценарии, начиная от базовых проверок и заканчивая тонкими настройками конфигурационных файлов и алгоритмов поиска лицензий.

Общие шаги по диагностике и первичные проверки

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

  1. Проверяем физическое состояние ключа.

    Убедитесь, что аппаратный ключ HASP подключен к USB-порту и на нем горит световой индикатор. Если индикатор не горит, попробуйте переподключить ключ в другой USB-порт или на другой компьютер, чтобы исключить его физическую неисправность.

  2. Статус службы менеджера лицензий.

    На компьютере, куда установлен ключ, должен быть запущен менеджер лицензий. В зависимости от версии, это может быть HASP License Manager (nhsrvice.exe) или Sentinel LDK License Manager (hasplms.exe). Откройте "Службы" Windows и убедитесь, что соответствующая служба запущена и настроена на автоматический запуск. Если служба не запускается или работает некорректно (например, не открывает порты, если установлена как сервис), попробуйте перезагрузить компьютер или временно запустить HASP LM как приложение вместо службы. Иногда, особенно для старых версий HASP LM, служба корректно стартует только после перезагрузки операционной системы.

  3. Проверяем сетевое подключение и IP-адрес.

    Компьютер, на котором установлен ключ и менеджер лицензий, должен иметь статический IP-адрес. Убедитесь, что между компьютером с ключом и клиентскими машинами есть сетевая связность (например, с помощью команды ping).

  4. Брандмауэр и антивирусное ПО.

    Часто причиной проблем являются брандмауэры Windows или сторонние антивирусные программы, которые блокируют сетевые порты, используемые менеджерами лицензий. Мы должны убедиться, что порты 475 UDP (для HASP LM) и 1947 TCP/UDP (для Sentinel LDK License Manager) открыты как на сервере с ключом, так и на клиентских машинах. Для диагностики попробуйте временно отключить брандмауэр и антивирус на обеих сторонах и проверить доступность лицензий.

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

Нам необходимо четко понимать, какие менеджеры лицензий существуют и какие порты они используют, так как путаница в этом вопросе часто приводит к неверным настройкам.

Существуют два основных типа менеджеров лицензий, с которыми может работать 1С:

  1. HASP License Manager (HASP LM).

    Это "классический" менеджер лицензий для аппаратных ключей HASP. Он работает по протоколу UDP на порту 475. Именно этот порт и протокол использует платформа 1С для поиска ключей в сети. Утилита Aladdin Monitor, предназначенная для мониторинга ключей, также работает исключительно по UDP 475.

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

  2. Sentinel LDK License Manager (SLDK LM).

    Это более новая версия менеджера лицензий от Thales (ранее Aladdin/SafeNet). Он включает в себя функциональность старого HASP LM и добавляет поддержку новых типов ключей и возможностей. Веб-интерфейс для управления SLDK LM называется Sentinel Admin Control Center (ACC) и работает по протоколам TCP и UDP на порту 1947. По умолчанию доступ к ACC с удаленных клиентов запрещен, и его необходимо явно разрешить в настройках, если вы планируете мониторить ключи удаленно. Однако, для 1С SLDK LM также поддерживает раздачу лицензий по порту 475, как и старый HASP LM.

    Запомните: ACC можно использовать для мониторинга ключей, но не для настройки того, как 1С будет получать лицензии. 1С работает с менеджерами лицензий через порт 475, а не через веб-интерфейс 1947.

Прошивка ключей и проблемы с драйверами

Несоответствие версий прошивки ключа или устаревшие драйверы могут быть причиной того, что ключ не определяется или не виден.

  1. Устаревшие версии прошивки.

    Некоторые старые ключи HASP имеют микропрошивку версии 2.17 (или 2.16). Такие ключи могут работать в Windows, но не будут отображаться в Sentinel Admin Control Center (ACC). Платформа 1С в Windows может получать лицензии с такого ключа напрямую, минуя менеджеры лицензий, если ключ установлен локально. Если ключ не виден в ACC, это не всегда означает его неработоспособность. Для Linux-систем ключи версии 2.17 могут быть несовместимы и требовать обновления прошивки до 3.25, но в Windows это не всегда критично.

  2. Проблемы с драйверами.

    Драйверы HASP, которые поставляются с платформой 1С, могут быть устаревшими. Также могут возникать проблемы совместимости старых драйверов с новыми версиями Windows. Мы рекомендуем установить актуальную версию драйвера HASP с официального сайта Thales. При установке или удалении драйверов всегда выполняйте действия с правами администратора и, если возникают проблемы, временно отключайте антивирусное ПО.

    Если ключ определяется в диспетчере устройств как "неопознанное USB-устройство" или "HASP 2.17", попробуйте различные версии драйверов. Иногда драйверы от HASP LM версии 8.31 или 8.32 могут подойти лучше, чем те, что идут с платформой.

Алгоритм поиска лицензий 1С и его особенности

Платформа 1С и сервер 1С:Предприятия ищут лицензии по определенному алгоритму. Понимание этого алгоритма критически важно для диагностики.

  1. Последовательность поиска лицензий клиентским приложением:
    1. Последний успешный источник: Клиентское приложение 1С сначала пытается получить лицензию из источника, который использовался при последнем успешном подключении. Это может быть локальный файл программной лицензии или аппаратный ключ.
    2. Локальные программные лицензии: Затем ищутся программные лицензии, установленные непосредственно на локальном компьютере.
    3. Локальный аппаратный ключ HASP: После этого проверяется наличие локально установленного аппаратного ключа HASP. Важно: с локального ключа 1С берет лицензии напрямую, без участия HASP LM или SLDK LM. Порт в этом случае не имеет значения.
    4. Сетевой HASP LM: Только потом клиент обращается к HASP License Manager (или SLDK LM, работающему в режиме совместимости) по сети через порт 475 UDP.
    5. Сервер 1С:Предприятия: Если клиентская база подключена к серверу 1С, и на сервере разрешена раздача лицензий, то сервер может выдать лицензию клиенту.
  2. Последовательность поиска лицензий сервером 1С:Предприятия:

    Сервер 1С также ищет лицензии по схожему алгоритму: сначала из последнего успешного источника, затем локальные программные лицензии, локальные ключи HASP, а потом сетевые ключи HASP через HASP License Manager.

  3. Файл 1cv8conn.pfl и "кеш" лицензий.

    Платформа 1С "запоминает", откуда она последний раз успешно получала лицензию. Эта информация хранится в файле 1cv8conn.pfl. Если вы изменили источник лицензий, но 1С продолжает обращаться к старому, попробуйте удалить (или переименовать/заархивировать) этот файл. Он находится в профиле пользователя (например, C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8\). Это поможет сбросить "кеш" и заставить 1С искать лицензию заново по полному алгоритму.

  4. Сервер 1С и раздача лицензий.

    Если на сервере 1С включена опция "Раздавать лицензии сервером 1С:Предприятия 8", то сервер будет выступать в качестве основного источника лицензий. Он будет пытаться получить лицензии (как программные, так и аппаратные, если ключ установлен на нем локально или доступен через менеджер лицензий) и выдавать их клиентским сеансам. В этом случае клиенты, подключающиеся к серверу, не смогут брать лицензии напрямую от других HASP LM в сети, пока сервер сам не исчерпает свои лицензии или пока эта опция не будет отключена. Мы не можем запретить серверу брать лицензии с локально установленного ключа, если опция раздачи лицензий включена.

Настройка конфигурационных файлов: nhsrv.ini и nethasp.ini

Эти два файла являются ключевыми для настройки сетевого взаимодействия с аппаратными ключами HASP. Давайте рассмотрим их подробно.

Файл nhsrv.ini (для HASP License Manager)

Файл nhsrv.ini используется для настройки самого HASP License Manager (или SLDK LM, когда он работает как HASP LM) и должен располагаться на той машине, где установлен аппаратный ключ и менеджер лицензий. Часто его следует размещать в каталоге C:\Windows\System32 (или C:\Windows\SysWOW64 для 64-битных систем).

Рассмотрим пример содержимого nhsrv.ini:


[NHS_SERVER]
NHS_USERLIST        = 250;  // Максимальное количество пользователей, которым может быть выдана лицензия (не влияет на номинал ключа, только на HASP LM)
NHS_SERVERNAMES     = keys1; // Имя менеджера лицензий. Должно быть уникальным, алфавитно-цифровым (англ. буквы), не длиннее 7 символов.
NHS_HIGHPRIORITY    = no;   // Использовать высокий приоритет для процесса менеджера лицензий

[NHS_IP]
NHS_USE_UDP         = enabled; // Разрешить использование UDP-протокола
NHS_USE_TCP         = enabled; // Разрешить использование TCP-протокола (требует включения NetBIOS over TCP/IP)
NHS_IP_portnum      = 475;     // Порт для раздачи лицензий 1С
NHS_IP_LIMIT        = 172.168.0.50, 172.168.0.52-254, 172.168.3.*; // Ограничение IP-адресов, которым разрешено получать лицензии
                               // Можно указать конкретные IP, диапазоны или подсети.
[NHS_IPX]
NHS_USE_IPX         = disabled; // Отключить использование IPX (устаревший протокол)
NHS_AppendAddr      = no;
NHS_usesap          = enabled;
NHS_ipx_socketnum   = 0x7483;

[NHS_NETBIOS]
NHS_USE_NETBIOS     = disabled; // Отключить использование NetBIOS (устаревший протокол)

Важные моменты:

  1. NHS_IP_LIMIT: Этот параметр позволяет нам ограничить круг IP-адресов, с которых разрешено брать лицензии. Это полезно для безопасности и для того, чтобы "направить" клиентов к определенному ключу. Мы можем указать IP-адреса через запятую, диапазоны (например, 192.168.1.10-192.168.1.20) или целые подсети (192.168.3.*).
  2. NHS_SERVERNAMES: Убедитесь, что имя уникально, если у вас несколько HASP LM в сети.
  3. Порт 475: 1С работает только по 475 порту UDP для сетевых ключей.

Файл nethasp.ini (для клиентов 1С)

Файл nethasp.ini размещается на клиентских машинах и сообщает клиенту 1С, где искать HASP License Manager в сети. Его следует размещать в каталоге установки платформы 1С, например, C:\Program Files (x86)\1cv8\conf или C:\Program Files\1cv8\conf для 64-битной версии.

Рассмотрим пример содержимого nethasp.ini:


[NH_COMMON]
NH_DEFAULT_MODE = NH_TCPIP; // Использовать TCP/IP для поиска

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100, 192.168.1.101; // IP-адреса серверов с HASP LM, разделенные запятыми
NH_USE_BROADCAST = Disabled; // Отключить широковещательный поиск (рекомендуется при указании конкретных IP)
NH_PORT_NUMBER = 475; // Порт для поиска HASP LM

[NH_NETBIOS]
NH_USE_NETBIOS = Disabled; // Отключить NetBIOS

Важные моменты:

  1. NH_SERVER_ADDR: Здесь мы указываем IP-адреса компьютеров, на которых запущен HASP License Manager и воткнуты ключи. Если у вас несколько таких серверов, перечислите их через запятую.
  2. NH_USE_BROADCAST = Disabled: При явном указании IP-адресов в NH_SERVER_ADDR, рекомендуется отключать широковещательный поиск. Это ускоряет процесс поиска лицензий и уменьшает сетевой трафик.

Использование нескольких ключей и конфликты

При наличии нескольких аппаратных ключей HASP в сети или на одной машине могут возникать нюансы.

  1. Несколько ключей на одной машине.

    Важно: любые два клиентских ключа 1С одной серии (например, два ключа ORGL8 на 5 и 10 рабочих мест) бесполезно втыкать в одну машину. Будет работать только один из них. Исключение составляют ключи на 300 и 500 рабочих мест, так как они относятся к другим сериям. Если нам нужно использовать несколько ключей, их следует устанавливать на разные машины, каждая со своим HASP LM.

  2. Сервер 1С и несколько сетевых ключей.

    Сервер 1С:Предприятия может получить клиентскую лицензию только от одного сетевого аппаратного ключа защиты одной серии, обнаруженного через HASP License Manager. Если лицензии с этого ключа исчерпаны, сервер будет искать ключи других серий, но не будет искать другие ключи той же серии.

  3. Разделение ключей.

    Для корректной работы нескольких сетевых ключей, каждый HASP License Manager должен иметь уникальное имя, заданное в параметре NHS_SERVERNAMES файла nhsrv.ini. Это позволяет клиентам и серверу 1С различать источники лицензий.

Специфические сценарии и решения

Давайте рассмотрим несколько распространенных ситуаций, которые часто вызывают сложности, и предложим пути их решения.

Сценарий 1: Клиент берет лицензию с сервера 1С, хотя настроен на HASP LM

Это частая проблема, когда на сервере 1С включена опция "Раздавать лицензии сервером 1С:Предприятия 8", и он сам успешно получает лицензии (например, с программных лицензий или локально установленного ключа). В этом случае сервер 1С имеет приоритет, и клиенты будут брать лицензии от него.

Решение:

  1. Отключить раздачу лицензий сервером.

    Если у вас нет программных лицензий, которые должен раздавать сервер, мы можем отключить опцию "Раздавать лицензии сервером 1С:Предприятия 8" в консоли кластера 1С. Это заставит клиентов искать лицензии самостоятельно, в том числе через HASP LM.

    Внимание: Если на сервере есть программные лицензии, которые он должен раздавать, отключить эту опцию нельзя, иначе программные лицензии также перестанут раздаваться.

  2. Принудительное переключение клиента на локальный ключ (сброс "кеша").

    1С "запоминает" последний успешный источник лицензии. Чтобы сбросить этот "кеш" и принудительно заставить клиент использовать локальный ключ (если он установлен):

    1. Отключите сетевой адаптер на клиентском компьютере (физически или программно).
    2. Запустите 1С с любой файловой базой (можно пустой). Поскольку сеть отключена, 1С не сможет обратиться к серверу или сетевому HASP LM и будет вынуждена обратиться к локально установленному ключу.
    3. Подключите сетевой адаптер обратно. Теперь 1С должна "запомнить" локальный ключ и использовать его в дальнейшем.
    4. Как альтернатива, удалите файл 1cv8conn.pfl, как мы уже обсуждали выше.

Сценарий 2: HASP LM не открывает порты, когда запущен как служба

Иногда, особенно на новых версиях Windows со старыми версиями HASP LM, служба может стартовать, но не открывать необходимые порты, что делает ее бесполезной.

Решение:

  1. Перезагрузите компьютер.

    Для старых версий HASP LM часто требуется полная перезагрузка системы после установки, чтобы служба корректно инициализировалась и открыла порты.

  2. Запустите как приложение.

    Временно попробуйте запустить HASP LM не как службу, а как обычное приложение. Если в этом режиме порты открываются и ключи видны, это указывает на проблему с запуском службы. В таком случае, возможно, потребуется проверить режим совместимости для исполняемого файла nhsrvice.exe или переустановить HASP LM.

Сценарий 3: Клиенты видят ключ броадкастом, но не получают лицензии

Если клиенты "видят" ключ (например, в Aladdin Monitor), но 1С не получает лицензии, это может указывать на проблемы с конфигурацией nhsrv.ini или неправильное понимание алгоритма поиска.

Решение:

  1. Точно пропишите nhsrv.ini.

    Убедитесь, что в файле nhsrv.ini на сервере с ключом корректно указаны параметры NHS_IP_LIMIT, если вы хотите ограничить круг клиентов. Если этот параметр настроен слишком строго, он может блокировать доступ. Также проверьте, что NHS_SERVERNAMES уникален.

  2. Удалите (или переименуйте) nhsrv.ini.

    В некоторых случаях, если nhsrv.ini настроен некорректно, временное удаление этого файла (или его переименование) может позволить HASP LM работать в режиме по умолчанию, что иногда помогает в диагностике.

  3. Проверьте работоспособность ключа локально.

    Отключите компьютер с ключом от сети и запустите 1С локально. Если ключ не работает даже локально, возможно, он неисправен или проблема с драйверами.

Дополнительные рекомендации и заключение

  1. Журнал поиска ключей 1С.

    Используйте "Журнал поиска ключей" в 1С (доступный через "Все функции" -> "Стандартные" -> "Журнал поиска ключей") для анализа того, как происходит поиск лицензий и почему они не находятся. Это дает ценную информацию для диагностики.

  2. Эмуляторы ключей.

    Убедитесь, что в системе полностью отсутствуют следы ранее установленных эмуляторов ключей, так как они могут конфликтовать с настоящими ключами и менеджерами лицензий. Удалите все их компоненты из системы и реестра.

  3. Будущее лицензирования 1С.

    В будущих версиях платформы 1С (начиная с 8.5.2) HASP License Manager будет заменен новым приложением "1С:Предприятие – менеджер лицензий", которое будет раздавать лицензии по TCP и UDP, а также локально через IPC. Это может упростить процесс, но пока мы работаем с текущей реализацией.

Мы рассмотрели основные аспекты проблемы "HASP LM не видит ключ" и предложили комплексные решения. Помните, что диагностика требует системного подхода и последовательной проверки всех возможных причин. Надеемся, что эта подробная инструкция поможет вам успешно настроить систему лицензирования 1С:Предприятия.

← К списку