Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server oder Raspbian Jessie Lite als nicht root automatisch erneuern

Let’s Encrypt stellt kostenfreie SSL Zertifikate bereit, welche über den offiziellen Client certbot abgefragt werden können. Wie Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server für Webseiten bzw. andere Dienste angefragt werden können habe ich in den Beiträgen Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen bzw. Let’s Encrypt SSL Zertifikate für Dienste ohne Website wie postfix oder dovecot unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen beschrieben. Die Zertifikate sind nur 90 Tage lang gültig und müssen spätestens danach erneuert werden. Dies wird durch einen bei der Installation von certbot automatisch angelegten timer erledigt. Dieser prüft alle 12 Stunden, ob ein Zertifikat in den nächsten 30 Tagen abläuft. Ist dies der Fall wird das Zertifikat erneuert. Der Befehl zum Überprüfen wird allerdings als root ausgeführt. In diesem Beitrag beschreibe ich wie die Zertifikate als nicht root Benutzer automatisch erneuert werden können.

Dazu muss zuerst ein neuer System Benutzer mit Namen certbot und gleichnamiger Gruppe ohne Home Verzeichnis, welcher sich auch nicht einloggen kann, erstellt werden.

$ sudo adduser --system --group --no-create-home --disabled-login certbot
Adding system user `certbot' (UID 113) ...
Adding new group `certbot' (GID 121) ...
Adding new user `certbot' (UID 113) with group `certbot' ...
Not creating home directory `/home/certbot'.

Dem neuen Benutzer müssen jetzt noch Rechte an diversen letsencrypt Verzeichnissen sowie dem nginx Ordner über den die Authentifizierung stattfindet gegeben werden

$ sudo chown certbot:www-data /var/www/letsencrypt/ -R
$ sudo chown certbot:certbot /etc/letsencrypt/ -R
$ sudo chown certbot:certbot /var/log/letsencrypt/ -R
$ sudo chown certbot:certbot /var/lib/letsencrypt/ -R

Jetzt muss dem certbot Benutzer noch erlaubt werden die beiden Hook Skripte ohne Passworteingabe als root auszuführen. Dazu müssen die beiden nachfolgenden Zeilen der Datei /etc/sudoers am Ende hinzugefügt werden. Die Datei sollte nur als root über den Befehl visudo bearbeitet werden.


[...]

# Allow certbot to execute the pre and post hook scripts as root
certbot ALL = NOPASSWD: /usr/local/sbin/letsencrypt/pre-hook.sh
certbot ALL = NOPASSWD: /usr/local/sbin/letsencrypt/post-hook.sh

Zuletzt muss noch die Datei /lib/systemd/system/certbot.service angepasst werden, da der Aufruf zum Erneuern derzeit von root durchgeführt wird. Um dies zu ändern muss nachfolgende Zeile am Ende der Datei hinzugefügt werden. Sie legt den Benutzer fest, unter welchem der Befehl zum Erneuern ausgeführt werden soll.

[...]
User=certbot

Ab sofort wird die Erneuerung der Zertifikate nicht mehr unter dem Benutzer root, sondern certbot durchgeführt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.