Diese Anleitung behandelt das Einrichten eines TLS/SSL Zertifikats von Let’s Encrypt auf einem Ubuntu 14.04 Server mit einem Apache Webserver. Dieses Zertifikat soll anschließend automatisch erneuert werden.
Installation Git Client
apt-get install git
Download des Let’S Encrypt Clients
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
SSL Zertifikat erstellen
Um das Zertifikat für eine einzelne Domain zu erzeugen, führt man folgenden Befehl aus:
cd /opt/letsencrypt ./letsencrypt-auto --apache -d tj-braun.de;
Sollten mehrere Domains mit einem Zertifikat versehen werden, so sind sie jeweils einzeln anzugeben:
./letsencrypt-auto --apache -d tj-braun.de -d www.tj-braun.de
Automatische Erneuerung des Zertifikats
Zertifikate von Let’s Encrypt laufen alle 3 Monate aus und müssen aktiv erneuert werden.
./letsencrypt-auto renew;
Die Ausgabe sieht in etwa so aus
Checking for new version... Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt renew Processing /etc/letsencrypt/renewal/www.tj-braun.de.conf The following certs are not due for renewal yet: /etc/letsencrypt/live/tj-braun.de/fullchain.pem (skipped) No renewals were attempted.
Der Befehl kann in der Crontab des Systems hinterlegt werden:
crontab -e
Folgenden Inhalt einfügen:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
Der Cronjob wird jeden Montag um 2:30 Uhr morgens das Kommando ausführen und die Ausgabe in die Datei /var/log/le-renew.log
schreiben.
Client erneuern
Der Client kann manuell erneuert werden, allerdings wird ein Update auch bei jedem Aufruf des o.g. Cronjobs ausgeführt.
cd /opt/letsencrypt
sudo git pull
Apache mit dem Zertifikat ausstatten
In folgendem Fall wird davon ausgegangen, dass noch keine Konfigurationsdatei für eine Webseite vorliegt.
Daher muss zunächst eine neue Konfiguration angelegt werden:
nano /etc/apache2/sites-available/SEITENNAME.conf
nano/etc/apache2/sites-available/cloud.tj-braun.de.conf
Anlegen eines Virtual Hosts für Port 80 (http) und 443 (https). Es soll eine Umleitung auf eine sichere Verbindung erfolgen, wenn die Seite via http aufgerufen wird.
<VirtualHost *:80>
ServerName cloud.tj-braun.de
#immer auf https ausweichen
Redirect permanent / https://cloud.tj-braun.de/
</VirtualHost>
Die Direktive “ServerName” gibt an, dass die Konfiguration nur greifen soll, wenn die URL damit übereinstimmt. Mit “Redirect permanent” wird das Root-Verzeichnis permanent umgelenkt.
Wenn mod_ssl aktiviert ist, greifen folgende Einstellungen:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin MAILADRESSE
ServerName cloud.tj-braun.de
DocumentRoot /var/www/nextcloud/
ErrorLog ${APACHE_LOG_DIR}/cloud-error.log
CustomLog ${APACHE_LOG_DIR}/cloud-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.tj-braun.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.tj-braun.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.tj-braun.de/chain.pem
<IfModule mod_headers.c>
#Nextcloud STS Policy
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
<Directory "/var/www/nextcloud/data">
#Nextcloud aktivieren der .htaccess Files
AllowOverride All
</Directory>
</VirtualHost>
</IfModule>
Der SSL… Teil gibt an, dass SSL aktiviert sein soll und welches Zertifikat genutzt werden soll.
Beide Konfigurationen stehen in der gleichen Apache Config Datei. Datei speichern und schließen mit strg+o und strg+x
Anschließend wird die Seite aktiviert
a2ensite NAMEDERKONFIGDATEI
und der Webserver neugestartet
service apache2 restart
Sollte Cloudflare aktiv sein, so muss die Zertifikatsvalidierung anderweitig erfolgen.