PKI kleines Projekt: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Testen) |
|||
| Zeile 98: | Zeile 98: | ||
| + | |||
| + | =Konfiguration testen und aktivieren= | ||
| + | *sudo apache2ctl configtest | ||
| + | *sudo systemctl reload apache2 | ||
=Testen= | =Testen= | ||
| Zeile 105: | Zeile 109: | ||
;verschlüsselt | ;verschlüsselt | ||
*https://www.it2XX.int | *https://www.it2XX.int | ||
| + | |||
=Handling und Kontrolle= | =Handling und Kontrolle= | ||
*ss -lntp | egrep "80|443" | *ss -lntp | egrep "80|443" | ||
Version vom 3. August 2026, 13:08 Uhr
Ziel des Projektes
- Wir wollen einen Apache2 Webserver auf dem ns testweise integrieren
Installation
Apache2 wird zusammen mit PHP und dem Apache-PHP-Modul installiert.
- sudo apt update
- sudo apt install -y apache2 php libapache2-mod-php
PHP aktivieren
Das PHP- und das SSL-Modul werden aktiviert. Damit die Änderung greift, muss Apache anschließend neu gestartet werden.
- sudo a2enmod php8.4 ssl
- sudo systemctl restart apache2
Webroot
Das Webroot-Verzeichnis ist der Standardort für Webseiten unter Apache.
- ls /var/www/html
Dynamische Testseite erstellen
Die Datei index.php ersetzt die Apache-Standardseite und gibt Systeminformationen aus.
- sudo vi /var/www/html/index.php
Inhalt der Datei:
<?php
$hostname = gethostname();
$ip = $_SERVER['SERVER_ADDR'];
$domain = php_uname('n');
// Gateway und Nameserver aus /etc/resolv.conf und ip route auslesen
$nameserver = shell_exec("awk '/^nameserver/{print $2; exit}' /etc/resolv.conf");
$gateway = shell_exec("ip route | awk '/^default/{print $3; exit}'");
?>
<!DOCTYPE html>
<html>
<head><title>Systeminfo</title></head>
<body>
<h1>Systeminfo</h1>
<table>
<tr><td>Hostname</td><td><?= htmlspecialchars($hostname) ?></td></tr>
<tr><td>IP-Adresse</td><td><?= htmlspecialchars($ip) ?></td></tr>
<tr><td>Domain</td><td><?= htmlspecialchars($domain) ?></td></tr>
<tr><td>Nameserver</td><td><?= htmlspecialchars(trim($nameserver)) ?></td></tr>
<tr><td>Gateway</td><td><?= htmlspecialchars(trim($gateway)) ?></td></tr>
</table>
</body>
</html>
Standardseite löschen
Die Apache-Standardseite wird gelöscht damit die neue PHP-Seite aufgerufen wird.
- sudo rm /var/www/html/index.html
Konfiguration der Seiten
- Verfügbare Konfigurationen
- DIR: /etc/apache2/sites-available/
- Aktivierten Konfigurationen
- DIR: /etc/apache2/sites-enabled
Neue Konfigurationen anlegen
- sudo vi /etc/apache2/sites-available/it.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/own.crt
SSLCertificateKeyFile /etc/apache2/own.key
</VirtualHost>
Aktivieren und deaktivieren
- deaktivieren der Default Seite
- sudo a2dissite 000-default.conf
- aktivieren unserer Seite
- sudo a2ensite it.conf
Zertifizierungsstelle und Zertifkat erstellen
CA erstellen
- CA=it2XX-ca
- openssl req -new -x509 -newkey rsa:4096 -nodes -keyout $CA.key -out $CA.crt -days 3650 -subj "/CN=$CA"
Anzeigen des CA Certs
- openssl x509 -noout -text -in $CA.crt
Request und Privaten Key erstellen
FQDN=ns.it2XX.int
- openssl req -new -newkey rsa:4096 -nodes -keyout $FQDN.key -out $FQDN.csr -subj "/CN=$FQDN"
Signierung
- openssl x509 -req -days 1460 -in $FQDN.csr -CA $CA.crt -CAkey $CA.key -CAcreateserial -out $FQDN.crt -extfile <(echo "subjectAltName=DNS:$FQDN")
Zertifikat anzeigen
- openssl x509 -noout -text -in $FQDN.crt
Einbauen des Stammzertifikates
- Nameserver
- cp $CA.crt /usr/local/share/ca-certificates
- update-ca-certificates
- Client
- scp $CA.crt kit@172.26.2XX.10:
dort
- sudo cp $CA.crt /usr/local/share/ca-certificates
- sudo update-ca-certificates
und in den Firefox importieren
Konfiguration testen und aktivieren
- sudo apache2ctl configtest
- sudo systemctl reload apache2
Testen
Im Browser die FQDN des Servers aufrufen.
- unverschlüsselt
- verschlüsselt
Handling und Kontrolle
- ss -lntp | egrep "80|443"
- systemctl start apache2
- systemctl stop apache2
- systemctl restart apache2
- systemctl reload apache2
- systemctl enable apache2
- systemctl disable apache2
- systemctl status apache2
- journalctl -fu apache2
- journalctl -xu apache2
- tail -f /var/log/apache2/access.log