Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:ssl-tls-letsencrypt-alt]] 
Anleitung auf externem Ubuntu Server getestet
Funktioniert !! Anleitung leicht ergänzt.

Gruß C. Weikl


Die folgende Anleitung enthält nur das allgemeine Vorgehen und die Einrichtung für den linuxmuster.net Server. Es gibt keine genaueren Erklärungen zu den einzelnen Abschnitten, daher ist diese Anleitung nur für Erfahrene Nutzer gedacht, die das ganze auf ihre Umgebung anpassen und ggf. optimieren. Die Anleitung kann einfach auf andere Umgebungen z.B. einen Owncloudserver übertragen werden.

Signierte SSL/TLS - Zertifikate mit LetsEncrypt erstellen, in Apache und Ldap implementieren und automatisch aktualisieren


Antifrust - TIPP zu Beginn:

Momentan lässt LetsEncrypt nur die Erzeugung von 5 Zertifikaten pro Domain in 7 Tagen zu! Wer also etwas herumspielt kommt also sofort an diese Grenze und muss ggf. eine Woche warten, bis es weitergeht! …das Nervt so was von ;-)

1. LetsEncrypt-Client installieren

Momentan ist der letsencrypt-client noch nicht in den Paketquellen von Ubuntu enthalten, daher muss man ihn manuell herunterladen und installieren.

Vorgehen:

a.) Git installieren

#apt-get install git

b.) Letsencrypt - Client herunterladen

#cd /opt
#git clone https://github.com/letsencrypt/letsencrypt
#cd letsencrypt/

2. Programmumgebung einrichten und Zertifikat erzeugen

Als nächstes müssen ggf. eventuelle Abhängigkeiten (python-module) nachinstalliert werden (dies erledigt der letsencrypt-wrapper beim ersten Aufruf automatisch) und danach das initiale Zertifikat erzeugt werden; das passiert alles mit einem Befehl! Zuvor muss der apache kurz angehalten werden.

#service apache2 stop
#./letsencrypt-auto certonly --renew-by-default --standalone --standalone-supported-challenges tls-sni-01 --email <ADMINISTRATORADRESSE> -d <DOMAINNAMEN>
# service apache2 start

Beispiel für die Einrichtungszeile:

#./letsencrypt-auto certonly --renew-by-default --standalone --standalone-supported-challenges tls-sni-01 --email administrator@meineschule.de -d server.meineschule.de

Die Option –standalone-supported-challenges tls-sni-01 sorgt dafür, dass die ganze Aushandlung über den https-Port 443 läuft. Das ist wichtig, da die meisten von uns hoffentlich im IPFire den Standartport 80 dicht gemacht haben.

Sollen die Zertifikate mit einem längeren RSA-Schlüssel erstellt werden, so kann in o.g. Befehlszeile die Option

  --rsa-key-size 4096

angegeben werden. Ohne diese Angabe wird der Schlüssel mit 2048 Bit erstellt, so dass die Schlüssellänge somit deroppelt wird.

Sollen weitere Subdomains oder weitere Domains angegeben werden, so kann o.g. Befehlszeile erweitert werden:

  -d meinedomain.de -d erstesubdomain.meinedomain.de -d zweitesubdomain.meinedomain.de -d zweitedomain.de

Das erstellte Zertifikat befindet sich jetzt in /etc/letsencrypt/live/<DOMAINNAMEN>/

3. Apache auf das neue Zertifikat umstellen

Der Pfad zum neuen Zertifikat muss in /etc/apache2/sites-available/default eingetragen werden. Dazu werden die zwei „originalen Zeilen“ kommentiert und drei neue Zeilen mit dem Pfad zum neuen Zertifikat hinzugefügt:

--Schnipp--

SSLEngine on
#    SSLCertificateFile /etc/ssl/private/server.pem
#    SSLCertificateKeyFile /etc/ssl/private/server.pem
     SSLCertificateFile /etc/letsencrypt/live/<DOMAINNAMEN>/cert.pem
     SSLCertificateChainFile /etc/letsencrypt/live/<DOMAINNAMEN>/chain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/<DOMAINNAMEN>/privkey.pem

--Schnapp--

Danach den apache neustarten. Alle extern erreichbaren Seiten (MRBS, Portfolio, etc.) sollten nun das Zertifikat von LetsEncrypt „benutzen“.

