пятница, 22 июня 2012 г.

Не обнаружен ключ защиты программы в 1С:Предприятие 8


Столкнулся на днях с такой проблемой. На одной из машин отказалась работать сетевая версия 1С Предприятие.  При подключении к базе, вываливалась следующая ошибка:
Хочу обратить внимание, что ошибка появилась на компьютере, на котором было 2 сетевые карты с 2мя разными сетями. Почему то сразу значения данному моменту не придал. Видимо, потому что монитор HASP обнаруживал данные ключи отлично, из-за чего искал проблему в 1С. В результате чего убил пол дня рабочего времени. Проблема действительно крылась в двух сетевых картах, а если сказать точнее, 2 разные сети, решение было в файле C:\Program Files\1cv81\bin\conf\nethasp.ini
Отключив сеть, в которой нет ключей HASP, после перезагрузки машины - 1С завелась.... Полез в гугл за решением данной проблемы. Поиск недолго заставил себя ждать, решение следующее:
Начну с маленького ликбеза:
1С:Предприятие 8 используется систему защиты с помощью аппаратных ключей HASP, скачать драйвер, программу мониторинга и службу HASP Loader можно на сайте http://www.aladdin-rd.ru/, а конкретно в разделе поддержки http://www.aladdin-rd.ru/support/downloads/hasp/.

Ключи защиты для 1С подразделяются на:

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

модель HASP HL Basic (синего цвета), данный ключ имеет маркировку H4 M1 ORGL8, не имеет встроенной памяти и персонального ID, не хранит в себе никаких параметров и настроек. Поставляется продуктами имеющими лицензию на одно рабочее место.
Многопользовательский ключ 1С
Сетевой ключ HASP
2. Многопользовательские (ключ находится в сети, 1С может запускаться на любых компьютера в пределах локальной сети или домена)
Сетевые клиентские ключи включают серию HASP HL Net (красного цвета). Имеют внутреннюю память, в которой хранится количество лицензий, и уникальный ID. Существуют разновидности на 5, 10, 20, 50 и 100 пользователей. Имеет маркировку NETXX ORGL8, где ХX - количество лицензий (например NET5 ORGL8). Существуют также ключи на 300 и 500 пользователей которые имеют маркировку NET250+ ORG8A и NET250+ ORG8B. Поставляются с продуктами имеющими лицензию на 5 рабочих мест, а также отдельно, в виде дополнительных клиентских лицензий.
Сервеный ключ HASP
Ключ для Сервера 1С
3. Серверные (обязательно должны физически быть подключены локально к компьютеру, на котором установлен и работает сервер агента 1С Предприятие)
Ключи для сервера 1С Предприятие бывают только локальные32-битная версия имеет ключ защиты HASP HL Pro (фиолетового цвета), который имеет внутреннюю память и уникальный ID. Имеет маркировку ENSR8, поставляется вместе с лицензией на сервер 1С Предприятие.
Для 64-битного сервера используется ключ HASP HL Max (зеленого цвета) с внутренней памятью и уникальным ID. Имеет маркировку EN8SA и поддерживает также 32-битный сервер. Т.е. имея лицензию на 64-битный сервер можно, не меняя ключа, использовать 32-битную версию, но не наоборот.
Для работы однопользовательского и серверного ключа достаточно установить драйвер ключа защиты на локальной машине и вставить ключ защиты в локальный USB порт.
Для многопользовательского (сетевого) ключа защиты необходимо:
1. Установить драйвер ключа защиты на одну из машины в сети, которая будет являться сервером ключа - HASP4_driver_setup.zip
2. Установить сервер (службу) ключа защиты на эту же машину - HASP_LM_setup.zip
3. Вставить ключ защиты в сервер в USB порт
4. Установить 1С на клиентские машины
В общем случае, данных действий для работы 1С достаточно. В процессе запуска и дальнейшей работы 1С:Предприятие 8 на локальных машинах, система будет обращаться с помощью broadcast-запроса по порту 475 и искать ключ защиты. В случае не удачного поиска будет выдано сообщение „не обнаружен ключ защиты программы“ и работы 1С:Предприятие прервется.
Если вы столкнулись с сообщением „не обнаружен ключ защиты программы“ необходимо проверить:
1. наличие ключа защиты в порту usb сервера ключа
2. проверить запущен ли сервер ключа на сервере (процесс с именем „Hasp loader“)
3. проверить командой telnet доступность сервера ключа с локальной машины по порту 475 (например: telnet 192.168.100.100 475)
Если все проверки прошли успешно, но ошибка осталась, переходим к более детальным настройкам. В папке установки 1С:Предприятие 8 (как правило, c:\program files\1cv81\bin\conf или c:\program files\1cv8\bin\) имеет файл nethasp.ini. Это файл настройки ключа защиты, он разбит на секции, нас интересует секция [NH_TCPIP]. При установке 1С, по умолчанию, в данной секции все параметры отделены двойными знаками ";", что означает игнорирование данных настроек. При этом драйвер ключа ведет себя следующим образом:
1. посылается пакет типа broadcast по локальной сети по порту 475 в поисках сервера ключа защиты
2. если ответ не получен — ошибка
Недостатки конфигурации по умолчанию:
1. на broadcast уходит какое-то время
2. не все сервера отвечают на подобные пакеты
3. broadcast какая-никакая, но нагрузка на сеть
Для решения данной проблемы необходимо сделать следующее:
1. укажем конкретный адрес где искать сервер ключа (например: NH_SERVER_ADDR = 192.168.100.100)
2. запретим broadcast поиск (NH_USE_BROADCAST = Disabled)
3. и ограничим типы пакетов только TCP-протоколом (NH_TCPIP_METHOD = TCP)
Как показывает практика, скорость запуска 1С:Предприятие 8 после такой настройки возрастает заметно!
Но есть и кое-какие недостатки данного метода:
необходимо следить за тем, чтобы адрес сервера ключа защиты не изменился, иначе придется на всех локальных машинах перенастраивать файл nethasp.ini!
Хотел бы так же уточнить несколько моментов по работе с ключами, с которыми пришлось сталкиваться при работе:

