In dieser Anleitung spielen wir mit einem SOUL stable/xxx das komplette Szenario exemplarisch durch und nutzen dabei einige Dienste konkreter Hersteller und Anbieter. Einzelne Schritte können daher variieren!
Für SOUL Inhaber der Version soul3/xxx gelten leichte Abweichungen, so ist z.B. keine Konfiguration auf Kommandozeilenebene nötig.
Kurzanleitungen sind hier zu finden:
1. Bei einem Dienstleister anmelden und Web-Adresse registrieren
In dieser Anleitung nutzen wir exemplarisch den DynDNS-Anbieter https://secure.selfhost.de und haben dort die Adresse protonetsupport.selfhost.eu angelegt.
2. Router mit der (Dyn)DNS Adresse konfigurieren
Der Router wird so eingerichtet, dass er regelmäßig seine aktuelle IP-Adresse an den (Dyn)DNS-Dienst meldet. In der Regel stellen sowohl die DynDNS Anbieter als auch die Routerhersteller hierfür Anleitungen bereit. In der FRITZ!Box 7490 findet man diese Einstellung unter Internet -> Freigaben -> Dynamic DNS.
Achtung: Bei selfHOST.de werden im Router nicht die zuerst zugesandten Zugangsdaten eingegeben, sondern die unter „DynDNS Accounte“ gelisteten (Zugangsdaten Updateclient).
3. Portfreigabe einrichten
Der Router soll alle Anfragen, die er an Port 443 und 80 erhält, an den Protonet Server an Port 443 und 80 weiterleiten.
4. Änderung der Links in Protonet SOUL auf die neue Server-Adresse
a) Für Server mit der Version SOUL soul3/xxxx :
Bitte mit Schritt 6 weitermachen.
b) Für Server mit der Version SOUL stable/xxx:
Mit Benutzer „protonet“ und Wartungskennwort via ssh auf dem Protonet Server einloggen und folgendes Kommando ausführen:
custom_nodename DynDNS-Adresse
An dieser Stelle bitte das Wartungskennwort sicher zur Seite legen!
5. Internet-Adresse servername.protonet.info in den Systemeinstellungen abschalten
Ohne Abschaltung werden die Anpassungen in SOUL nicht aktiv!
Nun könntest Du via https://protonetsupport.selfhost.eu auf Deinen Protonet Server zugreifen!
Nach Einrichtung der DynDNS-Adresse auf dem Router und Protonet Server wie im ersten Teil beschrieben, kann zwar via Browser und verschlüsselter Verbindung via https://protonetsupport.selfhost.eu auf Protonet SOUL zugegriffen werden, allerdings wird vorab eine Sicherheitswarnung angezeigt. Diese besagt, dass die Verbindung zwar 128-Bit verschlüsselt ist, jedoch die Identität des Servers nicht bestätigt werden kann.
6. Möchtest Du diese Warnmeldung vermeiden, brauchst Du ein eigenes SSL-Serverzertifikat welches auf dem Protonet Server hinterlegt werden muss. Ab hier wird es nun etwas kniffliger… Die folgenden Schritte helfen Dir bzw. Deinem IT-Experten dabei!
Auch die Nutzung der Protonet Apps, benötigt ein valides SSL-Serverzertifikat!
7. Eigene (Sub)domain auf DynDNS Adresse weiterleiten
Es scheint derzeit keinen Anbieter zu geben, bei dem es möglich ist für eine DynDNS Adresse ein Zertifikat zu erhalten. Die Domain-Inhaberschaft ist hier Voraussetzung und wird auch während der ersten Zertifikaterstellung gegen die Emailadresse des zuständigen Postmasters verifiziert.
Daher brauchst Du nun als erstes eine Domain (oder jemanden bitten, der eine hat), wo Du wie z.B. bei den Websiteanbieter Prosite oder Alfahosting dann eine Subdomain (z.B. protonet) unterhalb „DNS ändern“ anlegst, den Typ CNAME wählst und als Ziel Deine DynDNS-Adresse angibst.
Kurz danach sollte über https://protonet.deinedomain.de Dein Protonet Server bereits erreichbar sein!
Da Du nun eine neue Adresse verwenden wirst, führe Schritt 4. „Änderung der Links in Protonet SOUL auf die neue Server-Adresse“ erneut aus, um die neue Adresse protonet.deinedomain.de auf dem Server zu hinterlegen.
Auf Servern mit mindestens der Version SOUL soul3/1508 wird das SSL Zertifikat direkt in den Systemeinstellungen eingetragen
Hilfreiche Schritte dazu gibt es in Schritt 8 und 9.
Weitere Schritte sind für Server mit der Version soul3/1508 und neuer nicht nötig!
Server mit mindestens der SOUL Version stable 90/91) können die komplexen Folgeschritte mit eigenem Zertifikat auch einfach durch unsere Let’s Encrypt Integration umgehen
So geht’s auf der Kommandozeile / via SSH:
letsencrypt
eingeben, mit Enter bestätigenDas Script „letsencrypt“
überprüft, ob der Protonet Server mittels der DynDNS Adresse und der Portweiterleitung erreichbar ist
überprüft, ob custom_nodename gesetzt wurde
erstellt einen monatlichen cronjob, so dass an jedem Ersten des Monats morgens um 6 Uhr ein neues Zertifikat, dass jeweils 3 Monate gültig ist.
sendet die Emailadresse des SOUL Nutzers mit der ID 1 (in der Regel der Boxinhaber) an den Let’s Encrypt Server. Diese erhält auch eine Email von Let’s Encrypt, wenn das Zertifikat droht abzulaufen.
unterbricht den Zugriff auf SOUL für 1-3 Minuten, während der Tests und der monatlichen Zertifikatserneuerung
FERTIG, die Punkte 8 – 12 können nach Ausführung von „letsencrypt“ ignoriert werden.
Die folgenden Schritte sollen eine Hilfe für die Administratoren sein, die ein eigenes Zertifikat hinterlegen wollen.
Unterstützung bei den Folgeschritten wird durch Protonet Partner geleistet. Protonet stellt hier gerne einen Kontakt her.
8. SSL Serverzertifikat erstellen, z.B. bei StartSSL im „Kontrollbereich“
Was jetzt noch fehlt ist das SSL Serverzertifikat. Dieses erhälst Du z.B. bei Deinem Websiteanbieter oder weiteren Diensten, wie in unserem Beispiel StartSSL https://www.startssl.com.
Nach erfolgreicher Registrierung kann dort über den Kontrollbereich der „Certificates Wizard“ ausgeführt werden, der bei Befolgung des Assistenten die nötigen Zertfikate/Schlüssel bereitstellt.
Bei anderen Anbietern für SSL-Zertifikate, bei denen man einen CSR (Certificate Signing Request) hochladen muss, gibt es hier die Anleitung, wie der CSR auf einem Linux-System erstellt werden kann.
Weiterhin bieten die meisten Anbieter von SSL-Zertifikaten eine Anleitung zum erstellen eines Zertifikates auf ihrer Website an.
9. Zertifikat bearbeiten
Die während des Generierungsprozesses gespeicherten Dateien ssl.crt und ssl.key müssen nun noch bearbeitet werden.
a) Entschlüsseln des privaten Schlüssels, Benennung httpd_ssl.key
Über die StartSSL Toolbox oder den openssl-Befehl in der Linux oder MacOS-Konsole erstellst Du eine neue Datei „`httpd_ssl.key`“:
openssl rsa -in ssl.key -out httpd_ssl.key
b) Download der Dateien ca.pem und sub.class1.server.ca.pem
http://www.startssl.com/certs/ca.pem
http://www.startssl.com/certs/sub.class1.server.ca.pem
Optimalerweise speicherst Du diese in den gleichen Ordner wie die key und crt-Dateien.
c) Zusammenfassung der Dateien ssl.crt, sub.class1.server.ca.pem, ca.pem zu neuer Datei `httpd_ssl.crt`
Unter Linux oder MacOS geschieht das einfach über die Konsole:
cat ssl.crt sub.class1.server.ca.pem ca.pem > httpd_ssl.crt
Hierbei ist wichtig, dass das eigentliche eigene Zertifikat als erstes in der Datei httpd_ssl.crt steht!
Unter Windows würde man eine neue Datei httpd_ssl.crt erstellen und darin den Inhalt der einzelnen Dateien hintereinander kopieren.
Wichtig: Dateiinhalt kontrollieren!
FALSCH:
Wenn ihr eine lange Zeile seht, diese zur Korrektur nach 5 – (Bindestrichen/Minuszeichen) umbrechen.
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
RICHTIG:
Die einzelnen Segmente sind durch Zeilenumbrüche voneinander getrennt:
So würde eine httpd_ssl.crt aussehen, mit insgesamt 4 Zertifikaten:
-----BEGIN CERTIFICATE-----
Body of the leaf certificate
-----END CERTIFICATE-----
—–BEGIN CERTIFICATE—–
Body of the first intermediate certificate
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
Body of the second intermediate certificate
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
Body of the root certificate
—–END CERTIFICATE—–
Vor und nach END bzw. BEGIN CERTIFICATE müssen jeweils 5 „-“ stehen!
10. Zertifikate auf dem Protonet Server bereitstellen
Die entstandenen Dateien `httpd_ssl.key` und `httpd_ssl.crt` müssen auf dem Protonet Server unter `/etc/protonet` hinterlegt werden.
Achtung: Hast Du das Wartungskennwort zum jetzigen Zeitpunkt noch nicht notiert und zur Seite gelegt, solltest Du das jetzt tun!
Das Bereitstellen inkorrekter Zertifkate kann dazu führen, dass Protonet SOUL nicht mehr geladen werden kann. In diesem Fall brauchst Du Konsolenzugriff um das Problem zu lösen!
11. Server neustarten
Der Protonet Server sollte nach ca. 5 Minuten via https://protonet.deinedomain.de und ohne Sicherheitswarnung im Browser erreichbar sein.
12. Nach Neustart und 5 Minuten warten SOUL nicht erreichbar?
a) Via SSH einloggen
b) Log auf Fehlermeldungen überprüfen:
tail -f /home/protonet/dashboard/shared/log/services/nginx/current
c) Ggf. die eigenen Zertifikate erstmal wieder löschen (neue werden automatisch generiert)
d) Weitere hilfreiche Anleitungen:
CA-Chain im Webserver Nginx einbauen
NGINX Server