Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | anwenderwiki:server:ssl-tls-letsencrypt-alt [2016/12/10 14:38] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | {{tag> | ||
+ | <note warning> | ||
+ | \\ | ||
+ | Funktioniert !! Anleitung leicht ergänzt.** | ||
+ | \\ | ||
+ | Gruß C. Weikl | ||
+ | </ | ||
+ | \\ | ||
+ | <note important> | ||
+ | |||
+ | ====== Signierte SSL/TLS - Zertifikate mit LetsEncrypt erstellen, in Apache und Ldap implementieren und automatisch aktualisieren ====== | ||
+ | ---- | ||
+ | **Antifrust - TIPP zu Beginn:** | ||
+ | <note tip> | ||
+ | ===== 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 ==== | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | ==== b.) Letsencrypt - Client herunterladen ==== | ||
+ | |||
+ | < | ||
+ | #cd /opt | ||
+ | #git clone https:// | ||
+ | #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 | ||
+ | # | ||
+ | # service apache2 start | ||
+ | </ | ||
+ | |||
+ | Beispiel für die Einrichtungszeile: | ||
+ | < | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | Die Option '' | ||
+ | |||
+ | 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 ''/ | ||
+ | ===== 3. Apache auf das neue Zertifikat umstellen ===== | ||
+ | |||
+ | Der Pfad zum neuen Zertifikat muss in ''/ | ||
+ | |||
+ | < | ||
+ | --Schnipp-- | ||
+ | |||
+ | SSLEngine on | ||
+ | # SSLCertificateFile / | ||
+ | # SSLCertificateKeyFile / | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | --Schnapp-- | ||
+ | </ | ||
+ | |||
+ | Danach den apache neustarten. Alle extern erreichbaren Seiten (MRBS, Portfolio, etc.) sollten nun das Zertifikat von LetsEncrypt " | ||
+ | |||
+ | Bemerkung: Ich habe das originale Zertifikat server.pem in server-orig.pem umbenannt und in ''/ | ||
+ | |||
+ | 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, | ||
+ | < | ||
+ | ls -alh / | ||
+ | </ | ||
+ | Ist der gewünschte vHost dort nciht zu finden, ist unter / | ||
+ | < | ||
+ | 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 - < | ||
+ | < | ||
+ | # redirect port 80 access to ssl access via port 443 | ||
+ | # apache mod rewrite has to be enabled | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTPS} !=on | ||
+ | RewriteRule ^/(.*) https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | ===== 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, | ||
+ | |||
+ | === 4.1 Originales Zertifikat sichern === | ||
+ | |||
+ | Als erstes sichert man das originale Zertifikat: | ||
+ | |||
+ | < | ||
+ | #service slapd stop | ||
+ | #mv / | ||
+ | </ | ||
+ | |||
+ | === 4.2 Zertifikat für ldap zusammenbauen und an die richtige Stelle schieben === | ||
+ | |||
+ | Im zweiten Schritt " | ||
+ | |||
+ | < | ||
+ | #cd / | ||
+ | |||
+ | #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 / | ||
+ | #chown root: | ||
+ | #chmod 640 / | ||
+ | #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 / | ||
+ | # | ||
+ | #service apache2 start | ||
+ | </ | ||
+ | |||
+ | Der Eintrag in der Crontab könnte so aussehen, damit alle 85 Tage die Zertifikate erneuert werden: | ||
+ | < | ||
+ | * * */85 * * / | ||
+ | </ | ||
+ | |||
+ | 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 / | ||
+ | #cat privkey.pem >> server.pem | ||
+ | #cat cert.pem >> server.pem | ||
+ | #cat chain.pem >> server.pem | ||
+ | #service slapd stop | ||
+ | #mv / | ||
+ | #mv server.pem / | ||
+ | #cd / | ||
+ | #chown root: | ||
+ | #chmod 640 server.pem | ||
+ | #service slapd start | ||
+ | </ |