{{tag>server ssl tls Zertifikate ldap apache e-mail cyrus}} Diese Anleitung gilt für den neuen Client "Certbot"\\ Die Anleitung für die Vorgängerversion findet sich [[anwenderwiki:server:ssl-tls-letsencrypt-alt|hier]]. \\ ====== Von Let's Encrypt signierte SSL/TLS-Zertifikate für Apache, Ldap und E-Mail verwenden ====== ===== 1. Client installieren ===== Für Ubuntu 12.04 ist der Certbot-Client noch nicht in den Paketquellen von Ubuntu enthalten, daher muss man ihn manuell herunterladen und installieren: wget https://dl.eff.org/certbot-auto chmod 0700 certbot-auto mv certbot-auto /usr/local/sbin ===== 2. Programmumgebung einrichten und erstes Zertifikat erzeugen ===== Nun kann das erste Zertifikat erzeugt werden. Certbot prüft bei jedem Aufruf die Installation und lädt bei Bedarf fehlende oder veraltete Pakete herunter, beim ersten Aufruf darf man sich also über diesbezügliche Meldungen nicht wundern. Wenn der Server unter mehreren Namen erreichbar sein soll, dann muss man die alle angeben, es wird ein einziges Zertifikat erzeugt, das für alle diese Servernamen gültig ist. Wichtig ist, dass der Server unter allen diesen Namen aus dem Internet erreichbar ist, weil Certbot überprüft, ob man auch Kontrolle über diese Server hat. Außerdem muss man eine E-Mail-Adresse angeben. certbot-auto certonly --apache --email -d -d Hier ein Beispiel: certbot-auto certonly --apache --email administrator@meineschule.de -d server.meineschule.de 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. Das erstellte Zertifikat befindet sich jetzt in Ordnern unterhalb von ''/etc/letsencrypt''. ===== 3. Zertifikat aktivieren ===== === Einmalig: Apache-Konfiguration anpassen === Manche ältere Clients benötigen einen zusätzlichen Eintrag in der Apache-Konfiguration. Die erforderliche Option ''SSLCertifikateChainFile'' ergänzt man in der Konfigurationsdatei für jeden Vhost, der das Zertifikat verwenden sollen. Bei einer Standardinstallation editiert man dazu nur die Datei ''/etc/apache2/sites-available/default'' (und eventuell ''/etc/apache2/sites-available/schulkonsole''): # Schon vorhanden SSLCertificateFile /etc/ssl/private/server.pem SSLCertificateKeyFile /etc/ssl/private/server.pem # Diese Option ergänzen SSLCertificateChainFile /etc/ssl/private/server.pem # Optional: Let's-Encrypt-Einstellungen für sicheres HTTPS: Include /etc/letsencrypt/options-ssl-apache.conf Wer möchte, kann wie im Beispiel von Let's-Encrypt vorgeschlagene Einstellungen zur Absicherung von Https aktivieren. === Zertifikat kopieren === Das Zertifikat liegt noch nicht in der erforderlichen Form vor und ist auch noch nicht an der richtigen Stelle gespeichert. Dazu erzeugt man ein Skript ''/usr/local/sbin/letsencrypt-renew-posthook'' mit folgendem Inhalt: # /usr/local/sbin/letsencrypt-renew-posthook SRCDIR=/etc/letsencrypt/live/server.meineschule.de TARGETDIR=/etc/ssl/private echo echo "Sichere altes Zertifikat" cp -a $TARGETDIR/server.pem $TARGETDIR/server.pem_$(date +%Y%m%d.%H:%M) echo echo "Kopiere neues Zertifikat nach $TARGETDIR" cat $SRCDIR/privkey.pem > $TARGETDIR/server.pem cat $SRCDIR/cert.pem >> $TARGETDIR/server.pem cat $SRCDIR/chain.pem >> $TARGETDIR/server.pem chmod 0640 $TARGETDIR/server.pem chown root:ssl-cert $TARGETDIR/server.pem echo "Starte Dienste neu" service apache2 restart service slapd restart service cyrus-imapd restart echo "Fertig" echo echo "Die Let's-Encrypt-Zertifikate wurden erfolgreich erneuert." | mail -s "Zertifikate erneuert" administrator exit 0 Den Ordner "SRCDIR" muss man ganz oben in der Datei anpassen. Danach ruft man das Skript einmalig per Hand auf, später wird das automatisch erledigt. ===== 4. Automatische Erneuerung des Zertifikats per Cronjob ===== Das Zertifikat von Let's Encrypt ist für 90 Tage gültig. Folgender Cronjob sorgt für die automatische Erneuerung: # Let's-Encrypt-Zertifikate erneuern 22 22 * * * root /usr/local/sbin/certbot-auto renew --no-self-upgrade --post-hook "/usr/local/sbin/letsencrypt-renew-posthook"> /var/log/letsencrypt.log 2>&1 || cat /var/log/letsencrypt.log | mail -s "Fehler beim Erneuern der Zertifikate von Let's Encrypt!" administrator Mit dem Befehl ''renew'' überprüft Certbot, ob das Zertifikat demnächst ausläuft. Ist dies der Fall, so wird das Zertifikat erneuert und anschließend das Skript aufgerufen, das das neue Zertifikat aktiviert.