Apache2 Kit: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 24: Zeile 24:
 
*mkdir -p /etc/apache2/csr
 
*mkdir -p /etc/apache2/csr
 
*mkdir -p /etc/apache2/ssl
 
*mkdir -p /etc/apache2/ssl
 +
*export DOM="it113.int"
 +
  
 
'''CSR und Key für server.it1XX.int'''
 
'''CSR und Key für server.it1XX.int'''
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/server.key -out /etc/apache2/csr/server.csr -subj "/CN=server.it1XX.int"
+
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/server.$DOM.key -out /etc/apache2/csr/server.$DOM.csr -subj "/CN=server.$DOM"
  
 
'''CSR und Key für docker.it1XX.int'''
 
'''CSR und Key für docker.it1XX.int'''
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/docker.key -out /etc/apache2/csr/docker.csr -subj "/CN=docker.it1XX.int"
+
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/docker.$DOM.key -out /etc/apache2/csr/docker.$DOM.csr -subj "/CN=docker.$DOM"
  
 
'''CSR und Key für gelb.it1XX.int'''
 
'''CSR und Key für gelb.it1XX.int'''
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/gelb.key -out /etc/apache2/csr/gelb.csr -subj "/CN=gelb.it1XX.int"
+
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/gelb.$DOM.key -out /etc/apache2/csr/gelb.$DOM.csr -subj "/CN=gelb.$DOM"
  
 
'''CSR und Key für blau.it1XX.int'''
 
'''CSR und Key für blau.it1XX.int'''
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/blau.key -out /etc/apache2/csr/blau.csr -subj "/CN=blau.it1XX.int"
+
*openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/blau.$DOM.key -out /etc/apache2/csr/blau.$DOM.csr -subj "/CN=blau.$DOM"
 +
 
  
 
'''Hinweis'''
 
'''Hinweis'''

Version vom 24. März 2025, 09:21 Uhr

Vorab

  • Klont das Template als Webserver laut Plan
  • Legt 4 neue A-Records, server, docker, gelb und blau (Ihr braucht keine PTR-Records)
  • Alles sollen auf die IP des Wenservers zeigen
  • Spielt auf dem Webserver das ca.crt ein.

Vorbereitung

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

Zertifikate vorbereiten

Verzeichnisse anlegen

  • mkdir -p /etc/apache2/csr
  • mkdir -p /etc/apache2/ssl
  • export DOM="it113.int"


CSR und Key für server.it1XX.int

  • openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/server.$DOM.key -out /etc/apache2/csr/server.$DOM.csr -subj "/CN=server.$DOM"

CSR und Key für docker.it1XX.int

  • openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/docker.$DOM.key -out /etc/apache2/csr/docker.$DOM.csr -subj "/CN=docker.$DOM"

CSR und Key für gelb.it1XX.int

  • openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/gelb.$DOM.key -out /etc/apache2/csr/gelb.$DOM.csr -subj "/CN=gelb.$DOM"

CSR und Key für blau.it1XX.int

  • openssl req -new -nodes -newkey rsa:2048 -keyout /etc/apache2/csr/blau.$DOM.key -out /etc/apache2/csr/blau.$DOM.csr -subj "/CN=blau.$DOM"


Hinweis

  • Die Dateien *.key und *.crt werden nach der Signierung nach /etc/apache2/ssl/ verschoben

Testinhalte bereitstellen

Hilfsskript herunterladen

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.it1XX.int
    DocumentRoot /var/www/server

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl/server.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.it1XX.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/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl/server.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>