Задача: Настроить OpenFire 4.6.2 на работу через свой самоподписанный сертификат

По умолчанию доступ в панель администрирования возможен, как через URL ссылку:

  • http://IP&DNS:9090
  • https://IP&DNS:9091 — сертификат самоподписанный, но он создался в момент инсталляции. Я же хочу проработать от и до как удалить дефолтное, а создать свой собственный. В последствии если сервис будет выставлен наружу, то заменить его сертификатом от Let“s Encrypted.

Цель: использовать в домашнем окружении, родители, я, родители жены, друзья собственный Jabber сервис для общения минуя интернет, но за исключением, что доступ к сервису будет внутри VPN сети или нет еще не знаю толком, главный принцип только свое.

На заметку: В моей локальной сети дома используется DNS так, что 172.33.33.117 сопоставлен с доменным именем srv-openfire, а суффикс polygon.lan, поэтому я могу к своим сервиса в пределах локальной сети обращаться по имени вида http://<hostname>. Если Вам интересно, как это сделать, то советую посмотреть заметку: "Поднимаем DNS для домашней ЛВС"

Шаг №1: Поднимаю OpenFire на Ubuntu 18.04 Server

ekzorchik@srv-dbionic:~$ ssh -l ekzorchik 172.33.33.117

ekzorchik@srv-openfire:~$ sudo rm -Rf /var/lib/apt/lists

ekzorchik@srv-openfire:~$ sudo apt-get update && sudo apt-get upgrade -y

ekzorchik@srv-openfire:~$ sudo apt-get install -y openjdk-8-jdk

ekzorchik@srv-openfire:~$ sudo update-alternatives --config java

ekzorchik@srv-openfire:~$ java -version

openjdk version "1.8.0_275"

OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)

OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ sudo nano /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"

ekzorchik@srv-openfire:~$ source /etc/environment

ekzorchik@srv-openfire:~$ sudo apt-get install -y mysql-server mysql-client

ekzorchik@srv-openfire:~$ sudo mysqladmin -u root password 712mbddr@

sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user=''"

sudo mysql -u root -p712mbddr@ -e "delete from mysql.user where user='root' and host not in ('localhost','127.0.0.1','::1')"

sudo mysql -u root -p712mbddr@ -e "drop database if exists test"

sudo mysql -u root -p712mbddr@ -e "delete from mysql.db where db='test' or db='test\\_%'"

sudo mysql -u root -p712mbddr@ -e "drop database if exists db_openfire"

sudo mysql -u root -p712mbddr@ -e "create database db_openfire character set utf8 collate utf8_general_ci";

sudo mysql -u root -p712mbddr@ -e "drop user if exists 'us_openfire'@'localhost'"

sudo mysql -u root -p712mbddr@ -e "create user 'us_openfire'@'localhost' identified by '612mbddr@'"

sudo mysql -u root -p712mbddr@ -e "grant all on db_openfire.* to 'us_openfire'@'localhost'";

ekzorchik@srv-openfire:~$ sudo mysql -u us_openfire -p612mbddr@ db_openfire -h 127.0.0.1

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 13

Server version: 5.7.33-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit

Bye

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ wget -c https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.4.4_all.deb -O openfire.deb

ekzorchik@srv-openfire:~$ sudo dpkg -i openfire.deb

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire.service && sudo systemctl status openfire.service | head -n5

● openfire.service - LSB: Start/stop openfire jabber server

Loaded: loaded (/etc/init.d/openfire; generated)

Active: active (running) since Sun 2021-02-07 19:39:16 MSK; 13ms ago

Docs: man:systemd-sysv-generator(8)

Process: 31208 ExecStop=/etc/init.d/openfire stop (code=exited, status=0/SUCCESS)

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ sudo mysql -u root -p712mbddr@ db_openfire -e "source /usr/share/openfire/resources/database/openfire_mysql.sql"

после открываю URL: http://172.33.33.117:9090 и произвожу инсталляцию посредством мастера

  • Choose Language: Русский (ru_RU) и нажимаю Continue

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

  • Доменной имя XMPP: srv-openfire
  • Имя узла сервера (полное доменное имя): srv-openfire
  • Порт консоли администратора: 9090
  • Безопасный порт консоли администратора: 9091
  • Шифрование свойств через: Blowfish
  • Ключ шифрования свойства: 712mbddr@

