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

Im Beitrag Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen habe ich beschrieben, wie es mithilfe des certbot Tools möglich ist SSL Zertifikate von Let’s Encrypt über nginx und das webroot Plugin zu beziehen. Dieser Mechanismus funktioniert aber nur für Webseiten. Für Dienste, welche keine Webseite über nginx bereitstellen ist dieses Verfahren nicht geeignet. Mit einer leichten Modifikation können aber auch SSL Zertifikate für Dienste ohne Webseiten wie postfix oder dovecot bezogen werden. In diesem Beitrag beschreibe ich die notwendigen Anpassungen dafür.

nginx

Da Dienste wie postfix oder dovecot standardmäßig keine Website über nginx bereitstellen lege ich eine dummy Webseitenkonfiguration für die Webseite unter welcher die Dienste erreichbar sind an, welche bei Bedarf aktiviert wird.

Dazu wird ein Verzeichnis benötigt, auf welches als Speicherort der Webseitendaten verwiesen werden kann.

$ sudo mkdir /var/www/empty

Nun muss für den Dienst (z.B. postfix) noch die Konfiguration angelegt werden. Ich verwende dazu nachfolgendes Template.

server  {
        listen          80;
        listen          [xxxx:xxxx:xxxx::42]:80;

        server_name     mail.example.com;
        root            /var/www/empty;

        # snippet for updating letsencrypt certificates
        include snippets/certbot-webroot.conf;
}

certbot

Damit der certbot die SSL Zertifikate für den Dienst abrufen kann benötigt er eine Konfigurationsdatei. Außerdem muss sowohl der pre als auch post-hook etwas angepasst werden.

Konfigurationsdatei

Als Konfigurationsdatei zum Abfragen kann das Template aus dem Beitrag Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen verwendet werden. Die Konfiguration kann dann z.B. als /etc/letsencrypt/com.example.mail-postfix.conf gespeichert werden.

pre-hook

Im pre-hook muss ergänzt werden, dass die nginx Webseitenkonfiguration unter welcher der Dienst erreichbar ist aktiviert wird.

#!/bin/bash
# Add content to the nginx snippet
echo 'location ^~ /.well-known/acme-challenge/ {' >> /etc/nginx/snippets/certbot-webroot.conf
echo '    default_type "text/plain";' >> /etc/nginx/snippets/certbot-webroot.conf
echo '    root         /var/www/letsencrypt;' >> /etc/nginx/snippets/certbot-webroot.conf
echo '    auth_basic off;' >> /etc/nginx/snippets/certbot-webroot.conf
echo '}' >> /etc/nginx/snippets/certbot-webroot.conf

# Enable site
ln -s /etc/nginx/sites-available/com.exmaple.mail /etc/nginx/sites-enabled/

# Load new nginx config
/bin/sh /etc/init.d/nginx reload

post-hook

Das post-hook Skript muss so angepasst werden, dass die Webseitenkonfiguration des Dienstes wieder deaktiviert wird und der Dienst seine Konfiguration neu lädt (Hier am Beispiel von postfix).

#!/bin/bash
# Empty the nginx snippet
truncate -s 0 /etc/nginx/snippets/certbot-webroot.conf

# Disable site
rm /etc/nginx/sites-enabled/com.example.mail

# Reload configurations
/bin/sh /etc/init.d/nginx reload
/bin/sh /etc/init.d/postfix reload

Zertifikate beziehen

Zum Abfragen der Zertifikate kann der auch im Beitrag Let’s Encrypt SSL Zertifikate unter Ubuntu Linux 16.04 Server mittels nginx und webroot Plugin beziehen vorgestellte Befehl certbot certonly verwendet werden

$ sudo certbot certonly -c /etc/letsencrypt/com.example.mail-postfix.conf

Schreibe einen Kommentar

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