Bemerkung: Ich habe das originale Zertifikat server.pem in server-orig.pem umbenannt und in /etc/apache2/sites-avialable/schulkonsole eingetragen, da ich da kein signiertes Zertifikat brauche.

Sollten weitere vHosts definiert sein, so sind o.g Zeilen auch in diesen Konfigurationszeilen einzutragen und der Webserver ist neu zu starten.

Neustart des Apache Webserver:

  service apache2 restart

Um zu kontrollieren, welche vHosts aktiviert sind:

   ls -alh /etc/apache2/sites-enabled

Ist der gewünschte vHost dort nciht zu finden, ist unter /etc/apache2/sites-available eine entsprechende Konfigurationsdatei zu erstellen und danch ist diese zu aktivieren:

  a2ensite meinesite.de

Soll bei Aufruf der Site im Browser immer die gesicherte Verbindung genutzt werden, so ist in der Apache-Konfiguration noch ein Redirect auf die HTTPS-Seite anzugeben - <VirtualHost *:80>;

# redirect port 80 access to ssl access via port 443
# apache mod rewrite has to be enabled
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]
Wer nur seinen Webserver mit den signierten Zertifikaten ausstatten wollte ist nun fertig!

4. Ldap auf das neue Zertifikat umstellen

Manchmal ist es notwendig, im Ldap signierte TLS-Zertifikate zu verwenden. Beispielsweise ist das Voraussetzung für die Authentifizierung gegen Webuntis.

Die Umstellung des ldap auf signierte Zertifikate, die an einem anderen Ort liegen und einen anderen Namen als server.pem haben ist alles andere als trivial, da zahlreiche Sicherheitsmechanismen z.B. appamor von Ubuntu dies verhindern. Am besten ist also, dass man einfach alles möglichst so lässt, wie es vorkonfiguriert ist.

4.1 Originales Zertifikat sichern

Als erstes sichert man das originale Zertifikat:

#service slapd stop
#mv /etc/ssl/private/server.pem /etc/ssl/private/server.pem.orig

4.2 Zertifikat für ldap zusammenbauen und an die richtige Stelle schieben

Im zweiten Schritt „baut“ man das neue Zertifikat zusammen, dabei ist die richtige Reihenfolge entscheidend:

#cd /etc/letsencrypt/live/<DOMAINNAMEN>/

#cat privkey.pem >> server.pem
#cat cert.pem >> server.pem
#cat chain.pem >> server.pem 

schiebt es an die richtige Stelle und passt die Rechte an:

#mv server.pem /etc/ssl/private/
#chown root:ssl-cert /etc/ssl/private/server.pem
#chmod 640 /etc/ssl/private/server.pem
#service slapd start

Das sollte es gewesen sein! Nun testen, ob die Authentifizierung klappt…

5. Automatische Erneuerung des Zertifikats per Cronjob

Das Zertifikat von LetsEncrypt ist für 90 Tage gültig. Folgendes Skript sorgt durch einen passenden Cronjob ausgeführt für die automatische Erneuerung:

#!/bin/sh

#service apache2 stop
#cd /opt/letsencrypt
#./letsencrypt-auto certonly --renew-by-default --standalone --standalone-supported-challenges tls-sni-01 --email <ADMIN-MAILADRESSE> -d <DOMAINNAMEN>
#service apache2 start

Der Eintrag in der Crontab könnte so aussehen, damit alle 85 Tage die Zertifikate erneuert werden:

* * */85 * * /opt/letsencrypt/zertifikate_erneuern_letsencrypt.sh

Darauf achten, dass das Skript die Ausführungsberechtigung besitzt (chmod +x).

Hier ist man fertig, falls das Zertifikat nur für den Webserver benutzt wird.

Für Ldap geht es so weiter:

#cd /etc/letsencrypt/live/<DOMAINNAMEN>
#cat privkey.pem >> server.pem
#cat cert.pem >> server.pem
#cat chain.pem >> server.pem
#service slapd stop
#mv /etc/ssl/private/server.pem /etc/ssl/private/server.pem.before.letsencrypt
#mv server.pem /etc/ssl/private/
#cd /etc/ssl/private
#chown root:ssl-cert server.pem
#chmod 640 server.pem
#service slapd start
 [[anwenderwiki:server:ssl-tls-letsencrypt-alt]] anwenderwiki/server/ssl-tls-letsencrypt-alt.txt · Zuletzt geändert: 2016/12/10 14:38 von 127.0.0.1