Apache2 Kit: Unterschied zwischen den Versionen
| Zeile 47: | Zeile 47: | ||
| − | |||
'''Installation Apache2 & OpenSSL''' | '''Installation Apache2 & OpenSSL''' | ||
Version vom 23. März 2026, 14:36 Uhr
Vorab
- Klont das Template als Webserver laut Plan wenn noch nicht geschehen.
- Legt 4 neue A-Records, server, docker, gelb und blau (Ihr braucht keine PTR-Records)
- Alles sollen auf die IP des Webservers zeigen
.:Zur Erinnerung
- In eurer it2xx.int Zone dort folgendes hinzufügen:
cat /var/cache/bind/it2xx.int
docker IN A 10.88.2xx.11 gelb IN A 10.88.2xx.11 blau IN A 10.88.2xx.11 server IN A 10.88.2xx.11
- Danach Zone neu signieren
dnssec-signzone -A -N INCREMENT -o it2xx.int -t /var/cache/bind/it2xx.int
- Named neu starten
rndc reload oder systemctl restart named
- Testet ob die Einträge ok sind
Vorbereitung
Zertifikate erstellen
Auf dem Client
- Als kit user
für die Rechner
cd intermediate-ca/
server, docker, gelb und blau
- Varibeln setzen
CA=it213-ca FQDN=www.it213.int
- CSR erzeugen
openssl req -new -newkey rsa:2048 -nodes -keyout $FQDN.key -out $FQDN.csr -subj "/CN=$FQDN"
- Signieren
openssl x509 -req -in $FQDN.csr -CA $CA.crt -CAkey $CA.key -CAcreateserial -out $FQDN.crt -days 365 -extfile <(printf "subjectAltName=DNS:$FQDN")
- Fullchain erstellen
cat $FQDN.crt $CA.crt > $FQDN-fullchain.pem
- Auf das Ziel kopieren
scp $FQDN-fullchain.pem $FQDN.key kit@$www:
Auf dem www
- Verzeichnis erstellen
- sudo mkdir -p /etc/apache2/ssl
- Alle KEY und Fullchains in dieses Verzeichnis kopieren.
Installation Apache2 & OpenSSL
- apt install -y apache2 openssl
Module aktivieren
- a2enmod ssl
- a2enmod rewrite
- a2enmod headers
- a2enmod proxy
- a2enmod proxy_http
- a2enmod proxy_wstunnel
- systemctl reload apache2
Testinhalte bereitstellen
Hilfsskript herunterladen
- cd /root
- wget https://xinux.de/downloads/html/webgen.sh
- chmod +x webgen.sh
Verzeichnisse erstellen
- mkdir -p /var/www/{server,docker,gelb,blau}
Inhalte generieren und ablegen
- bash webgen.sh server > /var/www/server/index.html
- bash webgen.sh docker > /var/www/docker/index.html
- bash webgen.sh gelb > /var/www/gelb/index.html
- bash webgen.sh blau > /var/www/blau/index.html
Virtuelle Hosts mit HTTPS
Standardkonfiguration für HTTPS Erstelle Datei: /etc/apache2/sites-available/server.conf
<VirtualHost *:443>
ServerName server.it2XX.int
DocumentRoot /var/www/server
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.it2XX.int-fullchain.pem
SSLCertificateKeyFile /etc/apache2/ssl/server.it2XX.int.key
<Directory /var/www/server>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/server_error.log
CustomLog ${APACHE_LOG_DIR}/server_access.log combined
</VirtualHost>
Weitere Seiten Dupliziere den Block für:
- docker.it1XX.int → /var/www/docker
- gelb.it1XX.int → /var/www/gelb
- blau.it1XX.int → /var/www/blau
Jeweils mit eigenem Logfile und DocumentRoot
Aktivieren
- a2ensite server.conf
- a2ensite docker.conf
- a2ensite gelb.conf
- a2ensite blau.conf
- systemctl reload apache2
HTTP auf HTTPS umleiten
Erstelle Datei: /etc/apache2/sites-available/redirect.conf
<VirtualHost *:80>
ServerName server.it2XX.int
Redirect permanent / https://server.it1XX.int/
</VirtualHost>
Dupliziere und passe für alle vier Domains an. Dann:
- a2ensite redirect.conf (und weitere)
- systemctl reload apache2
Optionen testen
Ändere in einem <Directory>:
Options -Indexes +FollowSymLinks
Rufe eine Seite ohne index.html auf – Verzeichnis darf nun nicht mehr angezeigt werden.
Zugriff beschränken (IP)
<Directory /var/www/verwaltung>
Require ip 10.88.1XX.0/24
</Directory>
Logging kontrollieren
- tail -f /var/log/apache2/server_access.log
- tail -f /var/log/apache2/server_error.log
- journalctl -fu apache2
Kontrolle & Status
- apachectl configtest
- systemctl restart apache2
- ss -lntp | grep apache2
- apachectl status (mod_status aktivieren falls gewünscht)
.htaccess in /var/www/gelb aktivieren
In der Konfiguration von gelb.it1XX.int sicherstellen:
<Directory /var/www/gelb>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Datei .htaccess anlegen
- echo "Hallo nur mit Authentifizierung" > /var/www/gelb/index.html
Erstelle Datei */var/www/gelb/.htaccess* mit folgendem Inhalt:
AuthType Basic AuthName "Geschützter Bereich" AuthUserFile /etc/apache2/.htpasswd Require valid-user
Benutzer für Authentifizierung anlegen
Erstelle Passwortdatei mit Benutzer admin
- htpasswd -c /etc/apache2/.htpasswd admin
(Beim Nachfragen Passwort vergeben, z. B. geheim)
Apache neu laden
- systemctl reload apache2
Test: Rufe gelb.it1XX.int im Browser auf – du solltest zur Anmeldung aufgefordert werden.
Hinweis: Die Datei `.htpasswd` kann für mehrere Seiten verwendet werden – oder jede Seite bekommt eine eigene.
Reverse Proxy Beispiel
Websocket und Webapp auf Port 3000
<VirtualHost *:443>
ServerName docker.it1XX.int
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/docker.it1XX.int.crt
SSLCertificateKeyFile /etc/apache2/ssl/docker.it1XX.int.key
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ProxyPass /socket ws://127.0.0.1:3000/socket
ProxyPassReverse /socket ws://127.0.0.1:3000/socket
</VirtualHost>