ispconfig 3.1 + Lets Encrypt + Postfix / Dovecot + PureFTPD

Posted on
ISPConfig 3.1 - Server & Hosting management vom Webbrowser

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.

Related Articles
Ein Gedanke von mir, wie man Let's Encrypt Zertifikate für Postfix und Dovecot in ISPConfig für weitere Mail Domains erstellen könnte. Jedoch ist diese Lösung Read more
Mir ist da was ganz dämliches die Tage unter die Füße gekommen.... Das error.log eines vhosts war plötzlich aufgebläht und ganz wund am Bauch mit Read more
Teil 4 der Anleitung umfasst die Installation des sekundären DNS Servers (NS2) auch hier wird das ganze Setup mit ISPConfig abgeschlossen.
In diesem Teil der Anleitung wird der NS1 installiert. Auch hier wird ISPConfig installiert und konfiguriert.
Teil 2 des ISPConfig Multi Server Setups. In diesem Teil wird der Apache Webserver installiert, die Datenbanken werden eingerichtet, Roundcube und phpMyAdmin werden eingestellt. Fail2Ban Read more

17 thoughts on “ispconfig 3.1 + Lets Encrypt + Postfix / Dovecot + PureFTPD

  1. Cool. Tausend Dank für diese clevere Lösung! Hat wunderbar funktioniert! LG

  2. 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

    1. Gerne!

  3. 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)…

    1. 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.

  4. Hallo!
    Danke für die tolle Anleitung. Jedoch funktioniert bei mir jetzt Roundcube nicht mehr.
    Bei https://meinedomain:8080/webmail bekomme ich den Fehler “Not Found The requested URL /webmail was not found on this server”
    und bei
    https://meinedomain.at/webmail/ bekomme ich die 404 Fehlerseite von ispconfig

    1. Hi Gerhard.
      Schau Mal ob Apache neu gestartet wurde.
      Falls ja, dann schau noch Mal in die Roundcube Apache Config. Vielleicht hast du vergessen das # vor der Zeile zu entfernen.

    2. Schau Mal hier: https://www.niih.de/setup-a-digital-ocean-server-with-ispconfig-on-ubuntu-16-04/
      (Weit weit runter scrollen) da habe ich eine Apache Roundcube Config.

  5. Hi Dimitri!
    Dank deiner Config funtioniert jetzt Roundcube mit Let’s Encrypt tadellos.

    Vielen Dank.

    1. Gerne doch.
      Grüße nach AT!

  6. 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

    1. Nein. Da brauchst du dir keine Sorgen machen. Es würde geändert kurz nachdem ich das Tutorial geschrieben hatte.

  7. 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

    1. Hast du PureFTPD anschließend neu gestartet?

  8. 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

    1. 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.

Leave a Comment / What do you think?

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