1. Monitor HASP не показывает ключ

Сам по себе монитор может показать только наличие менеджера лицензий на том или ином адресе. Ключ он сможет увидеть только после того, как защищенное приложение успешно откроет хотя бы одну сессию с ключом. Кроме того, следует учитывать, что Aladdin Monitor работает только по протоколу UDP, порт 475. Таким образом, отсутствие данных о ключе в мониторе еще не означает, что ключ недоступен для приложения.

2. Два ключа защиты 1С HASP на одном компьютере

При установке двух и более ключей защиты программного обеспечения HASP на один компьютер следует учитывать, что:
  • Ключи, имеющие разные серии, будут работать нормально. (по отношению к 1С: 1 серверный и 1 сетевой будут работать нормально)
  • Ключи одной серии будут работать, если такая возможность была реализована разработчиком защищенного ПО. Если же разработчиком данная возможность не была реализована, то ключи, относящиеся к одной серии, не будут работать совместно на одном компьютере, будет виден только один из них: либо ближний к порту (в случае с LPT-ключами), либо размещенный на порту с младшим адресом (в случае с USB-ключами защиты программ HASP). (по отношению к 1С, - 2 локальный или 2 сетевых ключа на одном компьютере работать корректно, скорее всего не будут)
  • не рекомендуется ставить вместе локальный и сетевой ключ, это связано с особенностью защиты 1С Предприятия: находя локальный ключ программа никогда не будет искать сетевой.
Возможные решения данной проблемы:
  • Замена нескольких ключей защиты программ HASP на один, с бОльшим количеством лицензий (об этом хорошо написано тут: http://v8.1c.ru/predpriyatie/questions_licence.htm).
  • Установка ключей защиты на разные компьютеры с последующей установкой и настройкой менеджеров лицензий при каждом ключе.

3. Два и более менеджеров лицензий (License Manager) в сети

При наличии двух и более сетевых ключей не всегда достаточно разнести их по разным компьютерам. Следует выполнить настройку менеджеров лицензий. Каждый менеджер лицензий должен иметь уникальное имя, которое следует явным образом сообщить защищаемой программе. Рекомендуется выполнить аналогичную настройку и в случае использования сервера терминалов, даже при одном сетевом ключе.
На машине где установлен ключ находим файл nhsrv.ini в папке с менеджером лицензий. За имя сервера лицензий отвечает параметр NHS_SERVERNAMES, оно может состоять из латинских букв и цифр и содержать не более 7 символов.
[NHS_SERVER]
 NHS_SERVERNAMES = NAME1
После чего на клиентских машинах желательно отредактировать файл nethasp.ini, явным образом указав адреса и имена менеджеров лицензий:
[NH_COMMON]
 NH_TCPIP = Enabled
[NH_TCPIP]
 NH_SERVER_ADDR = 192.168.0.10, 192.168.0.11
 NH_SERVER_NAME = NAME1, NAME2
Ну вроде все нюансы описал, если чего вспомню, обязательно дополню! Всем пока!

Комментариев нет:

Отправить комментарий