Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:ssl-tls-letsencrypt-alt]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

anwenderwiki:server:ssl-tls-letsencrypt-alt [2016/12/10 13:38] (aktuell)
Zeile 1: Zeile 1:
 +{{tag>​server ssl tls Zertifikate ldap apache }}
  
 +<note warning>​**Anleitung auf externem Ubuntu Server getestet ​
 +\\
 +Funktioniert !! Anleitung leicht ergänzt.** ​
 +\\
 +Gruß C. Weikl
 +</​note>​
 +\\
 +<note important>​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. </​note>​
 +
 +====== Signierte SSL/TLS - Zertifikate mit LetsEncrypt erstellen, in Apache und Ldap implementieren und automatisch aktualisieren ======
 +----
 +**Antifrust - TIPP zu Beginn:**
 +<note tip>​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 ;​-)</​note>​
 +===== 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 ====
 +
 +
 +
 +<​code>#​apt-get install git</​code>​
 +
 +==== b.) Letsencrypt - Client herunterladen ====
 +
 +<​code>​
 +#cd /opt
 +#git clone https://​github.com/​letsencrypt/​letsencrypt
 +#cd letsencrypt/​
 +</​code>​
 +
 +===== 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.
 +
 +<​code>​
 +#service apache2 stop
 +#​./​letsencrypt-auto certonly --renew-by-default --standalone --standalone-supported-challenges tls-sni-01 --email <​ADMINISTRATORADRESSE>​ -d <​DOMAINNAMEN>​
 +# service apache2 start
 +</​code>​
 +
 +Beispiel für die Einrichtungszeile:​
 +<​code>​
 +#​./​letsencrypt-auto certonly --renew-by-default --standalone --standalone-supported-challenges tls-sni-01 --email administrator@meineschule.de -d server.meineschule.de
 +</​code>​
 +
 +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
 +<​code>​
 +  --rsa-key-size 4096
 +</​code>​
 +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:
 +<​code>​
 +  -d meinedomain.de -d erstesubdomain.meinedomain.de -d zweitesubdomain.meinedomain.de -d zweitedomain.de
 +</​code>​
 +
 +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:​
 +
 +<​code>​
 +--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--
 +</​code>​
 +
 +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:
 +<​code>​
 +  service apache2 restart
 +</​code>​
 +
 +Um zu kontrollieren,​ welche vHosts aktiviert sind:
 +<​code>​
 +   ls -alh /​etc/​apache2/​sites-enabled
 +</​code>​
 +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:
 +<​code>​
 +  a2ensite meinesite.de
 +</​code>​
 +
 +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>;
 +<​code>​
 +# 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]
 +</​code>​
 +
 +
 +<note important>​Wer nur seinen Webserver mit den signierten Zertifikaten ausstatten wollte ist nun fertig!</​note>​
 +===== 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:
 +
 +<​code>​
 +#service slapd stop
 +#mv /​etc/​ssl/​private/​server.pem /​etc/​ssl/​private/​server.pem.orig
 +</​code>​
 +
 +=== 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:​
 +
 +<​code>​
 +#cd /​etc/​letsencrypt/​live/<​DOMAINNAMEN>/​
 +
 +#cat privkey.pem >> server.pem
 +#cat cert.pem >> server.pem
 +#cat chain.pem >> server.pem ​
 +</​code>​
 +schiebt es an die richtige Stelle und passt die Rechte an:
 +
 +<​code>​
 +#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
 +</​code>​
 +
 +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:
 +
 +<​code>​
 +#!/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
 +</​code>​
 +
 +Der Eintrag in der Crontab könnte so aussehen, damit alle 85 Tage die Zertifikate erneuert werden:
 +<​code>​
 +* * */85 * * /​opt/​letsencrypt/​zertifikate_erneuern_letsencrypt.sh
 +</​code>​
 +
 +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:
 +<​code>​
 +#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
 +</​code>​
 [[anwenderwiki:server:ssl-tls-letsencrypt-alt]] anwenderwiki/server/ssl-tls-letsencrypt-alt.txt · Zuletzt geändert: 2016/12/10 13:38 (Externe Bearbeitung)