ispconfig 3.1 + Lets Encrypt + Postfix / Dovecot + PureFTPD

In case you are a English reader – click this one to get the post in English.

Ich will so ein “ISPConfig dings” haben! Ja dann mal ran.

Einem Kunden von mir sollte ich eine Maschine mit ISPConfig aufsetzen. Ihr wisst schon, mit Apache, Mailserver, FTP Server, kostenlosen SSL Zertifikaten von Let’s Encrypt und so weiter.

Ja dann mal ran an den Specht und mal sehen was er pfeift.

Auf Digital Ocean schnell eine Ubuntu 16.04 Maschine aus dem Ozean gehoben und dann schön nach Anleitung von Till Brehm auf https://www.howtoforge.com  (The Perfect Server – Ubuntu 16.04 (Xenial Xerus) with Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot and ISPConfig 3.1) installiert.

Tage später ruft der Kunde an und fragt wie und ob es denn möglich wäre signierte Zertifikate für das ISPConfig Interface, Postfix, Dovecot und PureFTPD zu erstellen und wie es am besten zu machen sei.

Ja – natürlich ist es zu machen. Viele Wege führen nach Rom. Daher sind viele Informationen darüber im Netz. Hier mal wie ich es gemacht habe

Meine Ausgangs-Konfiguration:

  • Servername / Hostname: host01.example.com
  • Postfix Mailservername: host01.example.com
  • ISPConfig Interface: https://host01.expample.com:port

!! WICHTIG !! Ersetzt bitte meine Hostnames mit euren und kopiert bitte nicht blind.

Zertifikate die über das ISPConfig Interface mithilfe von Let’s Encrypt erstellt werden, werden (Auf Jeden Fall unter Ubuntu 16.04) gespeichert unter:

/etc/letsencrypt/live

Was ISPConfig dann in der vhost config macht, ist einen link auf das Zertifikat zu setzen:

host01:~# ls -lhA /var/www/example.com/ssl/
lrwxrwxrwx    1 root root        43    Oct 10 10:41    example.com.bundle -> /etc/letsencrypt/live/example.com/chain.pem
lrwxrwxrwx    1 root root        42    Oct 10 10:41    example.com.crt -> /etc/letsencrypt/live/example.com/cert.pem
-r--------            1 root root        6.3K    Oct 10 10:41    example.com.crt.old.20161010104113
lrwxrwxrwx    1 root root        45    Oct 10 10:41    example.com.key -> /etc/letsencrypt/live/example.com/privkey.pem

Das kann man sich doch zu Nutze machen. Also habe ich im ISPConfig interface einfach die domain host01.example.com angelegt und ISPConfig gesagt es soll doch bitte mal ein Let’s Encrypt SSL Zertifikat dazu erstellen. Ging schnell und zügig.

Und jetzt kommt der Zauber. Nun weil ich ja schon das Hosting Interface, den MailServer, FTP usw. unter der selben Subdomain laufen habe, kann ich hier ganz easy zu den Zertifikaten unter

 /etc/letsencrypt/live/

Verlinken.

Fangen wir mit Backups an (man weiß ja nie)

zunächst einmal das Postfix / Dovecot Zertifikat sichern:

mv /etc/postfix/smtpd.cert /etc/postfix/smtpd.cert-bak
mv /etc/postfix/smtpd.key /etc/postfix/smtpd.key-bak

Dann das PureFTPD Zertifikat sichern:

mv /etc/ssl/private/pure-ftpd.pem /etc/ssl/private/pure-ftpd.pem-back

Dann das ISPConfig Interface Zertifikat sichern:

mv /usr/local/ispconfig/interface/ssl/ispserver.bundle /usr/local/ispconfig/interface/ssl/ispserver.bundle-back
mv /usr/local/ispconfig/interface/ssl/ispserver.crt /usr/local/ispconfig/interface/ssl/ispserver.crt-back
mv /usr/local/ispconfig/interface/ssl/ispserver.key /usr/local/ispconfig/interface/ssl/ispserver.key-back

Jetzt das Zertifikat für Postfix und DoveCot verlinken:

ln -s /etc/letsencrypt/live/host01.example.com/privkey.pem /etc/postfix/smtpd.key
ln -s /etc/letsencrypt/live/host01.example.com/fullchain.pem /etc/postfix/smtpd.cert

Und die beiden einmal neu starten / neu laden:

service postfix reload
service dovecot reload

Zum testen einfach eine Mail Adresse in ISPConfig anlegen oder eine bestehende nehmen, in Thunderbird als Mail-Server: host01.example.com als Ein- / Ausgangsserver einstellen und schon sollte es klappen ohne nervige Zertifikatsnachfrage.

Für PureFTPD ist es ein kleines bisschen anders. Da müssen wir aus dem Private Key und der FullChain ein Zertifikat bzw. eine Datei erstellen. Dazu einfach:

