Всем доброго дня!
В нынешнее время обучающие конференции с использованием удаленного подключения стали довольно популярными. Это достаточно удобные инструменты для проведения каких то конференций, совещаний, дистанционных обучений. Обычно для этих целей существует очень много платформ для проведения таких мероприятий (Zoom, Microsoft Team итд). Однако, это все облачные сервисы и их использование противоречит политике предприятия. У меня возникла задача провести дистанционное обучение сотрудников новой системе. Для выполнения этой задачи я начал анализировать программное обеспечение, которое мне может в этом помочь. В организации был развернут Skype For Buisness от Microsoft. Использовать его в этой роли не представилось возможным. Так как очень много рабочих станций которые не были в домене предприятия и это накладывало определенные ограничения на использование этого продукта. Опять же практически жесткая привязка к Windows семейству. К слову сказать, что имеется клиенты для Android и IOS но необходимо было совершить очень много манипуляций что накладывало ограничение для простых пользователей. Поэтому пришлось искать другое решение, желательно Open Source. В результате поиска нашелся такой продукт как Big Blue Button.
Давайте разбираться как его установить.
Правда есть один минус. Пока это программное обеспечение работает на ОС Ubuntu 16 TLS. У которого заканчивается EOL. На форуме разработчика сообщается, что ведутся работы по переносу на более свежую ОС.
А пока будем разворачивать на Ubuntu 16 TLS.
Есть официальная инструкция по установке
https://docs.bigbluebutton.org/2.2/install.html
В которой все расписано по шагам. Но как по мне она немного запутана.
Найдена была еще одна ссылка, по которой я получил еще немного уточняющих деталей
Маленькое замечание. В процессе написания я буду придерживаться выдержек из разных источников, поэтому язык изложения может изменятся. В последствии я планирую отредактировать статью и привести ее к единому стилю.
Требование к оборудованию
The minimum requirements for a BigBlueButton server are
Ubuntu 16.04 64-bit OS running Linux kernel 4.x
8 GB of memory with swap enabled (16 GB of memory is better)
4 CPU cores (8 is better)
TCP ports 80 and 443 are accessible
UDP ports 16384 - 32768 are accessible
Port 80 is not in use by another application
For a server intended for production, we additionally recommend:
500G of free disk space (or more) for recordings
250 Mbits/sec bandwidth (symmetrical) or more
Dedicated (bare metal) hardware
A hostname (such as bbb.example.com) for setup of a SSL certificate
IPV4 and IPV6 address
Разворачиваем сервер с указанными параметрами. Сразу хочу обратить внимание, что разворачивать надо с локалью En. Я разворачивал оставляя все по умолчанию. Если где нибудь пройдет что то другое, можем получить проблему при установке и потом очень долго все решать.
После установки сервера обновляем его
sudo apt-get update
sudo apt-get upgrade
И перезагружаемся.
Компоненты можно устанавливать в ручную, но у разработчиков есть замечательный скрипт для автоматической установки. Плюс его в том, что в него сразу вшит клиент для создания сертификатов Let's Encrypt, который автоматом будет продлевать сертификаты. В моем случае это не подходит и мне придется получить сертификат от ЦС моего предприятия, который работает на базе Windows. Для чего нужен протокол https. Во первых для повышения уровня безопасности а во вторых на сегодняшний день ни один браузер не позволит приложению работать по открытому протоколу с микрофоном и камерой.
Переходим в каталог root
cd root
и скачиваем скрипт для автоматической установки
wget https://ubuntu.bigbluebutton.org/bbb-install.sh
И устанавливаем ему атрибут исполняемого файла
chmod 0777 bbb-install.sh
Так как у меня сертификат будет от Центра Сертификации моего предприятия, то установку приложения можно разбить на четыре этапа.
1. Установка Big Blue Button в по незащищенному протоколу.
2. Получение сертификатов от ЦС предприятия и коныертация их
3. Перевод Big Blue Button для работы по https протоколу.
4. Установка Greenlight и заведение Администратора.
Для повышения оперативности установки можно сразу повысить права до root ввести команду
su
и указать пароль. В свеже установленой Ubuntu пароль root можно сменить так
sudo passwd root
Этап 1.
Создаем в DNS предприятия запись типа А для нашего сервера. Например bbb.zzz.com
Запускаем скрипт. Напомню что мы его скачали в папку /root
bbb-install.sh -v xenial-22 -s bbb.zzz.com
Скрипт сам выполнит необходимую процедуру подготовки, скачает и установит необходимые пакеты.
После скачивания и установки заходим по адресу в браузере http://bbb.zzz.com и видем страницу приветствия. Значит все у нас установилось и работает успешно.
Этап 2.
На данном этапе я руководствовался этой статьей
В ней все изложено четко по шагам. Поэтому просто процитирую частично ее.
1. Формируем файл запроса (на компьютере с Linux)
Для начала создаем каталог, в котором планируем хранить сертификаты и перейдем в него, например:
mkdir -p /etc/ssl/adcs
cd /etc/ssl/adcs
Создаем закрытый ключ:
openssl genrsa -out private.key 2048
* в данном примере создан 2048-и битный ключ с именем private.key
Создаем файл с описанием запроса:
vi openssl.confСодержание файла
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_extensions
distinguished_name = dn
[dn]
C=RU
ST=SPb
L=SPb
O=Global Security
OU=IT Department
emailAddress=hostmaster@zzz.com
CN = bbb.zzz.com
[req_extensions]
subjectAltName = @alter_name
[alter_name]
DNS.1 = bbb.zzz.com
* где стоит обратить внимание на следующее:
sha256 (или SHA-2) — алгоритм шифрования;
bbb.zzz.com — имя узла, к которому мы будем обращаться. Это очень важный пункт — нужно, чтобы имя совпадало с именем, по которому будут выполняться обращения.
subjectAltName — альтернативные имена стали иметь значение с 2017 года, когда некоторые браузеры перестали принимать сертификаты без указания альтернативных DNS-имен.
Далее создаем ключ запроса сертификата:
openssl req -new -key private.key -out request.csr -config openssl.conf
* где private.key — закрытый ключ, который был сформирован на предыдущем шаге; request.csr — файл, который будет сформирован. В нем будет запрос на открытый ключ;
После выполнения команды, в каталоге появится файл request.csr. Выведем его содержимое, чтобы посмотреть запрос:
cat request.csr
Должны увидеть что-то на подобие:
-----BEGIN CERTIFICATE REQUEST-----
MIIC1jCCAb4CAQAwgZAxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDANTUGIxDDAKBgNV
BAcMA1NQYjEYMBYGA1UECgwPR2xvYmFsIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBE
ZXBhcnRtZW50MR4wHAYDVQQDDBVzaW1wbGVwbGFuLnNhdHMubG9jYWwxEzARBgNV
BAMMCnNpbXBsZXBsYW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ
ze/WOQgnlbfzlEsQUsmfUTnkYq0rCpzgjY360lFvqek5Y8NIFX/25PRbUy4N3D8r
c/7mXt2dXmcnn7zeRQOB2g0AY8Wmeg3R6C+JH7TwxtkMj7FO8R59URxFN84lu9Sj
26Aw+Ax7474XnAoUBMSmUXbV2mAP5Xm83sjvjE1OcHXN8SPbc+EchZuLVLsIGXHz
Emz7V4D/ecahfSc2hCRG2Pc7SeFIADYdjyoLtykz5WyiIoXkpEfSNQHlt2/A1kJ5
h9/GPXMVJVL02FgsI5HIGZyGnYWA+cP7sHoEDZNpLHHuEtfwx3bLxJPFnZDa0rPO
LhV/ux1e6b9ikrge0xp9AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAPVD2aVH8
ZDz+6s8ecKr08eT3mA9cRCa7dZYFj4/vO/ZYrDH9QS45gd0sYG+RN+JMGaFaY+X7
faE4m0BysPIbhEYLRY5GJYxmOGm05gM2HfPrcnnWXZbPQu/n5pR4ptvPYL7bilGb
z6hXb8ZtXUXwz1F2OgTPOPu4+w8lI23pzHRHlCXcVSoZxe/A2XwusB5MrtyMEYtj
rB2kcOqQRkt9uIv5IobwnYaVGDk/7wl/zkb9K+RKZt4izKfFaSSyPn7wvpKSIaAf
S3SQjJ0tBckLbtwKrxdFB0B8bpyIKUtHmpX/zOmityC8PLXe6/vQ/DmM3B6QC4Ba
KdnRkOSPv8BGog==
-----END CERTIFICATE REQUEST-----
2. Выпускаем сертификат
Копируем содержимое файла запроса (request.csr) и открываем веб-страницу центра сертификации — как правило, это имя сервера или IP-адрес + certsrv, например, http://192.168.0.5/certsrv/.
В открывшемся окне переходим по ссылкам Запроса сертификата - расширенный запрос сертификата.
В поле «Сохраненный запрос» вставляем скопированный запрос, в а поле «Шаблон сертификата» выбираем Веб-сервер:
Вводим данные для получения сертификата
Нажимаем Выдать и скачиваем сертификат по ссылке Загрузить сертификат:
Загрузка готового сертификата
3. Установка сертификата на Linux
Переносим полученный сертификат на компьютер с Linux, например, при помощи WinSCP.
После необходимо сконвертировать DER-сертификат (от AD CS) в PEM-сертификат (для Linux). Для этого вводим следующую команду:
openssl x509 -inform der -in certnew.cer -out public.pem
* где certnew.cer — файл, который мы получили от центра сертификации AD CS (как правило, у него такое имя); public.pem — имя PEM-сертификата.
Сертификат готов к использованию. Мы сформировали:
private.key — закрытый ключ.
public.pem — открытый ключ.
Этап 3
Теперь у нас есть ключи и мы можем перевести BBB в режим https.
По этому поводу в официальной инструкции есть целый раздел
Изменять все надо согласно рекомендаций по шагам
Привожу выдержку с пояснениями и изменениями
Configure nginx to use HTTPS
Depending on your certificate authority (CA), you should now have 2 or more files, as follows:
- Certificate
- Private key
- Intermediate certificate (there may be more than one, or could be none)
The next step is to install the files on the server.
Create the directory /etc/nginx/ssl:
$ sudo mkdir /etc/nginx/ssl
And now create the private key file for nginx to use (replace the
hostname in the filename with your own). In addition, fix the
permissions so that only root can read the private key:
chmod 0600 /etc/nginx/ssl/private.keyIn addition, we’ll generate a set of 4096-bit diffie-hellman parameters to improve security for some types of ciphers. This step can take several minutes to complete, particularly if run on a virtual machine.
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
Now we can edit the nginx configuration to use SSL. Edit the file /etc/nginx/sites-available/bigbluebutton
to add the marked lines. Ensure that you’re using the correct filenames
to match the certificate and key files you created above.
server {
server_name bigbluebutton.example.com;
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/public.pem;
ssl_certificate_key /etc/nginx/ssl/private.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;
Configure FreeSWITCH for using SSL
If you have a firewall on your server and have opened port 5066, change the rule to now open port 7443 instead.
Next, the websocket forwarding address in nginx. Edit the file /etc/bigbluebutton/nginx/sip.nginx and change the protocol and port on the proxy_pass line as shown:
location /ws {
proxy_pass https://bbb.zzz.com:7443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 6h;
proxy_send_timeout 6h;
client_body_timeout 6h;
send_timeout 6h;
}
With nginx now configured to use SSL, the next step is to configure FreeSWITCH to use HTTPS for initiating an audio connection.
Edit /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties and update the property bigbluebutton.web.serverURL to use HTTPS:
#----------------------------------------------------
# This URL is where the BBB client is accessible. When a user successfully
# enters a name and password, she is redirected here to load the client.
bigbluebutton.web.serverURL=https://bbb.zzz.com
Next, edit the file /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties and update the property jnlpUrl and jnlpFile to HTTPS:
streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare
jnlpUrl=https://bbb.zzz.com/screenshare
jnlpFile=https://bbb.zzz.com/screenshare/screenshare.jnlp
You must also update the file /var/www/bigbluebutton/client/conf/config.xml to tell the BigBlueButton client to load components via HTTPS. You can do the update with a single command
$ sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml
If you would ever need to revert this change, you can run the reverse command:
$ sudo sed -e 's|https://|http://|g' -i /var/www/bigbluebutton/client/conf/config.xml
Open /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml editing and change:
kurento:
wsUrl: ws://bbb.zzz.com/bbb-webrtc-sfu
to
kurento:
wsUrl: wss://bbb.zzz.com/bbb-webrtc-sfu
Also change:
note:
enabled: true
url: http://bbb.zzz.com/pad
to
note:
enabled: true
url: https://bbb.zzz.com/pad
Next, modify the creation of recordings so they are served via HTTPS. Edit /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml and change the value for playback_protocol as follows:
playback_protocol: https
If you have installed the API demos in step 5, edit /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp and change the value of BigBlueButtonURL use HTTPS.
// This is the URL for the BigBlueButton server
String BigBlueButtonURL = "https://bbb.zzz.com/bigbluebutton/";
Finally, to apply all of the configuration changes made, you must restart all components of BigBlueButton:
$ sudo bbb-conf --restart
После чего проверяем перейдя по адресу https://bbb.zzz.com Страничка должна открыться по протоколу https.
Этап 4.
На этом этапе устанавливаем Web консоль Greenlight. Вместе с ней устанавливается так же Docker.
Выполняем команды
cd /root
bbb-install.sh -v xenial-22 -s bbb.zzz.com
Ждем окончания установки
После
cd greenlight/
docker exec greenlight-v2 bundle exec rake admin:create
Будет вывод примерно такого содержания
Account succesfully created.
Email: admin@example.com
Password: admin
Role: admin
PLEASE CHANGE YOUR PASSWORD IMMEDIATELY
Переходим по адресу https://bbb.zzz.com авторизуемся и наслаждаемся
Комментариев нет:
Отправить комментарий