SSL-Installation in Apache und HTTPS-Weiterleitung mit .htaccess
Apache HTTP Server ist nach wie vor einer der am weitesten verbreiteten Webserver und stellt die SSL-Unterstützung über das Modul mod_ssl bereit. In dieser Anleitung erfahren Sie Schritt für Schritt, wie Sie Ihr Zertifikat innerhalb eines VirtualHost definieren und mit .htaccess von HTTP auf HTTPS umleiten.
Erforderliche Dateien und Modul
Apache erwartet die Zertifikatsbestandteile mit separaten Direktiven:
- SSLCertificateFile →
certificate.crt(Serverzertifikat) - SSLCertificateKeyFile →
private.key(privater Schlüssel) - SSLCertificateChainFile →
ca_bundle.crt(Zwischenzertifikatskette)
Falls Sie diese Dateien nicht besitzen, können Sie Ihre Domain mit unserem kostenlosen SSL-Assistenten verifizieren und diese drei Dateien (und bei Bedarf die kombinierte fullchain.pem) aus dem ZIP-Paket herunterladen.
Stellen Sie zunächst sicher, dass das Modul mod_ssl aktiviert ist:
sudo a2enmod ssl
sudo systemctl restart apache2
Schritt 1 — Platzieren Sie die Dateien
sudo mkdir -p /etc/apache2/ssl/ihredomain.com
sudo cp certificate.crt /etc/apache2/ssl/ihredomain.com/
sudo cp private.key /etc/apache2/ssl/ihredomain.com/
sudo cp ca_bundle.crt /etc/apache2/ssl/ihredomain.com/
sudo chmod 600 /etc/apache2/ssl/ihredomain.com/private.key
Schritt 2 — Konfigurieren Sie den VirtualHost
Definieren Sie einen virtuellen Host für Port 443 (z. B. /etc/apache2/sites-available/ihredomain-ssl.conf):
<VirtualHost *:443>
ServerName ihredomain.com
ServerAlias www.ihredomain.com
DocumentRoot /var/www/ihredomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ihredomain.com/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/ihredomain.com/private.key
SSLCertificateChainFile /etc/apache2/ssl/ihredomain.com/ca_bundle.crt
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
<Directory /var/www/ihredomain.com>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Hinweis: Ab Apache 2.4.8 ist es auch zulässig, anstelle von SSLCertificateChainFile eine fullchain.pem zu verwenden, bei der die Zwischenzertifikatskette direkt in SSLCertificateFile aufgenommen ist.
Schritt 3 — Aktivieren und testen Sie die Site
sudo a2ensite ihredomain-ssl.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
Die Ausgabe von configtest sollte Syntax OK lauten. Auf RHEL/CentOS-Systemen lautet der Dienstname httpd und das Verzeichnis /etc/httpd/.
Schritt 4 — HTTPS-Weiterleitung mit .htaccess
Fügen Sie die folgende Regel in die Datei .htaccess im Stammverzeichnis Ihrer Site ein. Dies leitet alle HTTP-Anfragen dauerhaft (301) auf HTTPS um:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Überprüfen Sie über das Terminal, dass die Weiterleitung funktioniert:
curl -I http://ihredomain.com
In der Antwort sollten Sie die Zeilen 301 Moved Permanently und Location: https://... sehen.
Häufig auftretende Probleme
- "AH02572: Failed to configure ... no private key": Der Pfad in
SSLCertificateKeyFileist falsch oder der Schlüssel ist beschädigt. - Ketten-Warnung im Browser:
SSLCertificateChainFileist nicht definiert; fügen Sieca_bundle.crthinzu. - .htaccess wird ignoriert: Im betreffenden
Directory-Block mussAllowOverride Alldefiniert sein.
Zusammenfassung
SSL in Apache besteht lediglich darin, dass drei Direktiven (SSLCertificateFile, SSLCertificateKeyFile, SSLCertificateChainFile) auf die richtigen Dateien verweisen und mit .htaccess eine 301-Weiterleitung eingerichtet wird. Sie können Ihre Dateien mit unserem kostenlosen SSL-Assistenten erstellen und aus dem ZIP herunterladen.