Benutzer-Werkzeuge

Webseiten-Werkzeuge


workshop:sicherheit:webssl

Dies ist eine alte Version des Dokuments!


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

a2enmod ssl
systemctl restart apache2

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:

sudo apt install apache2 ssl-cert

RHEL/CentOS/Fedora:

sudo yum install mod_ssl

Aktivieren des SSL-Moduls:

sudo a2enmod ssl
sudo systemctl restart apache2

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:

openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/apache.key -out /etc/ssl/certs/apache.crt -days 365

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:

  1. Debian/Ubuntu:
     sudo apt install certbot python3-certbot-apache
 
  1. RHEL/CentOS/Fedora:
     sudo yum install certbot python3-certbot-apache
 

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:

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

RHEL/CentOS/Fedora:

sudo nano /etc/httpd/conf.d/ssl.conf

Fügen Sie die Pfade zu Ihrem SSL-Zertifikat und dem privaten Schlüssel hinzu:

<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

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:

sudo a2ensite default-ssl.conf
sudo systemctl restart apache2

Alternativ für RHEL/CentOS:

sudo systemctl restart httpd

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:

https://yourdomain.com

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:

SSLProtocol TLSv1.2 TLSv1.3
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
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:

man apache2
workshop/sicherheit/webssl.1739706497.txt.gz · Zuletzt geändert: (Externe Bearbeitung)