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.
Cool. Tausend Dank für diese clevere Lösung! Hat wunderbar funktioniert! LG
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
Gerne!
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.
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
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.
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.
Hi Dimitri!
Dank deiner Config funtioniert jetzt Roundcube mit Let’s Encrypt tadellos.
Vielen Dank.
Gerne doch.
Grüße nach AT!
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
Nein. Da brauchst du dir keine Sorgen machen. Es würde geändert kurz nachdem ich das Tutorial geschrieben hatte.
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
Hast du PureFTPD anschließend neu gestartet?
Besten dank
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 🙂