SSL-Apache2/Readme.md
2025-03-06 10:46:04 +00:00

2.7 KiB

Lokalen Apache-Webserver mit Self-Signed Certificate absichern

1. OpenSSL zur Zertifikatserstellung verwenden

Falls OpenSSL nicht installiert ist:

Verzeichnis für Zertifikate erstellen:

sudo mkdir -p /etc/apache2/ssl
cd /etc/apache2/ssl

Privaten Schlüssel und Zertifikat generieren:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout apache-selfsigned.key -out apache-selfsigned.crt

Angabe des Common Name (CN) mit IP-Adresse oder Domainnamen (z. B. localhost).


2. Apache für SSL konfigurieren

SSL-Modul aktivieren:

sudo a2enmod ssl
sudo systemctl restart apache2

SSL-VHost-Konfiguration bearbeiten:

sudo nano /etc/apache2/sites-available/default-ssl.conf

Konfiguration anpassen:

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache-selfsigned.key

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

SSL-Host aktivieren und Apache neu starten:

sudo a2ensite default-ssl
sudo systemctl restart apache2

3. Firewall-Regeln anpassen (optional)

Falls UFW aktiv ist:

sudo ufw allow 'Apache Full'

Falls firewalld genutzt wird:

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

4. Zertifikat im Browser vertrauen

Da es ein selbstsigniertes Zertifikat ist, muss es manuell als vertrauenswürdig markiert werden:

  • Windows: certmgr.msc öffnen → "Vertrauenswürdige Stammzertifizierungsstellen" → Zertifikat importieren.
  • Linux:
sudo cp apache-selfsigned.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

5. Automatische HTTPS-Weiterleitung (optional)

HTTP zu HTTPS weiterleiten:

sudo nano /etc/apache2/sites-available/000-default.conf

Folgenden Inhalt hinzufügen:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    Redirect permanent / https://localhost/
</VirtualHost>

Apache neu starten:

sudo systemctl restart apache2

6. Teste die Verbindung vom Client:

curl -v https://FQDN-DES-SERVERS.TLD

Jetzt ist der Apache-Server mit HTTPS (self-signed) erreichbar. 🎉