Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
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:
- Debian/Ubuntu:
sudo apt install certbot python3-certbot-apache
- 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
