пятница, 7 августа 2020 г.

Установка Big Blue Button на Ubuntu 16TLS и настройка сертификатов с MS AD CA

 Всем доброго дня!

В нынешнее время обучающие конференции с использованием удаленного подключения стали довольно популярными. Это достаточно удобные инструменты для проведения каких то конференций, совещаний, дистанционных обучений. Обычно для этих целей существует очень много платформ для проведения таких мероприятий (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

 В которой все расписано по шагам. Но как по мне она немного запутана.

Найдена была еще одна ссылка, по которой я получил еще немного уточняющих деталей

http://blog.sedicomm.com/2020/05/01/poshagovoe-rukovodstvo-kak-ustanovit-i-nastroit-sistemu-videokonferentssvyazi-bigbluebottom-s-greenlight-na-ubuntu-linux/

Маленькое замечание. В процессе написания я буду придерживаться выдержек из разных источников, поэтому язык изложения может изменятся. В последствии я планирую отредактировать статью и привести ее к единому стилю.

Требование к оборудованию

Ссылка

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.key

In 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;
}

В этом блоке хотелось бы немного уточнить. В оригинале строка выглядела так

 proxy_pass https://203.0.113.1:7443;

Но у меня это не заработало. По моей логике указывается IP адрес а в сертификате стоит адрес сервера. Отсюда по моему мнению и не заработало. Изменив адрес на имя у меня все заработало

Configure BigBlueButton to load session via HTTPS

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 авторизуемся и наслаждаемся




 

Комментариев нет:

Отправить комментарий

При обновлении VCenter 6.7 до VCenter 7.0 ошибка Host not found

 Всем доброго времени суток! При обновлении VCenter 6.7 до версии 7.0 пришлось столкнуться со следующей ошибкой при обновлении , точнее в пр...