Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anwenderwiki:webapps:bbb_in_gruen [2020/07/10 22:53] – [7. Greenlight] martin.res | anwenderwiki:webapps:bbb_in_gruen [2020/07/30 23:25] (aktuell) – [11.) Probleme - Fehlermeldungen] martin.res | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | {{tag> bbb bigbluebutton ssl zertifikat rootca openssl certificate videokonferenz}} | ||
+ | |||
+ | ====== BBB-Testserver im grünen Netz ====== | ||
+ | |||
+ | BBB ist ein komplexes System mit vielen Teilsystemen, | ||
+ | Architektur siehe -> [[https:// | ||
+ | |||
+ | Links zu den Anleitungen, | ||
+ | |||
+ | * (1) Installation BBB -> [[https:// | ||
+ | * (2) Erzeugen eines RootCA-Zertifikates + Server-Zertifikat -> [[https:// | ||
+ | * (3) BBB komplett auf https umstellen -> [[https:// | ||
+ | |||
+ | Für einen schnellen Test kann man mit Hilfe der Anleitung (1) einen BBB-Server aufsetzen, der jedoch nur über http läuft und man somit weder Mikro noch Webcam verwenden kann, da sowohl Firefox als auch Chrome für diese Freigaben https erfordern: | ||
+ | < | ||
+ | # wget -qO- https:// | ||
+ | </ | ||
+ | |||
+ | Ebensowenig erlauben die Browser an Desktop-Clients keine Mikro- und Webcam-Freigaben für " | ||
+ | Da das Testsystem im grünen Netz die interne URL '' | ||
+ | Als Lösung habe ich dann folgende Schritte durchgeführt: | ||
+ | * Erzeugen einer Zertifizierungsstelle, | ||
+ | * Erzeugen eines Webserver-Zertifikates (**'' | ||
+ | * Import der Root-CA in die Browser-CAs von Firefox, Chrome und ins Android-Device | ||
+ | * Import der Root-CA in die ssl-Zertifikate des BBB-Server | ||
+ | * Eintragen des Websever-Zertifikates beim Webserver nginx | ||
+ | * Installation von BBB mit der URL bbb.linuxmuster-net.lokal | ||
+ | * Installation von Greenlight und Import der Root-CA in den Docker-Container von Greenlight | ||
+ | * Bereitstellen der Root-CA für die JavaScript-Laufzeitumgebung im BBB-Server | ||
+ | |||
+ | Das ganze stellte sich letztendlich als sehr komplex heraus, ggf. sind deshalb nicht alle nachfolgend aufgeführten Schritte unbedingt notwendig. | ||
+ | |||
+ | ===== 1.) Basis-System installieren ===== | ||
+ | |||
+ | Als Basissystem einen Ubuntu-Server 16.04 (Name " | ||
+ | |||
+ | Um auch die korrekte Namensauflösung vom blauen Netz zu gewährleisten trägt man den BBB-Server mit seiner IP und URL in die host-Liste der Firewall IPFire ein. Als DNS-Server in Blau muss dann beim DHCP der Firewall die blaue IP der Firewall stehen.\\ | ||
+ | Oder man verwendet besser den LMN-Server selbst als DNS-Server beim DHCP und erstellt eine Firewall-Regel für den Zugriff über UDP, Port 53 von Blau zum LMN-Server. | ||
+ | ===== 2.) SSL-Zertifikate erstellen ===== | ||
+ | Die Zertifikatserstellung erfolgt mit dem Kommandozeilentool openssl nach der Anleitung (2) am BBB-Server. Openssl verwendet dabei mehrere Dateitypen: | ||
+ | * .key - Private Schlüssel | ||
+ | * .crt - Zertifikate, | ||
+ | * .csr - Zertifikatsanfrage - steuert eine Zertifikatserstellung | ||
+ | * .cnf - Konfigurationsdateien | ||
+ | Als Speicherort wird hier das Verzeichnis **''/ | ||
+ | # mkdir / | ||
+ | # cd / | ||
+ | Privaten Schlüssel des Stammzertifikates und Stammzertifikat selbst erzeugen: | ||
+ | # openssl genrsa -out myRoot.key 2048 | ||
+ | # openssl req -x509 -new -nodes -key myRoot.key -sha256 -days 3650 -out myRoot.crt | ||
+ | Konfigurationsdatei **'' | ||
+ | < | ||
+ | [req] | ||
+ | default_bits = 2048 | ||
+ | prompt = no | ||
+ | default_md = sha256 | ||
+ | distinguished_name = dn | ||
+ | [dn] | ||
+ | C=DE | ||
+ | ST=BW | ||
+ | L=Karlsruhe | ||
+ | O=linuxmuster | ||
+ | emailAddress=root@linuxmuster-net.lokal | ||
+ | CN = bbb.linuxmuster-net.lokal | ||
+ | </ | ||
+ | Weitere Konfigurationsdatei **'' | ||
+ | < | ||
+ | authorityKeyIdentifier=keyid, | ||
+ | basicConstraints=CA: | ||
+ | keyUsage = digitalSignature, | ||
+ | subjectAltName = @alt_names | ||
+ | [alt_names] | ||
+ | DNS.1 = bbb.linuxmuster-net.lokal | ||
+ | DNS.2 = 10.16.1.3 | ||
+ | DNS.3 = bbb | ||
+ | </ | ||
+ | |||
+ | //Eine IP als Common-Name des Zertifikates wird von den Browsern nicht akzeptiert, kann ggf. weggelassen werden.// | ||
+ | |||
+ | Zertifikatsanfrage, | ||
+ | # openssl req -new -sha256 -nodes -out bbb.csr -newkey rsa:2048 -keyout bbb.key -config bbb.csr.cnf | ||
+ | # openssl x509 -req -in bbb.csr -CA myRoot.crt -CAkey myRoot.key -CAcreateserial -extfile bbb.ext.cnf -out bbb.crt -days 3650 -sha256 | ||
+ | |||
+ | |||
+ | Die Firewall OPNsense und pfSense bieten ebenfalls auf ihrem Web-Frontend eine Zertifikatserstellung für Root und Server-Zertifikate an. Dies ist eine deutliche Vereinfachung gegenüber dem Tool openssl. Bei pfSense waren die Zertifikate verwendbar, bei OPNsense leider nicht. | ||
+ | ===== 3.) SSL-Stamm-Zertifikat importieren ===== | ||
+ | === Am BBB-Server selbst: === | ||
+ | # mkdir / | ||
+ | # cp / | ||
+ | # dpkg-reconfigure ca-certificates | ||
+ | Dieser Schritt ist notwendig, da BBB auch für die interne Kommunikation der Komponenten auf https aufsetzt, ansonsten findet der BBB-Server sich teilweise " | ||
+ | === In den Browsern von Windows- oder Linux-Clients: | ||
+ | Firefox und Chrome haben programminterne Zertifikatslisten, | ||
+ | **Einstellungen --> Datenschutz und Sicherheit --> Zertifikate --> ...**\\ | ||
+ | Ein Import des Server-Zertifikates **'' | ||
+ | |||
+ | === Android-Device: | ||
+ | |||
+ | Bei einem Android-Device werden die Zertifikate systemweit installiert. Diese sicherheitsrelevante Aktion muss mit Passworteingabe bestätigt werden. Das Stammzertifikat **'' | ||
+ | |||
+ | === iOS-Device === | ||
+ | siehe -> [[https:// | ||
+ | ===== 4.) BBB installieren ===== | ||
+ | Bei der Installation nach Anleitung (1) wird das Script **'' | ||
+ | |||
+ | ==== a) Für Zugriff über http: ==== | ||
+ | |||
+ | //Option " | ||
+ | |||
+ | < | ||
+ | # wget -qO- https:// | ||
+ | </ | ||
+ | |||
+ | Danach kann man im Browser die URL " | ||
+ | |||
+ | ==== b) Für Zugriff über https ==== | ||
+ | |||
+ | Selbst erstellte Zertifikate für das Install-Script mit den passenden Dateinamen kopieren: | ||
+ | < | ||
+ | # mkdir -p / | ||
+ | # cp / | ||
+ | # cp / | ||
+ | </ | ||
+ | |||
+ | Install-Script aufrufen mit Installation Greenlight (-g), ohne Let' | ||
+ | # wget -qO- https:// | ||
+ | |||
+ | Die folgenden Punkte 5.) und 6.) können nun übersprungen werden, weiter mit Punkt 7.) | ||
+ | ===== 5.) Umstellen von http auf https ===== | ||
+ | Nach Anleitung (3) müssen mehrere Konfigurationen angepasst werden. | ||
+ | |||
+ | ==== Webserver nginx ==== | ||
+ | |||
+ | Da der BBB-Server ausschließlich per https antworten sollte habe ich den Symlink " | ||
+ | # rm / | ||
+ | Dann die Datei **''/ | ||
+ | < | ||
+ | server { | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | //Achtung: Jede Zeile mit Semicolon abschließen!// | ||
+ | Und noch die Hilfs-Datei für die https-Verschlüsselung erzeugen (dauert ggf. sehr lange, > 10 Minuten): | ||
+ | # openssl dhparam -out / | ||
+ | ==== BigBlueButton + Co. ==== | ||
+ | Nach Anleitung (3) vorgehen -> [[https:// | ||
+ | |||
+ | |||
+ | Alle 7 anzupassende Dateien ggf. vorher sichern: | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | * / | ||
+ | |||
+ | Abschließend BBB und nginx neu starten: | ||
+ | # service nginx restart | ||
+ | # bbb-conf --restart | ||
+ | |||
+ | ===== 6.) Greenlight installieren ===== | ||
+ | |||
+ | Nach den obigen Schritten 4a. + 5. Greenlight nachträglich durch der Option " | ||
+ | |||
+ | # wget -qO- https:// | ||
+ | # apt-get purge bbb-demo | ||
+ | |||
+ | Jetzt Greenlight aufrufen mit der URL "'' | ||
+ | |||
+ | ===== 7.) Stammzertifikat in Greenlight-Docker importieren ===== | ||
+ | |||
+ | **Problem: | ||
+ | Der Docker-Container enthält nicht das oben erstellte ssl-Stammzertifikat und verbindet sich somit nicht über https mit BigBlueButton.\\ Greenlight zeigt die Fehlermeldung, | ||
+ | |||
+ | **Lösung: | ||
+ | Das Stammzertifikat **''/ | ||
+ | < | ||
+ | # docker ps | ||
+ | |||
+ | CONTAINER ID IMAGE | ||
+ | 834a12b22dc7 | ||
+ | ... | ||
+ | </ | ||
+ | ergibt als < | ||
+ | |||
+ | < | ||
+ | # docker cp / | ||
+ | # docker exec -it < | ||
+ | # cd ~/ | ||
+ | # docker-compose restart | ||
+ | </ | ||
+ | **Überprüfen: | ||
+ | # docker run --rm --env-file .env bigbluebutton/ | ||
+ | ergibt weiterhin die Fehlermeldung: | ||
+ | aber die Verbindung von Greenlight zu BBB funktionierte trotzdem. | ||
+ | |||
+ | **Änderungen in den Container integrieren: | ||
+ | < | ||
+ | # cd ~/ | ||
+ | # docker-compose stop | ||
+ | # docker commit 834a12b22dc7 bigbluebutton/ | ||
+ | # docker-compose up -d | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== 8.) Greenlight: Administrator-Account anlegen ===== | ||
+ | Einen Standard-Admin-Account am BBB-Server anlegen: | ||
+ | |||
+ | # cd ~/ | ||
+ | # docker exec greenlight-v2 bundle exec rake admin: | ||
+ | Erzeugt den vorkonfigurieten Zugang " | ||
+ | ===== 9.) Stammzertifikat für JavaScript bereitstellen ===== | ||
+ | **Problem: | ||
+ | Bei einer Installation nur mit http werden die Präsentationsfolien angezeigt, nach Umstellung auf https leider nicht mehr - Zertifikatsproblem bei ' | ||
+ | **Lösung: | ||
+ | In der Datei '' | ||
+ | < | ||
+ | ... | ||
+ | ENVIRONMENT_TYPE=production | ||
+ | ... | ||
+ | cd / | ||
+ | export NODE_EXTRA_CA_CERTS=/ | ||
+ | .. | ||
+ | </ | ||
+ | Nun BBB neu-starten. | ||
+ | # bbb-conf --restart | ||
+ | Siehe auch -> [[https:// | ||
+ | ===== 10.) Testen ===== | ||
+ | Mit der URL " | ||
+ | * Greenlight funktioniert und verbindet sich mit BBB | ||
+ | * Echo-Test, Mikro+Webcam funktionieren | ||
+ | * Präsentationen erscheinen und können hochgeladen werden | ||
+ | * Whiteboard funktioniert | ||
+ | * Bildschirmfreigaben funktionieren | ||
+ | * Umfragen funktionieren | ||
+ | * öffentlicher Chat, geteilte Notizen funktionieren | ||
+ | * Breakouträume funktionierten (Dafür müssen einfache Teilnehmer vorhanden sein) | ||
+ | * Status setzen und Teilnehmer entfernen funktionierte | ||
+ | |||
+ | Zum Testen der Konfigurationen am BBB-Server und von https gibt es folgende Befehle: | ||
+ | # nginx -t | ||
+ | # bbb-conf --check | ||
+ | # bbb-conf --status | ||
+ | # wget https:// | ||
+ | |||
+ | Zusätzlich kann man auf dem BBB-Server auch einen Speedtest installieren -> [[anwenderwiki: | ||
+ | |||
+ | ===== 11.) Probleme - Fehlermeldungen ===== | ||
+ | === a) Echotest - " | ||
+ | Tritt sporadisch beim Echotest auf, insbesondere bei virtualisierten BBB und hinter einer Firewall.\\ | ||
+ | **Mögliche Ursachen:** | ||
+ | * **Freeswitch**, | ||
+ | * **UDP-Pakete** werden von der Firewall blockiert. Dieser Pakettyp wird bei der Audioübertragung verwendet. Das Zulassen von UDP-Paketen zwischen Blau und Grün beseitigte die Fehlermeldung für Clients, die im blauen Netz waren. | ||
+ | |||
+ | === b) iPAD - Verbindungsfehler - " | ||
+ | Trat bei IPad mit Safari in Grün und Blau auf, Echotest funktionierte nicht, nur Zuhören funktionierte nicht. Stammzertifikat myRoot.crt war importiert. | ||
+ | |||
+ | ===== 12.) Weitere Konfigurationen ===== | ||
+ | |||
+ | Die Willkommensmeldung befindet sich in der Datei: **''/ | ||
+ | defaultWelcomeMessage= ... | ||
+ | defaultWelcomeMessageFooter= ... | ||