====== Сервис OpenFire ======
* [[https://ru.wikipedia.org/wiki/XMPP]]
* [[http://www.igniterealtime.org]]
* [[http://www.ibm.com/developerworks/ru/library/l-jabber_01/|Часть 1. Установка и конфигурация Jabber-сервера OpenFire и Jabber-клиента Spark]]
===== Настройка DNS =====
Актуально, когда xmpp.domain совпадает с DNS доменном, а запись A для домена не указывает на сервер xmpp (в общем, всегда, особенно с учетом, что сертификат выписывается на домен)
* [[http://wiki.jrudevels.org/DNS_SRV]]
* [[Финальная настройка DNS сервера]]
$ nslookup -q=SRV _xmpp-client._tcp.corpX.un
...
_xmpp-client._tcp.corpX.un service = 0 0 5222 server.corpX.un.
===== Установка =====
==== Debian/Ubuntu ====
* [[http://ru.man.wikia.com/wiki/Установка_OpenFire_на_Ubuntu_14.04|Установка OpenFire на Ubuntu 14.04]]
* [[http://joelradon.com/installing-openfire-xmpp-server-on-ubuntu-server-16-04-lts/]]
* [[Сервис JRE]]
* [[http://www.igniterealtime.org/downloads/index.jsp]]
# OPENFIRE=openfire_4.6.2_all.deb
# wget -O $OPENFIRE http://www.igniterealtime.org/downloadServlet?filename=openfire/$OPENFIRE
# wget http://val.bmstu.ru/unix/Openfire/$OPENFIRE
# wget http://gate.isp.un/unix/Openfire/openfire_4.6.2_all.deb
# dpkg -i openfire_*_all.deb
===== Подключение и предварительная настройка =====
* Административная (без LDAP) учетка: admin
http://server.corpX.un:9090/
XMPP Domain Name: corpX.un
Server Host Name (FQDN): server.corpX.un
===== Spark =====
==== Windows ====
http://val.bmstu.ru/unix/Openfire/spark_2_9_4-with-jre.exe
http://gate.isp.un/unix/Openfire/spark_2_9_4-with-jre.exe
==== Linux ====
* [[Сервис JRE]]
* Не открывает окно чата при получении сообщения
# wget http://gate.isp.un/unix/Openfire/spark_2_9_4.deb
# wget http://val.bmstu.ru/unix/Openfire/spark_2_9_4.deb
$ unset LANG # Может понадобиться
$ /opt/Spark/Spark &
==== Добавление сертификата УЦ ====
* Для openfire приходится создавать сертификат с альтернативными DNS именами corpX.un и server.corpX.un
* Панель управления->Свойства браузера->Содержание->Сертификаты ... Экспорт в формате Base-64
cmd run as admin
C:\>"C:\Program Files (x86)\Spark\jre\bin\keytool.exe" -import -trustcacerts -keystore "C:\Program Files (x86)\Spark\jre\lib\security\cacerts" -storepass changeit -file C:\Users\student\Documents\corpX-PDC-CA.cer
...
Trust this certificate? [no]: yes
C:\>"C:\Program Files (x86)\Spark\jre\bin\keytool.exe" -list -keystore "C:\Program Files (x86)\Spark\jre\lib\security\cacerts" -storepass changeit -v | find "=corp"
===== Управление учетными записями =====
==== Управление контактами ====
Всех включить в группу 1 и сделать общую адр книгу
Create Group/Edit Group: group1
Contact List (Roster) Sharing
Enter contact list group name: corpX
Enable contact list group sharing
Users of the same group
==== Использование LDAP каталога ====
* Не требует базы mysql
* можно отключать tls)
=== Microsoft AD ====
* Для Samba4 Port: 636 и в Advanced Settings включить Use SSL
Host: server.corpX.un
Port: 389
Base DN: cn="Users",dc="corpX",dc="un" !!!При тестировании "сбрасывается" надо опять заполнить
Administrator DN: cn="Administrator",cn="Users",dc="corpX",dc="un" !!!При тестировании "сбрасывается" надо опять заполнить
Administrator Account: Administrator
=== OpenLDAP ====
Host: server.corpX.un
Port: 389
Base DN: ou=People,dc=corpX,dc=un
Administrator DN: cn=admin,dc=corpX,dc=un
Admin user (Administrator Account): user1 (через Apache Directory Studio задать пароль password1)
===== bash xmpp =====
# apt install sendxmpp
$ cat .sendxmpprc
admin@corp13.un Pa$$w0rd
$ chmod 600 .sendxmpprc
$ echo "Hello Ivan!" | sendxmpp -s Hello user1@corp13.un
===== Установка c Asterisk-IM =====
* [[http://www.ibm.com/developerworks/ru/library/l-jabber_02_02/|Совместное использование OpenFire вместе с Asterisk. Настройка OpenFire]]
* [[https://community.igniterealtime.org/community/support/asterisk-im_support/content|Новости о поддержке плагина]]
* [[https://community.igniterealtime.org/thread/56076|Help save the Asterisk-IM plugin :-)]]
==== Создание базы данных ====
* !!! Asterisk-IM не поддерживается при встроенной (HSQLDB) базе данных, требуется [[Сервис MySQL]]
# mysql
CREATE DATABASE openfire;
GRANT ALL PRIVILEGES ON openfire.* TO "openfire"@"localhost" IDENTIFIED BY "openfire";
FLUSH PRIVILEGES;
quit
==== Установка JRE 6 ====
* поддерживается до openfire_3.9.1, требует java6 i386 (из LTS поддерживается в Ubuntu 14)
ubuntu14# apt install openjdk-6-jre openjdk-7-jre
* в новых версиях Spark, похоже, работает, но не всегда
==== Установка Openfire-3.9.1 ====
* [[http://gdr.geekhood.net/gdrwpl/heavy/]]
* [[http://suse.mes.edu.cu/Utiles/Jabber/Openfire-3.9.1/Plugins/]]
* [[http://val.bmstu.ru/unix/Openfire/]]
ubuntu14# wget http://val.bmstu.ru/unix/Openfire/openfire_3.9.1_all.deb
ubuntu14# dpkg -i openfire*.deb
===== Подготовка Asterisk =====
* [[Сервис Asterisk#Asterisk AMI]]
===== Конфигурация Asterisk-IM =====
Asterisk-IM -> General Settings -> Add Server
Server Name: asterisk
; Server Address: 127.0.0.1
; Server Address: server.corpX.un
Port: 5038
Username: admin
Password: admin
Asterisk Queue Presence: yes
Drop-down device selection: yes
Asterisk Context: default
Default Caller ID: DefaultCID !!! похоже, лучше оставить пустым
Asterisk-IM -> Phone Mappings
Username: user1
Device: SIP/401
Extension: 401
...
===== Kerberos GSSAPI аутентификация =====
!!! Удалось только в AD. С регистрацией принципалов через winbind не заработало.
* [[https://community.igniterealtime.org/docs/DOC-1060|Configuring Openfire for Use with Kerberos]]
* [[https://habrahabr.ru/post/181374/|Установка сервера Openfire на Debian в домене AD2008 с прозрачной авторизацией пользователей]]
==== Microsoft AD ====
C:\>ktpass -princ xmpp/gate.corpX.un@CORPX.UN -mapuser gatexmpp -pass 'Pa$$w0rd' -out gatexmpp.keytab
==== Samba4 ====
server# samba-tool user create gatexmpp
server# samba-tool user setexpiry gatexmpp --noexpiry
server# samba-tool spn add xmpp/gate.corpX.un gatexmpp
server# samba-tool spn list gatexmpp
server# samba-tool domain exportkeytab gatexmpp.keytab --principal=xmpp/gate.corpX.un
==== MIT (пока не удалось) ====
kadmin.local: addprinc -randkey xmpp/gate.corpX.un
kadmin.local: addprinc -e rc4-hmac:normal -randkey xmpp/gate.CORPX.UN
kadmin.local: ktadd -k gatexmpp.keytab xmpp/gate.corpX.un
kadmin.local: ktadd -k gatexmpp.keytab xmpp/gate.CORPX.UN
### kadmin.local: addprinc -randkey xmpp/corpX.un
### kadmin.local: addprinc -e rc4-hmac:normal -randkey xmpp/CORPX.UN
### kadmin.local: ktadd -k xmpp.keytab xmpp/corpX.un
### kadmin.local: ktadd -k xmpp.keytab xmpp/CORPX.UN
Запросы с win клиента не наблюдаются, запросы с lin клиента такие:
root@server.corp13.un:~# tail -f /var/log/auth.log
Oct 5 08:14:30 server krb5kdc[831]: TGS_REQ (6 etypes {18 17 20 19 16 23}) 192.168.13.105: ISSUE: authtime 1664946134, etypes {rep=18 tkt=18 ses=18}, user1@CORP13.UN for xmpp/gate.corp13.un@CORP13.UN
Oct 5 08:14:30 server krb5kdc[831]: AS_REQ (2 etypes {18 17}) 192.168.13.1: NEEDED_PREAUTH: xmpp/gate.corp13.un@CORP13.UN for krbtgt/CORP13.UN@CORP13.UN, Additional pre-authentication required
Oct 5 08:14:31 server krb5kdc[831]: preauth (encrypted_timestamp) verify failure: Preauthentication failed
Oct 5 08:14:31 server krb5kdc[831]: AS_REQ (2 etypes {18 17}) 192.168.13.1: PREAUTH_FAILED: xmpp/gate.corp13.un@CORP13.UN for krbtgt/CORP13.UN@CORP13.UN, Preauthentication failed
==== Настройка сервиса ====
# ktutil
ktutil: rkt gatexmpp.keytab
ktutil: wkt /etc/krb5.keytab
ktutil: quit
# klist -k /etc/krb5.keytab
# chmod +r /etc/krb5.keytab
# cat /etc/openfire/gss.conf
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule
required
storeKey=true
keyTab="/etc/krb5.keytab"
doNotPrompt=true
useKeyTab=true
realm="CORPX.UN"
principal="xmpp/gate.corpX.un@CORPX.UN"
debug=true;
};
В консоле администратора Openfire и в разделе **Server Manager->System Properties** добавляем параметры:
sasl.gssapi.config = /etc/openfire/gss.conf
sasl.mechs = GSSAPI,PLAIN
sasl.realm = CORPX.UN
PLAIN для xmpp модуля в asterisk
# service openfire restart
==== Настройка windows client ====
Из учетной записи локального администратора правим реестр
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Value Name: AllowTGTSessionKey
Value Type: REG_DWORD
Value: 1
===== Отладка =====
# tail -f /var/log/openfire/info.log
===== Дополнительные материалы =====
* [[http://habrahabr.ru/post/137124/|Связываем Active Directory, Asterisk и OpenFire]]
==== Отключение TLS ====
* Требуется для подключения клиентов к серверу по hostname отличном от домена, а так же, для демонстрации Thunderbird (не желает подключатся при само подписанном сертификате)
* [[Thunderbird#Настройка учетной записи XMPP]]
Server Settings->
Client Connections ->
Plain-text (with STARTTLS) connections ...
Advanced configuration...->
STARTTLS policy:
Disabled - Encryption is not allowed.