Apache SSL Zertifikat mit letsencrypt

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 http://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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s