In der Regel werden in pd-admin nur Lets Encrypt Zertifikate für Domains und Sub-Domains der Endkunden ausgestellt. Administratoren können jedoch auch ein Lets Encrypt Zertifikat für den Hostnamen ausstellen lassen. Das Zertifikat kann dann für die Mail-Dienste, Dovecot und qmail, verwenden werden. Dazu gehen Sie wie folgt vor:
Lets Encrypt Zertifikat für Hostname ausstellen
Im ersten Schritt kommt die Einrichtung eines Lets Encrypt Zertifikats für den Hostnamen. Hierfür führen Sie folgende Befehle aus:
$ /opt/pdadmin/bin/letsencrypt server.example.net
$ /opt/pdadmin/bin/httpd_vhosts.pl
Bitte server.example.net durch den eigene Hostnamen ersetzen. Damit sind unter Anderem die pd-admin Login Seiten nun per HTTPS erreichbar.
Zertifikat bei Mail-Diensten einrichten
Für die Einrichtung eines SSL-Zertifikats bei (u.a.) den Mail-Diensten, wird von den pd-admin Entwicklern ein entsprechendes Installationsskript zur Verfügung gestellt. Dieses können Sie unter http://download.pd-admin.de/dc-ssl-install.sh herunter laden.
$ wget http://download.pd-admin.de/dc-ssl-install.sh
$ ./dc-ssl-install.sh
Nach Ausführung ist das Lets Encrypt Zertifikat bei den Mail-Diensten eingerichtet. Das Skript richtet das SSL-Zertifikat aber auch für den FTP-Dienst proFTPD ein.
Anpassung der Apache Templates
Der certbot hinterlegt die Datei zur Validierung unter /usr/local/pd-admin2/htdocs/.well-known/acme-challenge. Nachd Einrichtung des SSL-Zertifikat für den Hostnamen, werden sämtliche Anfragen auf HTTPS weiter geleitet. Dies macht soweit Sinn. Allerdings kann der certbot die Validierungsdatei nicht per HTTPS abrufen. Es käme somit zu einem Fehler bei Verlängerung des Zertifikats. Die Apache Templates müssen dazu angepasst werden. Je nachdem welche Apache Version verwendet wird, finden Sie die Templates hier:
Apache 2.2:
/usr/local/pd-admin2/conf/httpd.conf-template
Apache 2.4:
/usr/local/pd-admin2/httpd-2.4/conf/httpd24.conf-template
Sie ersetzen dort einfach die Zeile
## REDIRECT_TO_HTTPS ##
durch
RedirectMatch ^(?!/\.well-known/acme-challenge).* https://$$SERVERNAME$0
Es werden weiterhin sämtliche Anfragen auf HTTPS weitergeleitet. Mit Ausnahme von Anfragen auf /.well-known/acme-challenge. Der Apache ist für die Verlängerung des Hostname Zertifikats vorbereitet.
Cronjob einrichten
Standardmäßig wird für die Verlängerung der Lets Encrypt Zertifikate einmal pro Woche der certbot ausgeführt. Dies könnte im crontab etwa so aussehen:
00 3 * * 2 /opt/pdadmin/bin/certbot-auto renew
Damit nun SSL-Zertifikate verlängert und direkt bei den Mail-Diensten eingerichtet werden, wird dies mittels eines einfach Shell Skripts durchgeführt. Dies kann z.B. unter /root/certbot-renew.sh hinterlegt werden.
#!/bin/bash
H=`/opt/pdadmin/bin/hostname.pl`
set -x
/opt/pdadmin/bin/certbot-auto renew
cat /opt/pdadmin/sslcerts/$H-key /opt/pdadmin/sslcerts/$H-cert /opt/pdadmin/sslcerts/$H-cacert > /var/qmail/control/servercert.pem
cat /opt/pdadmin/sslcerts/$H-key /opt/pdadmin/sslcerts/$H-cert > /usr/local/pd-admin2/share/imapd.pem
cat /opt/pdadmin/sslcerts/$H-cacert > /usr/local/pd-admin2/share/imapd.cacert
cat /opt/pdadmin/sslcerts/$H-cacert > /etc/ssl/cert.pem
/usr/local/bin/svc -du /service/dovecot22/
/opt/pdadmin/bin/httpd_vhosts.pl
Das Skript ist im Grunde eine abgespeckte Version des dc-ssl-install.sh Skripts. Zum Schluss wird der Cronjob angelegt.
00 3 * * 2 /root/certbot-renew.sh
Durch das setzen von set -x im Skript werden ausgeführte Kommandos ausgegeben. Dies kann dann in eine Log Datei geschrieben werden.
00 3 * * 2 /root/certbot-renew.sh &>> /var/log/certbot-renew.log
Die Einrichtung eines Lets Encrypt Zertifikats für den Hostnamen, sowie den Mail-Diensten, Dovecot und qmail, ist abgeschlossen.
Leider kann ich keine Ausstellung Lets Encrypt Zertifikat für Hostname.
$ /opt/pdadmin/bin/letsencrypt myhostname.server.net
Unknown SubdomainWriting /usr/local/pd-admin2/conf/httpd.conf
Writing /usr/local/pd-admin2/httpd-2.4/conf/httpd.conf
webserver =
Apache 24 is already selected
Hostname ist genauso wie der Hostname für pd-admin eingetragen ist. Was habe ich falsch gemacht?
Die Anleitung ist leider veraltet. Der Weg über /opt/pdadmin/bin/letsencrypt ist so leider nicht mehr möglich. Weiter unten in den Kommentaren finden Sie eine Anleitung mit den notwendigen Schritten.
Hallo Herr Korn, yay… endlich geschafft. Vielen Dank für die Anleitung. Folgende Schritte habe ich gemacht:
Benötige tool erst installieren (CentOS 7):
yum install epel-release
yum install certbot
Zertifikat per certbot erstellen:
certbot certonly --webroot -w /usr/local/pd-admin2/htdocs -d myhostname.server.net
Symlinks erstellen:
cd /opt/pdadmin/sslcerts
ln -s /etc/letsencrypt/live/myhostname.server.net/chain.pem myhostname.server.net-cacert
ln -s /etc/letsencrypt/live/myhostname.server.net/cert.pem myhostname.server.net-cert
ln -s /etc/letsencrypt/live/myhostname.server.net/privkey.pem myhostname.server.net-key
Apache Kofiguration neu schreiben:
/opt/pdadmin/bin/httpd_vhosts.pl
Installierte pd-admin-Version v4.63
WOW, ich habe es geschafft!
Also, wenn der certbot-auto einmal gelaufen ist und die virtuelle Umgebung für Let’s Encrypt erstellt hat, dann läuft auch der nachfolgende Befehl durch. Nur den Parameter -webroot mag er nicht, hier war Handarbeit angesagt.
Und die Symlinks sitzen jetzt auch richtig, für die cacert habe ich die „fullchain“ verwendet.
Gruß,
Philipp
Das freut mich! 🙂
Wenn der certbot nicht über yum installiert wird, sind zunächst auch keine Binaries und Konfigurationen vorhanden. pd-admin liefert nur die certbot-auto Binary mit, welche man auch unter https://dl.eff.org/certbot-auto herunterladen kann. Bei der ersten Ausführung von /opt/padmin/bin/certbot-auto wird dann eine Installation vorgenommen.
Sie haben in den Kommentaren -webroot angegeben. Der Parameter muss jedoch mit doppeltem Minus (-) angegeben werden. So wie in der Doku zu sehen: https://certbot.eff.org/docs/using.html#webroot
Aha! Ich komme weiter:
ich habe jetzt /opt/pdadmin/bin/certbot-auto einmal aufgerufen und er hat hat jede Menge Dinge aus dem centos-Repo nahcgeladen und installiert.
Ich habe jetzt eine Verzeichnis /etc/letsencrypt, das ist schon mal gut.
Unter /opt/eff-org/certbot/venv/bin finde ich auch den certbot, das gab es vorher nicht.
wenn ich jetzt den certbot aufrufe, gibt es folgende Fehelrmeldung:
certbot: error: unrecognized arguments: –webroot
Ich weiß nicht weiter.
Gruß,
Philipp
Meinst du certbot-auto?
Das mit den symlinks verstehe ich auch ncht ganz:
Sollen die dann so aussehen:
ln -s /etc/letsencrypt/live/host.domain.tld /opt/pdadmin/sslcerts/host.domain.tld-key
usw.
Ich habe aber kein /etc/letsencrypt auf meinem System.
Gruß,
Philipp
Ich erhalte mit pdadmin 4.60 die Fehlermeldung:
Unknown Subdomain Writing /usr/local/pd-admin2/conf/httpd.conf
Ein paar mehr Details wären hilfreich.
Ich vermute aber Mal es wird
/opt/pd-admin/bin/letsencrypt
verwendet, um für den Hostnamen ein Zertifikat zur erstellen?Dies funktioniert leider seit einiger Zeit nicht mehr. Diese Anleitung muss ich bei Gelegenheit noch überarbeiten.
Das Zertifikat muss einmal manuell per certbot erstellt werden. Dies sieht so aus:
certbot certonly --webroot -w /usr/local/pd-admin2/htdocs -d hostname.server.tld
hostname.server.tld wird durch den pd-admin Hostnamen ersetzt.
Anschließend werden Symlinks von
/etc/letsencrypt/live/hostname.server.tld/
nach/opt/pdadmin/sslcerts/
erstellt werden. Die Dateien heißen dabei dann/opt/pdadmin/sslcerts/hostname.server.tld-key
/opt/pdadmin/sslcerts/hostname.server.tld-cert
/opt/pdadmin/sslcerts/hostname.server.tld-cacert
Anschließend dann
/opt/pdadmin/bin/httpd_vhosts.pl
ausführen, damit die Konfiguration neu geschrieben und geladen wird.Hoffe dies hilft weiter 🙂