workshop:sicherheit:webssl
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| workshop:sicherheit:webssl [2025/02/16 11:48] – Branislav Zeljak | workshop:sicherheit:webssl [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== SSL für Apache Webserver ====== | ||
| - | |||
| - | **SSL (Secure Sockets Layer)** und **TLS (Transport Layer Security)** sind Protokolle zur Verschlüsselung der Kommunikation zwischen Webservern und Clients. Der Apache Webserver kann so konfiguriert werden, dass er HTTPS-Verbindungen ermöglicht, | ||
| - | |||
| - | In modernen Systemen wird TLS verwendet, während SSL weitgehend als veraltet gilt. In diesem Artikel wird beschrieben, | ||
| - | |||
| - | ===== Voraussetzungen ===== | ||
| - | Um SSL auf einem Apache Webserver zu aktivieren, benötigen Sie: | ||
| - | - Ein funktionierender Apache Webserver (Apache 2.x). | ||
| - | - Ein SSL-Zertifikat und der zugehörige private Schlüssel. | ||
| - | - Zugriff auf die Serverkonfiguration (häufig als root oder mit sudo-Rechten). | ||
| - | |||
| - | ===== Syntax ===== | ||
| - | <code bash> | ||
| - | a2enmod ssl | ||
| - | systemctl restart apache2 | ||
| - | </ | ||
| - | |||
| - | ===== Wichtige Schritte zur Aktivierung von SSL ===== | ||
| - | |||
| - | ===== 1. Installieren des SSL-Moduls ===== | ||
| - | Apache benötigt das `ssl`-Modul, | ||
| - | |||
| - | **Debian/ | ||
| - | <code bash> | ||
| - | sudo apt install apache2 ssl-cert | ||
| - | </ | ||
| - | |||
| - | **RHEL/ | ||
| - | <code bash> | ||
| - | sudo yum install mod_ssl | ||
| - | </ | ||
| - | |||
| - | **Aktivieren des SSL-Moduls: | ||
| - | <code bash> | ||
| - | sudo a2enmod ssl | ||
| - | sudo systemctl restart apache2 | ||
| - | </ | ||
| - | |||
| - | ===== 2. Erstellen oder Erhalten eines SSL-Zertifikats ===== | ||
| - | Es gibt zwei Hauptmethoden, | ||
| - | - **Kostenloses Zertifikat von Let's Encrypt**: Eine der beliebtesten Methoden für SSL-Zertifikate. | ||
| - | - **Zertifikat von einer kommerziellen Zertifizierungsstelle (CA)**: Wenn Sie ein Zertifikat von einer vertrauenswürdigen CA wie Comodo, Symantec oder GlobalSign benötigen. | ||
| - | |||
| - | **Erstellen eines selbstsignierten SSL-Zertifikats für Tests** | ||
| - | |||
| - | Wenn Sie nur ein selbstsigniertes Zertifikat für Testzwecke benötigen, können Sie es mit `openssl` erstellen: | ||
| - | |||
| - | <code bash> | ||
| - | openssl req -x509 -newkey rsa:4096 -keyout / | ||
| - | </ | ||
| - | |||
| - | Erklärung des Befehls: | ||
| - | - `req` erstellt ein Zertifikatsanforderungsobjekt. | ||
| - | - `-x509` bedeutet, dass ein selbstsigniertes Zertifikat erstellt wird. | ||
| - | - `-newkey rsa:4096` erstellt einen neuen privaten Schlüssel mit einer Länge von 4096 Bit. | ||
| - | - `-keyout` gibt an, wohin der private Schlüssel gespeichert wird. | ||
| - | - `-out` gibt den Speicherort des Zertifikats an. | ||
| - | - `-days 365` legt die Gültigkeit des Zertifikats auf 365 Tage fest. | ||
| - | |||
| - | **Erhalten eines Zertifikats von einer CA (Let's Encrypt)** | ||
| - | |||
| - | Um ein kostenloses SSL-Zertifikat von **Let' | ||
| - | |||
| - | 1. Installieren Sie **Certbot**: | ||
| - | - **Debian/ | ||
| - | < | ||
| - | sudo apt install certbot python3-certbot-apache | ||
| - | </ | ||
| - | - **RHEL/ | ||
| - | < | ||
| - | sudo yum install certbot python3-certbot-apache | ||
| - | </ | ||
| - | |||
| - | 2. Fordern Sie ein Zertifikat an: | ||
| - | < | ||
| - | sudo certbot --apache | ||
| - | </ | ||
| - | |||
| - | | ||
| - | |||
| - | **Zertifikat von einer kommerziellen CA erwerben** | ||
| - | |||
| - | Wenn Sie ein Zertifikat von einer kommerziellen CA kaufen möchten, müssen Sie in der Regel eine **CSR (Certificate Signing Request)** generieren und die Zertifikatsdateien von der CA erhalten: | ||
| - | |||
| - | 1. Erstellen Sie eine CSR mit OpenSSL: | ||
| - | < | ||
| - | | ||
| - | </ | ||
| - | |||
| - | 2. Senden Sie die CSR-Datei an die CA Ihrer Wahl. | ||
| - | 3. Sobald die CA das Zertifikat signiert hat, erhalten Sie die Zertifikatsdatei und möglicherweise Zwischenzertifikate. | ||
| - | |||
| - | ===== 3. Konfigurieren des Apache Webservers ===== | ||
| - | Bearbeiten Sie die Apache-Konfigurationsdatei für den SSL-Host: | ||
| - | |||
| - | **Debian/ | ||
| - | <code bash> | ||
| - | sudo nano / | ||
| - | </ | ||
| - | |||
| - | **RHEL/ | ||
| - | <code bash> | ||
| - | sudo nano / | ||
| - | </ | ||
| - | |||
| - | Fügen Sie die Pfade zu Ihrem SSL-Zertifikat und dem privaten Schlüssel hinzu: | ||
| - | <code apacheconf> | ||
| - | < | ||
| - | DocumentRoot / | ||
| - | ServerName yourdomain.com | ||
| - | |||
| - | SSLEngine on | ||
| - | SSLCertificateFile / | ||
| - | SSLCertificateKeyFile / | ||
| - | |||
| - | # Optional: SSL Zertifikatskette für CA-Zertifikate | ||
| - | SSLCertificateChainFile / | ||
| - | |||
| - | # Sicherheitsoptimierungen | ||
| - | SSLProtocol all -SSLv2 -SSLv3 | ||
| - | SSLCipherSuite HIGH: | ||
| - | </ | ||
| - | |||
| - | **Hinweis: | ||
| - | - Achten Sie darauf, dass der Pfad zu Ihrem SSL-Zertifikat und dem privaten Schlüssel korrekt angegeben ist. | ||
| - | - Falls Sie ein Zertifikat von einer Zertifizierungsstelle haben, fügen Sie auch die Zwischenzertifikate (SSLCertificateChainFile) hinzu, um die Kette der Vertrauenswürdigkeit zu gewährleisten. | ||
| - | |||
| - | ===== 4. Aktivieren der SSL-Website und Neustart des Apache ===== | ||
| - | Um die SSL-Website zu aktivieren, verwenden Sie den folgenden Befehl: | ||
| - | <code bash> | ||
| - | sudo a2ensite default-ssl.conf | ||
| - | sudo systemctl restart apache2 | ||
| - | </ | ||
| - | |||
| - | Alternativ für RHEL/ | ||
| - | <code bash> | ||
| - | sudo systemctl restart httpd | ||
| - | </ | ||
| - | |||
| - | ===== 5. Testen der SSL-Verbindung ===== | ||
| - | Nach dem Neustart von Apache können Sie überprüfen, | ||
| - | |||
| - | Beispiel: | ||
| - | <code bash> | ||
| - | https:// | ||
| - | </ | ||
| - | |||
| - | Wenn alles korrekt konfiguriert ist, sollten Sie eine sichere Verbindung (angezeigt durch ein Vorhängeschloss in der Adressleiste des Browsers) sehen. | ||
| - | |||
| - | ===== Wichtige Optionen ===== | ||
| - | ^ Option | ||
| - | | `SSLEngine` | ||
| - | | `SSLCertificateFile` | ||
| - | | `SSLCertificateKeyFile` | ||
| - | | `SSLCertificateChainFile` | ||
| - | | `SSLProtocol` | ||
| - | | `SSLCipherSuite` | ||
| - | |||
| - | ===== Weitere Sicherheitseinstellungen ===== | ||
| - | Es ist wichtig, sicherzustellen, | ||
| - | |||
| - | <code apacheconf> | ||
| - | SSLProtocol TLSv1.2 TLSv1.3 | ||
| - | SSLCipherSuite EECDH+AESGCM: | ||
| - | SSLHonorCipherOrder on | ||
| - | </ | ||
| - | |||
| - | Diese Konfiguration stellt sicher, dass nur TLSv1.2 und TLSv1.3 verwendet werden und dass nur starke Verschlüsselungssuiten zum Einsatz kommen. | ||
| - | |||
| - | ===== Weitere Informationen ===== | ||
| - | Die Man-Page liefert detaillierte Informationen zu den SSL-Optionen und zur Konfiguration von Apache mit SSL: | ||
| - | <code bash> | ||
| - | man apache2 | ||
| - | </ | ||
