User Tools

Site Tools


сервис_openfire

This is an old revision of the document!


Сервис OpenFire

Настройка DNS

Актуально, когда xmpp.domain совпадает с DNS доменном, а запись A для домена не указывает на сервер xmpp (в общем, всегда, особенно с учетом, что сертификат выписывается на домен)

$ nslookup -q=SRV _xmpp-client._tcp.corpX.un
...
_xmpp-client._tcp.corpX.un     service = 0 0 5222 server.corpX.un.

Установка

Debian/Ubuntu

# 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

  • Не открывает окно чата при получении сообщения
# wget http://gate.isp.un/unix/Openfire/spark_2_9_4.deb

# wget http://val.bmstu.ru/unix/Openfire/spark_2_9_4.deb

$ /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"   !!!При тестировании "сбрасывается" надо опять заполнить

OpenLDAP

Host: server.corpX.un
Port: 389
Base DN: ou=users,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 bob!" | sendxmpp -s hello user1@corp13.un

Установка c Asterisk-IM

Создание базы данных

  • !!! 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

ubuntu14# wget http://val.bmstu.ru/unix/Openfire/openfire_3.9.1_all.deb

ubuntu14# dpkg -i openfire*.deb

Подготовка Asterisk

Конфигурация 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 не заработало.

Microsoft AD

C:\>ktpass -princ xmpp/gate.corpX.un@CORPX.UN -mapuser gatexmpp -pass 'Pa$$w0rd' -out gatexmpp.keytab

для openfire 3
C:\>ktpass -princ xmpp/corp15.un@CORP15.UN -mapuser xmpp -pass 'Pa$$w0rd' -out xmpp.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

Настройка сервиса

# 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

Дополнительные материалы

Отключение TLS

  • Требуется для подключения клиентов к серверу по hostname отличном от домена, а так же, для демонстрации Thunderbird (не желает подключатся при само подписанном сертификате)
Server Settings->
  Client Connections ->
    Plain-text (with STARTTLS) connections ... 
      Advanced configuration...->
        STARTTLS policy: 
          Disabled - Encryption is not allowed.

Openfire3 Ubuntu14 без openjdk-7-jre

# rcsdiff /etc/init.d/openfire
diff -r1.1 /etc/init.d/openfire
29d28
<               /usr/lib/jvm/java-7-openjdk-amd64 \
root@server.corpX.un:~# apt-get autoremove
сервис_openfire.1617643535.txt.gz · Last modified: 2021/04/05 20:25 by val