Tutorial: SSL Zertifikat für den lokalen Server erstellen



  • Unsere Daten sind uns allen heilig, keine Frage. Eine Verschlüsselung mit SSL ist im Internet heutzutage gang und gebe. Erkennbar ist eine SSL-Verschlüsselung unter anderem durch den Präfix https:// auf Webseiten. Die Daten werden verschlüsselt an den Zielserver geschickt und können dadurch vom Angreifern nicht ohne weiteres gelesen werden.

    Für eine SSL-Verschlüsselung auf dem eigenen Server spricht in erster Linie die Sicherheit. Aber auch die Kompatibilität ist ein immer wichtiger werdendes Thema.


    In diesem Post wird ein selbst signiertes Zertifikat erstellt, was für viele Browser als “nicht vertrauenswürdig” eingestuft wird. Trotzdem ist das Zertifikat vollwertig und macht das, was es soll.


    Beispiel für eine SSL-Verschlüsselung

    Re: Programm: Nextcloud-Installer

    Nach den Dateien und den Fotos zentral auf meiner eigenen Cloud, wollte ich auch meine Kontakte und meinen Kalender mithilfe von Card- und CalDav mit der Cloud synchronisieren.

    Leider war das in der Standardkonfiguration des Webservers nicht möglich, da er nicht mit SSL verschlüsselt war. Also musste ein SSL-Zertfikat her, um unter anderem Dienste wie CardDav und CalDav auf meinem iPhone nutzen zu können.


    Anleitung

    Diese Anleitung bezieht sich auf ein SSL-Zertifikat und dessen Setup mit einem Apache2 Webserver. Apache2 ist bereits installiert und befindet sich in der out-of-the-Box Standard-Konfiguration.


    OpenSSL installieren

    sudo apt-get install openssl
    

    Ordner für die Zertifikate anlegen

    sudo mkdir /etc/ssl/localcerts
    

    Zertifikat erstellen

    sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
    

    Der Parameter -days 365 bedeutet, dass das Zertifikat 1 Jahr lang gültig ist.
    Die beiden Pfade bestimmen den Speicherort und den Namen der Zertifikate.

    Es wird nach euren Daten gefragt, die ihr Eingeben müsst. Es spielt dabei keine Rolle, ob die Daten der Wahrheit entsprechen, oder nicht. Sie dienen nur zum Füllen der Informationen des Herausgebers des Zertifikats.

    Rechte der Zertifikate ändern

    sudo chmod 600 /etc/ssl/localcerts/apache*
    

    SSL-Modul von Apache2 aktivieren

    sudo a2enmod ssl
    

    Anschließend muss die Konfiguration der Seite default-ssl.conf bearbeitet werden.

    sudo nano /etc/apache2/sites-available/default-ssl.conf
    

    Mit Strg + W nach SSLEngine suchen.
    Folgende Zeilen hinzufügen / oder ändern, falls bereits vorhanden.

    SSLEngine On
    
    SSLCertificateFile /etc/ssl/localcerts/apache.pem
    
    SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
    

    mit Strg + O wir die Datei gespeichert. Strg + X zum Verlassen.

    Danach muss die eben bearbeitete Seite default-ssl.conf aktiviert werden.

    sudo a2ensite default-ssl
    

    Das wars mit den Zertifikaten. Der Apache2-Server muss anschließend neugestartet werden, damit die Änderungen wirksam werden. Entweder mit dem Befehl

    sudo /etc/init.d/apache2 restart
    

    oder auch:

    sudo service apache2 restart
    

    Abschluss

    Beim Aufruf der Seite https://makesmart-server/cloud/ auf dem lokalen Server erscheint folgende Meldung:

    self_ssl_datenschutzfehler.png

    Die Zugriffsverweigerung kann umgangen werden, mithilfe von

    [Erweitert] -> Weiter zu makesmart-server/cloud/
    

    Danach ist die Seite in Zukunft wieder ganz normal erreichbar. Die Meldung wird nicht mehr angezeigt und die Verbindung ist verschlüsselt.


    Der Grund für die Meldung ist folgender: Wir haben das Zertifikat selbst erstellt und gelten damit leider als nicht vertrauenswürdige Quelle… 😄 Tja…

    chrome_zertifikat.png


    Trotzdem können wir jetzt auch im lokalen Netzwerk von der SSL-Verschlüsselung profitieren…

    … und ich kann jetzt auch endlich meine Kontakte und meine Kalender synchronisieren. 🔥

    SSL erzwingen

    Weiterhin sind die Webseiten auf dem Server über http:// erreichbar. Um eine Verbindung via https:// zu erzwingen, fügt folgenden Abschnitt in die Datei default-ssl.conf ein.

    sudo nano /etc/apache2/sites-enabled/default-ssl.conf
    
    <VirtualHost *:80>
      RewriteEngine On
      RewriteCond %{HTTPS} !=on
      RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </VirtualHost>
    

    Mit dem Befehl

    sudo a2dissite 000-default
    

    kann die Standard-Seite ohne SSL deaktiviert werden. Anschließend muss der Webserver nochmal neugestartet werden.

    sudo service apache2 restart
    

    Ab sofort wird der gesamte Traffic auf https:// umgeleitet.


    PS für alle Cloud-Nutzer:
    Ihr müsst im Desktop sowie im Mobile-Cient den Link von http:// auf https:// ändern.

    Haut rein! 👌

    Verbesserungen und Anregungen gerne mitteilen.