Benutzer-Werkzeuge

Webseiten-Werkzeuge


workshop:sicherheit:webssl

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
workshop:sicherheit:webssl [2025/02/16 11:48] Branislav Zeljakworkshop: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, wodurch die Kommunikation mit der Website sicher und vertraulich bleibt. 
- 
-In modernen Systemen wird TLS verwendet, während SSL weitgehend als veraltet gilt. In diesem Artikel wird beschrieben, wie SSL/TLS auf einem Apache Webserver eingerichtet wird. 
- 
-===== 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 
-</code> 
- 
-===== Wichtige Schritte zur Aktivierung von SSL ===== 
- 
-===== 1. Installieren des SSL-Moduls ===== 
-Apache benötigt das `ssl`-Modul, um SSL/TLS-Verbindungen zu verarbeiten. Dieses Modul ist in den meisten modernen Apache-Installationen bereits enthalten, kann aber auch nachinstalliert werden. 
- 
-**Debian/Ubuntu:** 
-<code bash> 
-sudo apt install apache2 ssl-cert 
-</code> 
- 
-**RHEL/CentOS/Fedora:** 
-<code bash> 
-sudo yum install mod_ssl 
-</code> 
- 
-**Aktivieren des SSL-Moduls:** 
-<code bash> 
-sudo a2enmod ssl 
-sudo systemctl restart apache2 
-</code> 
- 
-===== 2. Erstellen oder Erhalten eines SSL-Zertifikats ===== 
-Es gibt zwei Hauptmethoden, um ein SSL-Zertifikat zu erhalten: 
-- **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 /etc/ssl/private/apache.key -out /etc/ssl/certs/apache.crt -days 365 
-</code> 
- 
-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's Encrypt** zu erhalten, können Sie **Certbot** verwenden, ein Werkzeug, das automatisch Zertifikate anfordert und installiert: 
- 
-1. Installieren Sie **Certbot**: 
-   - **Debian/Ubuntu**: 
-     <code bash> 
-     sudo apt install certbot python3-certbot-apache 
-     </code> 
-   - **RHEL/CentOS/Fedora**: 
-     <code bash> 
-     sudo yum install certbot python3-certbot-apache 
-     </code> 
- 
-2. Fordern Sie ein Zertifikat an: 
-   <code bash> 
-   sudo certbot --apache 
-   </code> 
- 
-   Certbot konfiguriert automatisch Apache und richtet SSL ein. Es fragt Sie nach einigen Details (wie der E-Mail-Adresse für Benachrichtigungen und der Domain, für die das Zertifikat ausgestellt wird). 
- 
-**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: 
-   <code bash> 
-   openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/apache.key -out /etc/ssl/certs/apache.csr 
-   </code> 
- 
-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/Ubuntu**: 
-<code bash> 
-sudo nano /etc/apache2/sites-available/default-ssl.conf 
-</code> 
- 
-**RHEL/CentOS/Fedora**: 
-<code bash> 
-sudo nano /etc/httpd/conf.d/ssl.conf 
-</code> 
- 
-Fügen Sie die Pfade zu Ihrem SSL-Zertifikat und dem privaten Schlüssel hinzu: 
-<code apacheconf> 
-<VirtualHost _default_:443> 
-    DocumentRoot /var/www/html 
-    ServerName yourdomain.com 
- 
-    SSLEngine on 
-    SSLCertificateFile /etc/ssl/certs/apache.crt 
-    SSLCertificateKeyFile /etc/ssl/private/apache.key 
- 
-    # Optional: SSL Zertifikatskette für CA-Zertifikate 
-    SSLCertificateChainFile /etc/ssl/certs/intermediate.crt 
- 
-    # Sicherheitsoptimierungen 
-    SSLProtocol all -SSLv2 -SSLv3 
-    SSLCipherSuite HIGH:!aNULL:!MD5 
-</code> 
- 
-**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 
-</code> 
- 
-Alternativ für RHEL/CentOS: 
-<code bash> 
-sudo systemctl restart httpd 
-</code> 
- 
-===== 5. Testen der SSL-Verbindung ===== 
-Nach dem Neustart von Apache können Sie überprüfen, ob SSL korrekt funktioniert, indem Sie Ihre Website mit `https://` anstelle von `http://` aufrufen. 
- 
-Beispiel: 
-<code bash> 
-https://yourdomain.com 
-</code> 
- 
-Wenn alles korrekt konfiguriert ist, sollten Sie eine sichere Verbindung (angezeigt durch ein Vorhängeschloss in der Adressleiste des Browsers) sehen. 
- 
-===== Wichtige Optionen ===== 
-^ Option                         ^ Beschreibung                                               ^ 
-| `SSLEngine`                    | Aktiviert oder deaktiviert SSL für die Website.              | 
-| `SSLCertificateFile`            | Gibt den Pfad zum SSL-Zertifikat an.                         | 
-| `SSLCertificateKeyFile`         | Gibt den Pfad zum privaten Schlüssel an.                     | 
-| `SSLCertificateChainFile`       | Gibt den Pfad zur Zwischenzertifikatsdatei an (falls erforderlich). | 
-| `SSLProtocol`                   | Bestimmt, welche SSL/TLS-Protokolle verwendet werden (z.B. `TLSv1.2`). | 
-| `SSLCipherSuite`                | Legt fest, welche Verschlüsselungsverfahren verwendet werden. | 
- 
-===== Weitere Sicherheitseinstellungen ===== 
-Es ist wichtig, sicherzustellen, dass nur sichere SSL/TLS-Protokolle und Verschlüsselungsverfahren verwendet werden. Hier ist eine empfohlene Konfiguration für die Sicherheit: 
- 
-<code apacheconf> 
-SSLProtocol TLSv1.2 TLSv1.3 
-SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH 
-SSLHonorCipherOrder on 
-</code> 
- 
-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 
-</code>