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/13 00:05] – [b) Für Zugriff über https] 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= ... | ||