Projekt

Allgemein

Profil

Aktionen

Aufgabe #1625

offen

"Abhandlung" https mit certbot für apache bei FreeBSD (Jail TrueNAS CORE)

Von PaulRiegel vor 10 Monaten hinzugefügt. Vor 6 Monaten aktualisiert.

Status:
Feedback
Priorität:
Normal
Zugewiesen an:
Kategorie:
Instanz Mailman
Beginn:
02.06.2023
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:
3:00 h
Aufgewendete Zeit:

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

https://test.cert.htw.stura-dresden.de


Untergeordnete Tickets 1 (0 offen1 geschlossen)

Aufgabe #1643: Entfernung Container zum Test der Anwendung Certbot für Apache auf FreeBSDErledigtZuständigkeit Instandhaltung IT-Services02.06.2023

Aktionen

Zugehörige Tickets 1 (0 offen1 geschlossen)

Vorgänger von Bereich Administration Rechentechnik - Aufgabe #1642: TLS für lists.stura.htw-dresden.de für https einrichtenErledigtPaulRiegel03.06.202303.06.2023

Aktionen
Aktionen #2

Von MaximilianTraenkler vor 10 Monaten 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?

Aktionen #3

Von MaximilianTraenkler vor 10 Monaten aktualisiert

Aktionen #4

Von PaulRiegel vor 10 Monaten 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.

Aktionen #5

Von PaulRiegel vor 10 Monaten aktualisiert

  • Zugewiesen an wurde von Bereich Administration Rechentechnik zu MaximilianTraenkler geändert
Aktionen #6

Von MaximilianTraenkler vor 10 Monaten 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

Aktionen #7

Von MaximilianTraenkler vor 10 Monaten aktualisiert

  • Zugewiesen an wurde von MaximilianTraenkler zu Bereich Administration Rechentechnik geändert
Aktionen #8

Von PaulRiegel vor 10 Monaten aktualisiert

  • Status wurde von Feedback zu Erledigt geändert
  • Zugewiesen an wurde von Bereich Administration Rechentechnik zu MaximilianTraenkler geändert
Aktionen #9

Von PaulRiegel vor 10 Monaten aktualisiert

  • Vorgänger von Aufgabe #1642: TLS für lists.stura.htw-dresden.de für https einrichten wurde hinzugefügt
Aktionen #10

Von PaulRiegel vor 10 Monaten aktualisiert

  • Status wurde von Erledigt zu Feedback geändert
Aktionen #11

Von MaximilianTraenkler vor 6 Monaten 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.

Aktionen

Auch abrufbar als: Atom PDF