Aufgabe #1625
offen"Abhandlung" https mit certbot für apache bei FreeBSD (Jail TrueNAS CORE)
Von PaulRiegel vor mehr als 1 Jahr hinzugefügt. Vor etwa 1 Jahr aktualisiert.
Beschreibung
Bitte für eine "beliebige" Domain in der Datei /usr/local/etc/apache24/extra/httpd-vhosts.conf
Apache konfigurieren.
Der Anwendungsfall soll die Anwendung GNU Mailman sein.
Jail erstellen (machen wir zusammen), mit öffentlicher Adresse für IPv4
Eintrag für DNS
FreeBSD aktualisieren
apache24 (mit https) installieren
certbot installieren
apache konfigurieren
certbot (konfigurieren und) Zertifikat holen lassen
(womöglich) mailman-postfix installieren [hinweis: um den dienst mailman gestartet zu bekommen muss vermutlich erst ein mail-verteiler (mit /usr/local/mailman/bin/newlist
(mit -q
)) erstellt sein.]
(womöglich) apache für mailman konfigurieren
Untergeordnete Tickets 1 (0 offen — 1 geschlossen)
Zugehörige Tickets 1 (0 offen — 1 geschlossen)
Von MaximilianTraenkler vor mehr als 1 Jahr aktualisiert
- Status wurde von Neu zu Feedback geändert
- Zugewiesen an wurde von MaximilianTraenkler zu Bereich Administration Rechentechnik geändert
Der Webserver funktioniert nun und kann unter test.cert.htw.stura-dresden.de erreicht werden.
Wo darf ich die Dokumentation der Umsetzung hinterlegen? Bzw. an wen soll ich das übergeben?
Von MaximilianTraenkler vor mehr als 1 Jahr aktualisiert
- Beschreibung aktualisiert (Vergleich)
Von PaulRiegel vor mehr als 1 Jahr aktualisiert
MaximilianTraenkler schrieb (#note-2):
Der Webserver funktioniert nun und kann unter test.cert.htw.stura-dresden.de erreicht werden.
Wo darf ich die Dokumentation der Umsetzung hinterlegen? Bzw. an wen soll ich das übergeben?
Einfach hier, würde ich sagen.
Von PaulRiegel vor mehr als 1 Jahr aktualisiert
- Zugewiesen an wurde von Bereich Administration Rechentechnik zu MaximilianTraenkler geändert
Von MaximilianTraenkler vor mehr als 1 Jahr aktualisiert
Setup¶
Aufrufen von 141.56.51.195 (TrueNAS, wird irgendwann mal down gehen), anmelden mit root(8), und eine Jail erstellen. Dazu Namen angeben und FreeBSD 13.2 auswählen. VNET anschalten und öffentliche IP geben (hier 141.56.51.192 und es wurde eine Domaineintrag vorgenommen mit test.cert.htw.stura-dresden.de). Es wird nun die Jail mit iocage start <VM-Name>
gestartet und mit iocage console <VM-Name>
kann drauf zugegriffen werden.
Was passiert in der Jail?¶
pkg update #-> pgk mit yes installieren dannn nochmal ausführen (sollte aktuell sein)
Installieren der relevanten Pakete (plus vim um nicht mit vi und ee zu arbeiten)
pkg ins apache24 py39-certbot-apache vim mailman-postfix
Nach folgendem Shema wurde mod_ssl.so, cgid/cgi Modul, und mod_rewrite.so aktiviert. ( Achtung: mod_rewrite.so wird am Ende nicht gebraucht weil stattdessen einRedirect gemacht wurde). Dazu wird dann noch httpd-vhosts.conf inkludiert (Auch hier einfach die Zeile auskommentieren).
grep -n 'mod_ssl.so' /usr/local/etc/apache24/httpd.conf #-> ist in zeile 148
vim +148 /usr/local/etc/apache24/httpd.conf #auskommentieren von der Zeile mit LoadModule mod_ssl.so
# beim auskommentieren von mod_ssl.so wird ein fehler auftreten (modul wird nicht gefunden weil der Pfad falsch ist), wenn nicht explizit folgendes eingetragen wird als zweiters argument von LoadModule:
# /usr/local/libexec/apache24/mod_ssl.so
chown www /usr/local/mailman/archives/private
chmod o-x /usr/local/mailman/archives/private
Nutzer www der Gruppe mailman zuordnen.
pw usermod www -G mailman
Als nächstes habe ich die Datei /usr/local/etc/apache24/extra/httpd-vhosts.conf
angepasst und folgendes Eingetragen:
<VirtualHost test.cert.htw.stura-dresden.de:443>
ServerAdmin admin@stura.htw-dresden.de
DocumentRoot "/usr/local/mailman/lists"
ServerName test.cert.htw.stura-dresden.de
ServerAlias test.cert.htw.stura-dresdden.de
ErrorLog "/var/log/mailman-error.log"
<Directroy "/usr/local/mailman/archives/">
Options FollowSymLinks
AllowOverride None
</Directroy>
<Directroy "/usr/local/mailman">
Require all granted
Options FollowSymLinks
AllowOverride All
</Directroy>
Alias /pipermail/ /usr/local/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/
ScriptAlias /admin /usr/local/mailman/cgi-bin/admin
ScriptAlias /admindb /usr/local/mailman/cgi-bin/admindb
ScriptAlias /confirm /usr/local/mailman/cgi-bin/confirm
ScriptAlias /create /usr/local/mailman/cgi-bin/create
ScriptAlias /edithtml /usr/local/mailman/cgi-bin/edithrml
ScriptAlias /listinfo /usr/local/mailman/cgi-bin/listinfo
ScriptAlias /options /usr/local/mailman/cgi-bin/options
ScriptAlias /private /usr/local/mailman/cgi-bin/private
ScriptAlias /rmlist /usr/local/mailman/cgi-bin/rmlist
ScriptAlias /roster /usr/local/mailman/cgi-bin/roster
ScriptAlias /subscribe /usr/local/mailman/cgi-bin/subscribe
ScriptAlias /mailman /usr/local/mailman/cgi-bin/
ScriptAlias / /usr/local/mailman/cgi-bin/listinfo
</VirtualHost>
Anschließend wird /usr/local/mailman/Mailman/mm_cfg.py
folgendermaßen angepasst.
DEFAULT_URL_PATTERN = 'https://%s/'
DEFAULT_EMAIL_HOST = "test.cert.htw.stura-dresden.de"
DEFAULT_URL_HOST = "test.cert.htw.stura-dresden.de"
Jetzt wird die erste Liste erstellt:
/usr/local/mailman/bin/newlist mailman #hier wird admin@stura.htw-dresden (...mailman...) angegeben.
Jetzt wird /etc/rc.conf
angepasst.
# nachfolgende Zeile muss durch Kommentarzeichen (oder "NO") "unschädlich" gemacht werden
# ipv6_activate_all_interfaces="YES"
apche24_enable="YES"
mailman_enable="YES"
Jetzt den Service apache24 starten und dannach mailman
service apache24 start
service mailman start
Wenn das läuft wird dann der certbot ausgeführt
certbot --apache -d test.cert.htw.stura-dresden.de #TOS akzeptieren email cert@stura.htw-dresden.de angeben, den newsletter nicht abonieren
Der Certbot schreibt jetzt eine RewriteRule in unsere /...apache24/extra/httpd-vhosts.conf, das wollen wir so nicht: https://httpd.apache.org/docs/2.4/rewrite/avoid.html
Deshalb passen wir nund die httpd-vhosts.conf an. Zum einen wurde eine neue Konfiguration vom certbot erstellt (/.../apache24/extra/httpd-vhosts-le-ssl.conf
) für Port 443 und zum anderen brauchen wir die meisten Einstellungen nicht mehr in dieser Datei.
# Auskommentieren von
# RewriteEngine on
# RewriteCond ...
# RewriteRule ...
#Zusätzlich habe ich folgendes gelöscht (besser auskommentieren?)
ServerAdmin admin@stura.htw-dresden.de
#DocumentRoot "/usr/local/mailman/lists"
ServerName test.cert.htw.stura-dresden.de
ServerAlias test.cert.htw.stura-dresdden.de
ErrorLog "/var/log/mailman-error.log"
#<Directroy "/usr/local/mailman/archives/">
#Options FollowSymLinks
#AllowOverride None
#</Directroy>
#<Directroy "/usr/local/mailman">
#Require all granted
#Options FollowSymLinks
#AllowOverride All
#</Directroy>
#Alias /pipermail/ /usr/local/mailman/archives/public/
#Alias /images/mailman/ /usr/share/images/mailman/
#ScriptAlias /admin /usr/local/mailman/cgi-bin/admin
#ScriptAlias /admindb /usr/local/mailman/cgi-bin/admindb
#ScriptAlias /confirm /usr/local/mailman/cgi-bin/confirm
#ScriptAlias /create /usr/local/mailman/cgi-bin/create
#ScriptAlias /edithtml /usr/local/mailman/cgi-bin/edithrml
#ScriptAlias /listinfo /usr/local/mailman/cgi-bin/listinfo
#ScriptAlias /options /usr/local/mailman/cgi-bin/options
#ScriptAlias /private /usr/local/mailman/cgi-bin/private
#ScriptAlias /rmlist /usr/local/mailman/cgi-bin/rmlist
#ScriptAlias /roster /usr/local/mailman/cgi-bin/roster
#ScriptAlias /subscribe /usr/local/mailman/cgi-bin/subscribe
#ScriptAlias /mailman /usr/local/mailman/cgi-bin/
#ScriptAlias / /usr/local/mailman/cgi-bin/listinfo
#!!!!! Wichtig !!!!!! folgendes muss noch mit reingeschrieben werden:
Redirect "/" "https://test.cert.htw.stura-dresden.de"
Service apache 24 nun Restarten
service apache24 restart
Jetzt sollte alle funktionieren :)
Cronjob für die erneuerung des Zertifikates¶
Zum erstellen eine cronjobs mache ich folgendes:
crontab -e # das ruft vi auf
Folgdendes habe ich reingeschrieben:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute hour mday month wday command
0 0,12 * * * /usr/local/bin/certbot renew
Folgende Rescourcen standen mir bei:
https://wiki.list.org/DOC/4.27%20Securing%20Mailman%27s%20web%20GUI%20by%20using%20Secure%20HTTP-SSL%20%28HTTPS%29
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-freebsd-12-0
https://www.howtoforge.com/how-to-install-and-configure-mailman-with-postfix-on-debian-squeeze
https://httpd.apache.org/docs/2.4/rewrite/avoid.html
Von MaximilianTraenkler vor mehr als 1 Jahr aktualisiert
- Zugewiesen an wurde von MaximilianTraenkler zu Bereich Administration Rechentechnik geändert
Von PaulRiegel vor mehr als 1 Jahr aktualisiert
- Status wurde von Feedback zu Erledigt geändert
- Zugewiesen an wurde von Bereich Administration Rechentechnik zu MaximilianTraenkler geändert
Von PaulRiegel vor mehr als 1 Jahr aktualisiert
- Vorgänger von Aufgabe #1642: TLS für lists.stura.htw-dresden.de für https einrichten wurde hinzugefügt
Von PaulRiegel vor mehr als 1 Jahr aktualisiert
- Status wurde von Erledigt zu Feedback geändert
Von MaximilianTraenkler vor etwa 1 Jahr aktualisiert
Das mit dem Certbot renew funktioniert. Vorraussichtlich wird das nächste mal am 03.10.23 renewed (30 Tage vor dem Ablauf des Zertifikates). Das soll nochmal geprüft werden ob das auch passiert.
Das renewal des Zertifikates hat erstmal nichts mit letsencrypt zu tun. Bei letsencrypt ist ein renewal eine Anfrage auf ein neues Zertifikat. (https://letsencrypt.org/documents/isrg-cp-cps-v5.1/#4.6-certificate-renewal)
Das renewal hängt vom certbot (eine ACME client Implementierung. Hier sind mehr zu finden: https://letsencrypt.org/docs/client-options/ ) ab.
In der Certbot Doku (https://eff-certbot.readthedocs.io/en/stable/using.html#renewing-certificates) wird geschrieben, wann ein Zertifikat erneuert wird.