Задача: Настроить 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@
и нажимаю «Войти»
— вход выполнен успешно
Шаг №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@
после нажимаю «Сохранить настройки»
Шаг №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://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.