и нажимаю «Продолжить»

(Настройки базы данных)

  • Выберите способ подключения к базе данных Openfire: выбираю "Стандартное подключение к базе данных"

и нажимаю «Продолжить»

  • Предварительные настройки драйверов базы данных: MySQL
  • Класс драйвера JDBC: com.mysql.cj.jdbc.Driver
  • URL базы данных: jdbc:mysql://127.0.0.1:3306/db_openfire?rewriteBatchedStatements=true&characterEncoding=UTF-8&characterSetResults=UTF-8&serverTimezone=UTC
  • Имя пользователя: us_openfire
  • Пароль: 612mbddr@
  • Minimum Connections: 3
  • Maximum Connections: 100
  • Время ожидания подключения: 1.0 (Days)

и нажимаю «Продолжить»

(Настройки профиля)

  • Выберите пользователя и систему группы для использования с сервером: выбираю "По умолчанию"

и нажимаю «Продолжить»

(Учетная запись администратора)

  • Адрес электронный почты администратора: support@ekzorchik.ru
  • Новый пароль: 712mbddr@
  • Повторите пароль: 712mbddr@

и нажимаю «Продолжить»

УРА! Настройка завершена

нажимаю на «Вход в консоль администратора»

  • Имя пользователя: указываю дефолтный логин, как admin
  • Пароль: указываю который предопределил, как 712mbddr@

и нажимаю «Войти» — вход выполнен успешно

Авторизуюсь в OpenFire 4.4.4

Шаг №2: Произвожу обновление установленной версии OpenFire 4.4.4 на самую последнюю OpenFire 4.6.2 (на момент написания данной заметки) посредством заметки "Как обновить OpenFire 4.4.4 до 4.6.0"

ekzorchik@srv-openfire:~$ wget https://igniterealtime.org/downloadServlet?filename=openfire/openfire_4.6.2_all.deb -O openfire_4.6.2_all.deb

ekzorchik@srv-openfire:~$ sudo dpkg -i openfire_4.6.2_all.deb

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire.service && sudo systemctl status openfire.service | head -n5

● openfire.service - LSB: Start/stop openfire jabber server

Loaded: loaded (/etc/init.d/openfire; generated)

Active: active (running) since Sun 2021-02-07 19:50:30 MSK; 16ms ago

Docs: man:systemd-sysv-generator(8)

Process: 31617 ExecStop=/etc/init.d/openfire stop (code=exited, status=0/SUCCESS)

ekzorchik@srv-openfire:~$

Шаг №3: Отобразить текущие настроенные сертификаты:

ekzorchik@srv-openfire:~$ sudo su -

root@srv-openfire:~# cd /usr/share/openfire/resources/security

root@srv-openfire:/usr/share/openfire/resources/security# keytool --list --keystore keystore

Enter keystore password: дефолтный пароль changeit

Keystore type: jks

Keystore provider: SUN

Your keystore contains 1 entry

srv-openfire.polygon.lan_rsa, Oct 24, 2020, PrivateKeyEntry,

Certificate fingerprint (SHA1): 1A:39:F8:FA:77:27:4C:42:98:B7:69:8F:3B:E4:3B:63:FA:74:5A:B7

Warning:

The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12".

root@srv-openfire:/usr/share/openfire/resources/security#

root@srv-openfire:/usr/share/openfire/resources/security# exit

logout

ekzorchik@srv-openfire:~$

Шаг №4: Изменяю пароль на keystore с дефолтного на свой:

ekzorchik@srv-openfire:~$ sudo su -

root@srv-openfire:~# cd /usr/share/openfire/resources/security

root@srv-openfire:/usr/share/openfire/resources/security# keytool -storepasswd -keystore keystore

Enter keystore password: по умолчанию пароль changeit

New keystore password: ставлю 712mbddr@

Re-enter new keystore password: 712mbddr@

Warning:

The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12".

root@srv-openfire:/usr/share/openfire/resources/security#

root@srv-openfire:/usr/share/openfire/resources/security# keytool -storepasswd -keystore truststore

