Почему веб-клиент 1С на Linux (РедОС) не видит аппаратный USB-ключ (HASP), а тонкий клиент видит?

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

Рассмотрим распространенную ситуацию: на сервере под управлением ОС Linux (в данном случае РедОС) опубликована файловая база 1С через веб-сервер Apache. Для тех, кто только планирует развертывание системы, может быть полезен сценарий python для автоматизации установки 1С и PostgreSQL, позволяющий быстро подготовить окружение. В сам сервер вставлен аппаратный USB-ключ лицензии HASP. При этом локальный запуск тонкого клиента проходит успешно — лицензия подхватывается. Однако при попытке открыть базу через браузер (веб-клиент), даже с самого сервера, система сообщает об отсутствии лицензии. Выясним, почему так происходит и как это исправить.

Шаг 1. Диагностика и локализация проблемы

Перед тем как углубляться в настройки, важно убедиться, что проблема не связана со сложными сетевыми конфигурациями или отсутствием необходимых библиотек. Например, стоит заранее изучить особенности настройки Astra Linux с установкой зависимостей, так как нехватка пакетов в отечественных дистрибутивах часто становится камнем преткновения. В исходной ситуации использовалась схема с "прокладкой" в виде другого компьютера с 1С:Линк. Чтобы исключить лишние переменные, проведем тест в максимально простой среде.

  1. Откройте браузер непосредственно на сервере с РедОС, где установлена 1С, веб-сервер и вставлен ключ.
  2. В адресной строке введите локальный адрес опубликованной базы, например, http://127.0.0.1/basename или http://localhost/basename (где basename — имя вашей публикации).

Если даже при таком локальном подключении веб-клиент не видит лицензию, значит, проблема именно во взаимодействии веб-сервера Apache и драйвера ключа HASP на одной машине. Сеть и другие компьютеры здесь ни при чем. Подобная локализация — важная часть построения защищенной IT инфраструктуры малого предприятия на базе Linux.

Шаг 2. Анализ причин: разница в правах доступа

Ключ к пониманию проблемы лежит в том, от имени какого пользователя запускаются разные приложения.

Когда вы подключаетесь через веб-клиент, за получение лицензии отвечает не сам клиент в браузере, а модуль расширения веб-сервера 1С на сервере. Этот модуль выполняется в рамках процесса Apache и наследует все его ограничения в правах. Именно поэтому он не может "увидеть" USB-ключ, который легко видит тонкий клиент, запущенный с более высокими привилегиями. В некоторых случаях администраторы также настраивают дополнительные уровни защиты, такие как публикация сервиса с использованием клиентского SSL сертификата, что еще сильнее ограничивает несанкционированный доступ.

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

Шаг 3. Решение: предоставляем веб-серверу доступ к ключу через правила udev

Чтобы разрешить процессу Apache обращаться к USB-ключу, нужно настроить для этого устройства специальные права на уровне операционной системы. Если же вы решите вовсе отказаться от аппаратных ключей, рекомендуем изучить установку комьюнити-лицензии разработчика на сервер 1С, которая настраивается программно. Однако для USB-ключа в Linux за права доступа отвечает подсистема udev. Разберем настройку по шагам.

  1. Определяем идентификаторы ключа

    Подключите ключ к серверу и выполните в терминале команду lsusb. Вы увидите список всех подключенных USB-устройств. Найдите в нем ваш ключ, он обычно определяется как "Aladdin" или "SafeNet".

    Пример вывода:

    Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06

    Здесь нам важны два параметра: idVendor=0529 и idProduct=0001. Запишите их.

  2. Создаем файл правил udev

    В директории /etc/udev/rules.d/ нужно создать новый файл правил. Назовем его, например, 99-hasp.rules. Для создания и редактирования файла потребуются права суперпользователя (sudo).

    sudo nano /etc/udev/rules.d/99-hasp.rules
  3. Заполняем файл правил

    В открывшийся файл добавьте одну строку, подставив свои `idVendor` и `idProduct` из первого шага:

    SUBSYSTEM=="usb", ATTR{idVendor}=="0529", ATTR{idProduct}=="0001", MODE="0666"

    Разберем, что означает эта строка:

    • SUBSYSTEM=="usb" — правило применяется к устройствам на шине USB.
    • ATTR{idVendor}=="0529", ATTR{idProduct}=="0001" — правило сработает только для устройства с нашими идентификаторами.
    • MODE="0666" — это самое важное. Данный параметр устанавливает права доступа к файлу устройства: чтение и запись для всех пользователей в системе, включая системного пользователя Apache.

    Сохраните файл и закройте редактор.

  4. Применяем новые правила

    Чтобы система перечитала правила и применила их, выполните в терминале следующие команды:

    sudo udevadm control --reload-rules sudo udevadm trigger

    Как более простой, но и более долгий вариант, можно просто перезагрузить сервер.

После выполнения этих шагов процесс Apache получит необходимые права для доступа к USB-ключу, и модуль расширения 1С сможет успешно получить лицензию для веб-клиента. Попробуйте снова открыть базу в браузере — проблема должна быть решена.

← На главную