cat /etc/letsencrypt/live/host01.example.com/privkey.pem /etc/letsencrypt/live/host01.example.com/fullchain.pem > /etc/ssl/private/pure-ftpd.pem

Jetzt noch ein:

service pure-ftpd-mysql restart

Um PureFTPD neu zu starten und schon wird das neue Let’s Encrypt Zertifikat ausgeliefert. Last but not least bekommt das ISPConfig Interface nun auch das neue Let’s Encrypt zertifikat.

Dazu verlinken wir wie folgt:

ln -s /etc/letsencrypt/live/host01.example.com/chain.pem /usr/local/ispconfig/interface/ssl/ispserver.bundle
ln -s /etc/letsencrypt/live/host01.example.com/cert.pem /usr/local/ispconfig/interface/ssl/ispserver.crt
ln -s /etc/letsencrypt/live/host01.example.com/privkey.pem /usr/local/ispconfig/interface/ssl/ispserver.key

Dazu noch ein:

service apache2 restart

und fertig. Das ISPConfig interface sollte nun mit den neuen Let’s Encrypt Zertifikat ausgeliefert werden.

Diese Art und Weise es anzupacken hat einen fantastischen Vorteil. man muss sich nicht mehr um die Zertifikate für Postfix, Dovecot und das Interface kümmern. Standard-Mäßig sind die Let’s Encrypt Zerftifikate nur für 3 Monate gültig. Da sich aber ISPConfig, bzw. der Certbot von Let’s Encrypt um die Erneuerung der Zertifikate kümmert, werden diese erneuert ohne das man selber alle 3 Monate anpacken muss.

Für das PureFTPD Zertifikat kann man einen Cronjob einrichten der dann, um sicher zu gehen, alle 4 Wochen einmal den Vorgang:

cat /etc/letsencrypt/live/host01.example.com/privkey.pem /etc/letsencrypt/live/host01.example.com/fullchain.pem > /etc/ssl/private/pure-ftpd.pem && service pure-ftpd-mysql restart > /dev/null 2>&1

durchführt und schon hat man auch das super erledigt.

Solltet Ihr Stolpersteine in meinen Gedankengängen finden, dann postet es einfach in den Kommentaren.

Bis dahin – grüße ins Land und gießt mir die Blumen.

18 Replies to “ispconfig 3.1 + Lets Encrypt + Postfix / Dovecot + PureFTPD”

  • Hallo,

    vielen Dank für den Artikel. Die Idee ist super und hat auch einwandfrei funktioniert. Die Anleitung kann man 1:1 für Debian übernehmen.

    Vielen Dank

  • Und wenn viele verschiedene Domains auf dem Server mit nur einer IP laufen? Soweit ich bisher gelesen habe, kann postfix kein SNI und somit ist das dann nicht möglich (für mail.domain1.de und mail.domain2.de)…

    • Ja genau. Dein Ziel ist es sicher für mail.domain1.de ein SSL Zertifikat zu haben und für SMTP.domain2.de etc. Das ist leider nicht möglich. Bzw. Nicht dass ich es wüsste.

  • Es gibt bei mir unter /usr/local/ispconfig/interface/ssl/ kein ispserver.bundle, ausser .cert und .key gibt es nur die .csr und .key.secure. Sollte ich mir Sorgen machen? :p

  • Irgendwie gibt es ein Problem bei den domains mit dem ftp cert!
    filezilla zeigt: Hostname passt nicht zum Certifikat
    habe dein howto schon anders probiert:
    ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem aber ohne Erfolg wird immer noch die Warnung angezeigt.
    Hast du eine Idee für eine Lösung?
    Ispconfig 3.1 + debian 9 + openvz

  • Hy,

    ich habe es so wie beschrieben auf dem Server konfiguriert. Ich habe eigentlich für meine domäne (mit isp3config) das ssl zertifikat erstellt : meine.de. Jetzt bekomme ich aber den Fehler :

    Cert Hostname DOES NOT VERIFY (mail.meine.de != meine.de | DNS:meine.de | DNS:www.meine.de)
    So email is encrypted but the host is not verified

    Kann ich das irgendo in der DNS Einstellung beim Hoster oder in eine config einstellen ?

    Muss ich ggf. bei Letsancrypt ein anderes Zertifikat holen ?

    Bei der Mailkonteneinrichtung meckert er auch das mit dem Zertifikat was ist, die website Tests sind aber in Ordnung.

    Gruß
    Ralph

    • Hi Ralph,
      Du muss mal schauen, ob die DNS Einträge alle in Ordnung sind. Wenn du z.B. IPv6 verwendest, aber keine IPv6 DNS Einträge hast, dann kann LE auch scheitern, weil es bei IPv6 zuerst die AAAA Records checked und wenn keine da sind, dann bricht es auch da direkt ab.

  • Göttlich. Danke.
    Der HowToForge Artikel hat dazu geführt, dass am Ende nichts mehr lief. Ich musste alles zurück rollen.
    Mit Deiner Anleitung hat es sofort geklappt. Danke, danke, danke 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

*