Строим Jabber сервер с OpenFire

30 Янв
2008

Статья написана для журнала Системный Администратор

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

 

Проект 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

Перед началом установки 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.

Настройка SSL

После установки сервера 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

Аватар

Linuxoid - все что знаю о Туксе » Архив блога » Elastix – дистрибутив для создания VoIP сервиса

Август 27th, 2008 | 20:17

[...] мастер настройки сервиса и в дальнейшем работа с OpenFire [...]

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

Наверх