Enter keystore password: по умолчанию пароль changeit

New keystore password: ставлю 712mbddr@

Re-enter new keystore password: 712mbddr@

root@srv-openfire:/usr/share/openfire/resources/security#

root@srv-openfire:/usr/share/openfire/resources/security# keytool -storepasswd -keystore client.truststore

Enter keystore password: по умолчанию пароль changeit

New keystore password: ставлю 712mbddr@

Re-enter new keystore password: 712mbddr@

Это пароли на настройки в: — изменяю на установленный пароль и нажимаю «Сохранить настройки»

http://IP&DNS:9090 — user&pass — Сервер — Сертификаты TLS/SSL — Хранилища сертификатов

и в трех полях изменяю дефолтный пароль changeit на свой собственный 712mbddr@

после нажимаю «Сохранить настройки»

Изменяю пароль changeit на свой 712mbddr@ для хранилища сертификатов

Шаг №5: Удаляю дефолтный созданный при установке Openfire самоподписанный сертификат:

root@srv-openfire:/usr/share/openfire/resources/security# keytool -delete --keystore keystore

Enter alias name: ввожу srv-openfire_rsa

Enter keystore password: 712mbddr@

root@srv-openfire:/usr/share/openfire/resources/security# keytool --list -keystore keystore

Enter keystore password: 712mbddr@

Keystore type: jks

Keystore provider: SUN

Your keystore contains 0 entries

root@srv-openfire:/usr/share/openfire/resources/security#

Шаг №6: Создаю свой собственный самоподписанный сертификат:

http://IP&DNS:9090 — user&pass — Сервер — Сертификаты TLS/SSL — Хранилища Сертификатов — Управление содержимым хранилища (/usr/share/openfire/resources/security/keystore) — нажимаю «Здесь» дабы создать самозаверенный сертификат:

нажимаю «Здесь» дабы создать самозаверенный сертификат:

После нажимаю клавишу F5 и этой же странице нажимаю снова «Здесь» дабы перезапустить HTTP-сервер:

перезапустить HTTP-сервер:

Ожидаю, после меня перекидывает на страницу в хода в консоль администрирования:

Перехожу http://IP&DNS:9090 — user&pass — Сервер — Сертификаты TLS/SSL — Хранилища Сертификатов — Управление содержимым хранилища (/usr/share/openfire/resources/security/keystore)

нажимаю снова «Здесь» дабы создать самозаверенный и вот он:

Вот он мой самозаверенный сертификат

Проверяю, что порт 9091 ожидает подключения:

root@srv-openfire:/usr/share/openfire/resources/security# exit

logout

ekzorchik@srv-openfire:~$ sudo netstat -tulpn | grep :909*

tcp6 0 0 :::9090 :::* LISTEN 589/java

tcp6 0 0 :::9091 :::* LISTEN 589/java

ekzorchik@srv-openfire:~$

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire

Теперь при обращении к консоли администрирования защищенной новосозданным самоподписанным сертификатом https://srv-openfire:9091/index.jsp используется новый сертификат, а не дефолтный.

В браузере Mozilla Firefox нажимаю «Дополнительно» - «Принять риск и продолжить» — указываю user&pass и нажимаю «Войти» и я успешно авторизовался по URL ссылке вида: https://IP&DNS:9091/index.jsp, что мне и требовалось.

Шаг №7: Отключаю возможность доступа в консоль администрирования по ссылке http://IP&DNS:9090

ekzorchik@srv-openfire:~$ sudo find / -name openfire.xml

/etc/openfire/openfire.xml

ekzorchik@srv-openfire:~$ sudo nano /etc/openfire/openfire.xml

<adminConsole>

<!-- Disable either port by setting the value to -1 -->

<!-- <port>9090</port> -->

<port>-1</port>

ekzorchik@srv-openfire:~$ sudo systemctl restart openfire

Теперь только порт 9091:

ekzorchik@srv-openfire:~$ sudo netstat -tulpn | grep :909*

tcp6 0 0 :::9091 :::* LISTEN 2774/java

ekzorchik@srv-openfire:~$

Отлично, что мне и требовалось.

На этом пока заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.