Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:ssl-tls-letsencrypt]] 
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


anwenderwiki:server:ssl-tls-letsencrypt [2017/01/29 16:44] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +{{tag>server ssl tls Zertifikate ldap apache e-mail cyrus}}
  
 +<note>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]].
 +</note>
 +\\
 +
 +
 +====== 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:
 +
 +<code>
 +wget https://dl.eff.org/certbot-auto
 +chmod 0700 certbot-auto
 +mv certbot-auto /usr/local/sbin
 +</code>
 +
 +===== 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.
 +
 +<code>
 +certbot-auto certonly --apache --email <ADMINISTRATORADRESSE> -d <DOMAINNAME> -d <ZWEITER DOMAINNAME>
 +</code>
 +
 +Hier ein Beispiel:
 +<code>
 +certbot-auto certonly --apache --email administrator@meineschule.de -d server.meineschule.de
 +</code>
 +
 +
 +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.
 +
 +
 +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''):
 +
 +<code>
 +    # 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
 +</code>
 +
 +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:
 +
 +<code>
 +# /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
 +</code>
 +
 +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:
 +
 +<code>
 +# 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
 +
 +</code>
 +
 +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.
 [[anwenderwiki:server:ssl-tls-letsencrypt]] anwenderwiki/server/ssl-tls-letsencrypt.txt · Zuletzt geändert: 2017/01/29 16:44 von 127.0.0.1