Сегодня для более эффективной организации совместной работы сотрудников все чаще используют системы мгновенного обмена сообщениями. В статье рассмотрим, как установить и настроить Jabber сервер OpenFire.
После знакомства со списком, приведенным по ссылке [http://www.jabber.org/software/servers.shtml], особенно со столбцами “Feature Score” и License=Gnu GPL, из всех присутствующих можно отобрать лишь несколько. Особо выделяется проект OpenFire (ранее – Wildfire), который позиционируется как открытая альтернатива проприетарным серверам мгновенных сообщений масштаба предприятия. Написан на Java, по-моему сегодня использование этого языка уже не должно ни кого пугать. Но зато его можно установить в любой системе, для которой доступен Java Runtime Environment (AIX, *BSD, HP-UX, Linux, MacOS X, Solaris, Windows). Для сохранения различных настроек и профилей можно использовать как внутреннюю базу данных HSQLDB, так и внешнюю. В качестве последних поддерживаются: MySQL, Postgres, Microsoft SQL Server, Oracle, IBM DB2. Для работы с ними понадобится JDBC драйвер. OpenFire очень прост в настройке, все операции осуществляются через понятный веб-интерфейс, который хотя и не локализован, но разобраться с ним будет просто. Тем более он предназначен исключительно для административных целей, а любой админ так или иначе должен владеть базовым английским. В установке по умолчанию OpenFire имеет большое количество возможностей, среди которых управление списком пользователей и отображение списка пользователей на клиентах, отправление сообщений пользователям которые на данный момент отключены, поиск пользователей, а остальное (Asterisk, широковещательные сообщения, IM шлюз, контент фильтр и прочее) реализуется посредством плагинов. Поддерживает работу по протоколам SSL/TLS. Опционально сервер способен использовать существующую систему авторизации предприятия на основе LDAP. Как и большинство подобных решений OpenFire легко интегрируется в сеть серверов Jabber. Сервер выходит под двойной лицензией – Open Source GPL и коммерческий вариант. Все плагины кроме двух: Spark Fastpath Webchat (веб-чат) и Wildfire Enterprise (графики, контроль версий клиентов, архивирование) доступны под лицензией GPL. Для тестирования коммерческих плагинов, необходимо вначале получить тестовый ключ, который даст возможность полноценно погонять его в течение 30 дней.
Перед началом установки OpenFire следует инсталлировать пакеты sun-java6-jre. И планируется использовать внешний сервер базы данных, то и его. Тестовая установка производилась на Ubuntu 7.04 в качестве БД – MySQL. Для других дистрибутивов все сказанное, кроме особенностей работы менеджеров пакетов, будет действительно.
$ sudo apt-get update
$ sudp apt-get install sun-java6-jre mysql-server
Теперь распаковываем полученный архив в каталог /opt.
$ cd /opt/
$ sudo tar xzvf /home/source/openfire_3_3_0.tar.gz
В результате в каталоге /opt появился подкаталог openfire, в котором содержатся все библиотеки и исполняемые файлы.
Создаем необходимую для работы базу данных
$ sudo mysqladmin –user=root –password=db_passwd create jabber
$ cat ./openfire/resources/database/openfire_mysql.sql | mysql –user=root –password=db_passwd –database=jabber
В указанном каталоге находятся файлы и для остальных баз данных поддерживаемых OpenFire.
Запускаем сервер (привилегий администратора не требуется):
$ cd openfire/bin
$ ./openfire
testing JVM in /usr …
Usage: ./openfire {start|stop|status}
$ ./openfire start
Теперь набираем в браузере http://localhost:9090/ и переходим к этапу настройки.
Как уже говорилось выше, сервер очень прост в настройке. Необходимо будет последовательно пройти всего 5 этапов. В начале выбираем язык интерфейса, русского в списке нет, поэтому придется довольствоваться английским. На следующем шаге, в строке Domain указываем имя сервера. По умолчанию используется вывод hostname, хотя можно здесь использовать IP-адрес. В последствии имя можно изменить, после чего понадобится изменение и сертификатов. Здесь же указываем порт, который будет использоваться при администрировании сервера, обычный и с использованием защищенного соединения (по умолчанию соответственно 9090 и 9091).
Следующий шаг позволяет определить какую из баз данных, мы будем использовать для работы.
Самым простым вариантом будет выбор встроенной базы (Embedded DataBase). В этом случае никаких дополнительных настроек далее делать не нужно. Для небольшого количества пользователей, ее производительности вполне хватает. Мы же используем MySQL, поэтому отмечаем «Standard Database Connection» и «жмем» Continue. В следующем окне указываем параметры подключения к базе данных. Для этого в строке Database Driver Presets выбираем тип базы с которой будем работать, в строке Database URL все слова в квадратных скобках подменяем своими значениями (то есть вместо [host-name] пишем адрес сервера на котором расположена база MySQL, а вместо [database-name] пишем имя базы, в нашем случае база называется jabber). То есть если MySQL установлен на том же компьютере, в поле Database URL получается:
jdbc:mysql://localhost:3306/jabber
Далее вводим имя пользователя и пароли и пробуем соединиться с базой данных. Шаг Profile Settings позволит выбрать вариант сохранения информации о пользователях. Это может быть внутренняя база данных, либо LDAP. В последнем случае настраиваем соединение с сервером предоставляющим соответствующие услуги.
И последний шаг настройки, установка пароля администратора. Учетная запись в этом поле пишется с добавлением домена – admin@example.com. По окончании настройки, система предложит нажатием на кнопку «Login to the admin console» зарегистрироваться в консоли администратора. Конфигурация сохраняется в файле /opt/openfire/conf/openfire.xml, если что-то не получилось можно заменить его, взяв версию из архива, либо удалить из него предпоследнюю строку, начинающуюся с <setup>. После чего повторить установку. Сервер теперь готов принимать клиентов, хотя стоит поначалу все-таки обратиться к некоторым настройкам.
Настроек в OpenFire предостаточно, все их описать просто не возможно, скажу только о некоторых. На главной странице, которая будет выведена после регистрации в консоли, будет показана статистика сервера и текущие настройки. Чтобы отредактировать имя сервера, порт подключения сервер-сервер, клиент-сервер и консоли администратора, а также включить или выключить поддержку SSL, следует нажать кнопку Edit Properties в самом низу страницы. Далее выбрав «Language and Time Settings» в «Choose Time Zone» выбираем свой часовой пояс, если он выставлен не правильно (берется из системных настроек). Перейдя в «Email Settings» указываем SMTP сервер и учетные данные, необходимые для отправки почтовых сообщений.
Сервер OpenFire может быть настроен как закрытый, так и в качестве открытого ресурса к которому могут подключаться новые пользователи. По умолчанию он настроен именно так. Если его планируется использовать внутри организации, лучше запретить пользователям, самостоятельно создавать учетные записи. Для этого переходим в «Registration & Login» и установить переключатель в Disabled в поле «Inband Account Registration». Используя переключатель в поле «Anonymous Login» можно разрешить или запретить анонимные подключения к серверу. И, наконец, можно ограничить соединения с сервером только диапазоном определенных адресов, указав их в «Restrict Login» в виде 192.168.1. Переключатель в поле «Change Password» лучше установить в Enabled, тем самым, разрешив пользователям самостоятельно изменять свои пароли. Меню «Conflict Policy» позволяет определить действие сервера, если новый пользователь попробует зайти с именем, которое уже задействовано (протокол это допускает).
Теперь можно зазывать пользователей на новый ресурс, но если выбрана политика запрещающая самостоятельную регистрацию, сначала регистрационные записи нужно будет создать. Для чего переходим в «Users/Groups», выбираем «Create New User» и вводим имя пользователя и пароль. Опционально можно ввести и имя с почтовым адресом. Если создается сразу несколько учетных записей удобнее после заполнения всех параметров нажимать кнопку «Create & Create Another». В этом случае после создания нового пользовательского бюджета появится снова окно настроек, иначе будет показано окно со свойствами учетной записи. Аналогично создаются и группы.
Параметров как видите не много, но если добавить плагин registration, появится новый пункт «Registration Properties» в котором можно активировав соответствующие пункты и затем указать IM контакты и адреса электронной почты на которые будут отсылаться сообщения о новых пользователях, группу по умолчанию в которую будет включен пользователь и приветствие после успешной регистрации.
Здесь же можно разрешить регистрацию через веб-форму, для чего пользователь должен будет зайти по адресу http://server:9090/plugins/registration/sign-up.jsp. Модуль userImportExport позволит экспортировать и импортировать пользователей в XML файл.
Установленные плагины можно найти во вкладке Plugins, где их можно перезапускать, удалять и просматривать информацию о назначении плагина. По умолчанию здесь только один обеспечивающий поиск пользователей, чтобы установить остальные необходимо просто скачать их с сайта проекта и скопировать в подкаталог plugins. После чего их список появится в одноименной вкладке.
Многие пользователи уже имеют ICQ UIN и лишать их часто не имеет смысла, в этом случае необходимо будет настроить транспорт. Устанавливаем плагин gateway, после чего во вкладке Server появится новый пункт «Gateways». Выбираем Setting и устанавливаем флажок напротив ICQ. Нажав ссылку Test, и кнопку Test Connection можно протестировать подключение к выбранному серверу ICQ. В Options-Encoding указываем кодировку проходящих сообщений. По умолчанию использовать шлюз могут все, изменить такой порядок можно выбрав Permissions, где можно указать пользователей или группы которым разрешена работа с шлюзом, либо ручная регистрация в подменю Registrations. Чтобы связаться с корреспондентом через шлюз достаточно указать его UIN в виде uin@jabber_server.com.
После установки сервера OpenFire самостоятельно создаст все необходимые (самоподписанные) сертификаты для используемого домена, их можно просмотреть в Server Certificates. Для организации SSL используется стандартная реализация Java. Ключи и сертификаты сервера сохраняются в стандартном хранилище сертификатов – keystore и используются для подтверждения полномочий. Возможно использование второй пары ключей truststore, с помощью которых проверяется подлинность клиентов.
Если планируется работа через SSL этого мало, необходимо включить соответствующие механизмы сервера. Для чего переходим во вкладку System Properties и используя поле «Add new property» добавляем или включаем следующие параметры:
· xmpp.socket.ssl.active – true;
· xmpp.socket.ssl.port – порт для SSL обычно 5223
· xmpp.socket.ssl.storeType - необязательное поле означающее формат, по умолчанию используется jks;
· xmpp.socket.ssl.keystore – местонахождение файла keystore, если оставить пустым будет использовано значение по умолчанию;
· xmpp.socket.ssl.keypass – пароль к keystore, по умолчанию changeit;
· xmpp.socket.ssl.truststore – расположение файла truststore, относительно корневого каталога, если не планируется его использовать оставьте пустым;
· xmpp.socket.ssl.trustpass – пароль к truststore.
Возможна ситуация когда придется создавать ключи и сертификаты самому, также необходимо обязательно сменить пароль к keystore с changeit, на что-то боле безопасное. Это в принципе просто. Переходим в каталог ключей.
$ cd /opt/openfire/resources/security/
Сначала меняем пароль к keystore.
$ sudo keytool -storepasswd -keystore keystore
Вводим пароль changeit, и затем новый повторив его два раза. Удаляем старые сертификаты.
$ sudo keytool -delete -keystore keystore -alias rsa
$ sudo keytool -delete -keystore keystore -alias dsa
При желании это можно сделать и через веб-интерфейс. Теперь создаем новый сертификат.
$ sudo keytool -genkey -keystore keystore -alias grinder.com
Сначала будет спрошен новый пароль keystore, а затем потребуется ввести некоторую информацию о сервере (организация, город, страна), как это обычно делается при создании любого сертификата. Перейдя по ссылке в Signing Request на странице Server Certificates, можно занести всю информацию в файл, чтобы затем не вводить ее каждый раз. По окончании будет задан вопрос о пароле для доступа к ключу. Можно ввести другой пароль, нажатие на Enter установить такой же пароль как и keystore. Если планируется подпись сертификата сервера сторонней организацией необходимо сгенерировать файл в стандартном формате CSR (Certificate Signing Request).
$ sudo keytool -certreq -keystore keystore -alias grinder.com -file grinder_com.csr
Этот запрос отсылается в любую выбранную службу сертификации. Подписанный сертификат импортируется командой.
$ sudo keytool -import -keystore keystore -alias grinder.com -file signed_ grinder_com.csr
Клиентские сертификаты в truststore импортируются также просто. Сначала меняем пароль (по умолчанию тот же changeit).
$ sudo keytool -storepasswd -keystore truststore
И теперь импортируем сертификат каждого клиента.
$ sudo keytool -import -keystore truststore -alias user1 -file user1_certificate_file
Как видите OpenFire очень прост в установке и настройке. Привести его в рабочее состояние можно всего за пару часов, после чего можно забыть о многих проблемах связанных с использованием ICQ или других внешних сервисов мгновенного обмена сообщениями.
1. Список Jabber серверов – http://www.jabber.org/software/servers.shtml
2. Домашняя страница проекта OpenFire – http://www.igniterealtime.org/projects/openfire
1 Комментарий к Строим Jabber сервер с OpenFire
Август 27th, 2008 | 20:17
[...] мастер настройки сервиса и в дальнейшем работа с OpenFire [...]