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:

  • SSLCertificateFilecertificate.crt (Serverzertifikat)
  • SSLCertificateKeyFileprivate.key (privater Schlüssel)
  • SSLCertificateChainFileca_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.

Bild: <Eine Apache-VirtualHost-Konfiguration in einem Editor>
Ein mit SSL-Direktiven für Port 443 konfigurierter VirtualHost.

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 SSLCertificateKeyFile ist falsch oder der Schlüssel ist beschädigt.
  • Ketten-Warnung im Browser: SSLCertificateChainFile ist nicht definiert; fügen Sie ca_bundle.crt hinzu.
  • .htaccess wird ignoriert: Im betreffenden Directory-Block muss AllowOverride All definiert 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.