Alle Bereitstellungsanleitungen Bereitstellung

So installieren Sie ein SSL-Zertifikat auf Apache

Diese Anleitung führt Sie durch die Installation eines SSL-Zertifikats auf dem Apache HTTP Server mit mod_ssl — vom Hochladen der Dateien über gehärtete TLS-Einstellungen bis zur Fehlerbehebung häufiger Fehler. Funktioniert mit Zertifikaten von GetHTTPS, Certbot oder jeder anderen CA.

Wenn Sie noch kein Zertifikat haben, erhalten Sie eines kostenlos in 5 Minuten.

Voraussetzungen

  • Apache 2.4+ installiert und Ihre Website über HTTP (Port 80) bereitstellend
  • Root-/sudo-Zugriff auf den Server
  • Zertifikatsdateien — Apache benötigt drei separate Dateien:
    • cert.pem — Ihr Zertifikat (nur End-Entity)
    • privkey.pem — Ihr privater Schlüssel
    • chain.pem — Zwischen-CA-Zertifikatskette

Warum drei Dateien? Im Gegensatz zu Nginx (das eine einzelne fullchain.pem verwendet), erwartet Apache traditionell das Zertifikat und die Kette als separate Dateien. Apache 2.4.8+ kann fullchain.pem in SSLCertificateFile verwenden und SSLCertificateChainFile überspringen. Formatdetails →

Schritt 1: Zertifikatsdateien hochladen

# Sicheres Verzeichnis erstellen
sudo mkdir -p /etc/ssl/gethttps

# Dateien auf den Server kopieren
sudo cp cert.pem chain.pem privkey.pem /etc/ssl/gethttps/

# Privaten Schlüssel absichern
sudo chmod 600 /etc/ssl/gethttps/privkey.pem
sudo chmod 644 /etc/ssl/gethttps/cert.pem /etc/ssl/gethttps/chain.pem
sudo chown root:root /etc/ssl/gethttps/*

Bei Übertragung via SCP:

scp cert.pem chain.pem privkey.pem user@your-server:/tmp/
# Auf dem Server:
sudo mv /tmp/{cert,chain,privkey}.pem /etc/ssl/gethttps/

Schritt 2: Erforderliche Apache-Module aktivieren

# Debian/Ubuntu
sudo a2enmod ssl        # Kern-SSL-Modul
sudo a2enmod headers    # Für HSTS und Sicherheitsheader
sudo a2enmod rewrite    # Für HTTP→HTTPS-Weiterleitung (bei Verwendung von .htaccess)
sudo systemctl restart apache2

# CentOS/RHEL/Amazon Linux
sudo yum install mod_ssl    # Installiert und aktiviert normalerweise in einem Schritt
sudo systemctl restart httpd

Überprüfen, ob mod_ssl geladen ist:

apachectl -M | grep ssl
# Erwartet: ssl_module (shared)

Schritt 3: Den HTTPS-VirtualHost konfigurieren

Erstellen oder bearbeiten Sie die SSL-Konfiguration Ihrer Website. Unter Debian/Ubuntu ist dies typischerweise /etc/apache2/sites-available/yourdomain-ssl.conf:

# ─── HTTPS-Server ────────────────────────────
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # Zertifikatsdateien
    SSLEngine on
    SSLCertificateFile      /etc/ssl/gethttps/cert.pem
    SSLCertificateKeyFile   /etc/ssl/gethttps/privkey.pem
    SSLCertificateChainFile /etc/ssl/gethttps/chain.pem

    # TLS-Protokoll — nur 1.2 und 1.3
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLHonorCipherOrder off
    SSLCompression off

    # OCSP-Stapling (schnellere Zertifikatsverifizierung für Clients)
    SSLUseStapling on
    SSLStaplingCache "shmcb:/var/run/apache2/ssl_stapling(128000)"

    # Sicherheitsheader
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"

    # Ihre Website
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
    </Directory>
</VirtualHost>

# ─── HTTP-Weiterleitung ───────────────────────────
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Was jede Direktive bewirkt:

DirektiveZweck
SSLEngine onAktiviert SSL/TLS für diesen VirtualHost
SSLCertificateFilePfad zu Ihrem Zertifikat
SSLCertificateKeyFilePfad zu Ihrem privaten Schlüssel
SSLCertificateChainFilePfad zum Zwischen-CA-Zertifikat
SSLProtocolNur TLS 1.2/1.3 — ältere Versionen veraltet
SSLHonorCipherOrder offLässt den Client die beste Cipher-Suite wählen
SSLCompression offVerhindert CRIME-Angriff
SSLUseStaplingServer ruft OCSP-Antwort vorab ab
Strict-Transport-SecurityHSTS — Browser merken sich, immer HTTPS zu verwenden
Redirect permanent301-Weiterleitung HTTP → HTTPS

Schritt 4: Website aktivieren und testen

# Debian/Ubuntu
sudo a2ensite yourdomain-ssl.conf
sudo apachectl configtest          # Muss "Syntax OK" ausgeben
sudo systemctl reload apache2

# CentOS/RHEL
sudo apachectl configtest
sudo systemctl reload httpd

Wenn configtest einen Fehler meldet, nennt es die genaue Zeile — beheben Sie ihn vor dem Neuladen.

Schritt 5: Überprüfen

Browser: Besuchen Sie https://yourdomain.com. Klicken Sie auf das Schloss → überprüfen Sie “Let’s Encrypt” als Aussteller.

Kommandozeile:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates

Online: Verwenden Sie den SSL Labs Server Test für eine umfassende Bewertung. Ziel: A oder A+.

Apache vs Nginx: Unterschiede bei Zertifikatsdateien

ApacheNginx
ZertifikatSSLCertificateFile cert.pemssl_certificate fullchain.pem
Privater SchlüsselSSLCertificateKeyFile privkey.pemssl_certificate_key privkey.pem
KetteSSLCertificateChainFile chain.pemIn fullchain.pem enthalten
Benötigte Dateien3 separate Dateien2 Dateien (Kette kombiniert)

Apache 2.4.8+ kann auch die kombinierte fullchain.pem in SSLCertificateFile verwenden — dann können Sie SSLCertificateChainFile weglassen.

Erneuerung

Wenn sich Ihr Zertifikat dem Ablauf nähert (hier prüfen):

# Dateien ersetzen
sudo cp new-cert.pem /etc/ssl/gethttps/cert.pem
sudo cp new-chain.pem /etc/ssl/gethttps/chain.pem
sudo cp new-privkey.pem /etc/ssl/gethttps/privkey.pem

# Neuladen (nicht neu starten) — keine Ausfallzeit
sudo systemctl reload apache2    # Debian/Ubuntu
sudo systemctl reload httpd      # CentOS/RHEL

Vollständige Erneuerungsanleitung → | Mit Certbot automatisieren →

Fehlerbehebung

”AH02572: Failed to configure certificate” / Schlüssel stimmen nicht überein

Das Zertifikat und der private Schlüssel passen nicht zusammen. Überprüfen Sie die Übereinstimmung:

# Diese beiden Hashes müssen identisch sein
openssl x509 -noout -modulus -in /etc/ssl/gethttps/cert.pem | md5sum
openssl rsa -noout -modulus -in /etc/ssl/gethttps/privkey.pem | md5sum

Wenn sie sich unterscheiden, verwenden Sie Dateien aus verschiedenen GetHTTPS-Sitzungen. Laden Sie beide aus derselben Sitzung erneut herunter.

”AH01909: server certificate does NOT include an ID”

Ihr ServerName stimmt mit keiner Domain im SAN-Feld des Zertifikats überein:

openssl x509 -noout -text -in /etc/ssl/gethttps/cert.pem | grep -A1 "Subject Alternative Name"

Stellen Sie sicher, dass Ihr Apache ServerName exakt mit einem der aufgeführten DNS-Namen übereinstimmt.

Browser zeigt “Zertifikat nicht vertrauenswürdig”

Die Zwischenzertifikatskette fehlt. Überprüfen Sie, ob SSLCertificateChainFile auf chain.pem (das Zwischenzertifikat) zeigt, nicht auf cert.pem. Testen Sie die Kette:

echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | grep "Verify return code"
# "Verify return code: 0 (ok)" = gut
# "Verify return code: 21 (unable to verify)" = Kette unvollständig

“AH00526: Syntax error on line X”

Apache-Konfigurationssyntaxfehler. Häufige Ursachen:

  • Fehlender schließender </VirtualHost>-Tag
  • SSLCertificateChainFile falsch geschrieben
  • Fehlende Anführungszeichen um Header-Werte
  • Dateipfad existiert nicht

HTTPS funktioniert, zeigt aber “Nicht sicher”

Mixed Content — Ihre Seite lädt Ressourcen über HTTP. Öffnen Sie DevTools → Konsole → korrigieren Sie die http://-URLs.

Häufig gestellte Fragen

Kann ich fullchain.pem statt separatem Zertifikat + Kette verwenden?

Ja, ab Apache 2.4.8+. Verwenden Sie SSLCertificateFile /path/to/fullchain.pem und entfernen Sie die SSLCertificateChainFile-Direktive vollständig. Bei älteren Apache-Versionen benötigen Sie separate Dateien.

Wie prüfe ich, welche Apache-Version ich habe?

apachectl -v
# oder
httpd -v

Muss ich Apache neu starten oder reicht ein Neuladen?

Neuladen (systemctl reload) reicht aus und verursacht keine Ausfallzeit. Ein Neustart (systemctl restart) unterbricht alle aktiven Verbindungen. Verwenden Sie für Zertifikatsänderungen immer Neuladen.

Kann Apache verschiedene Zertifikate für verschiedene Domains bereitstellen?

Ja. Erstellen Sie separate <VirtualHost *:443>-Blöcke mit unterschiedlichen ServerName- und SSLCertificate*-Direktiven. Apache verwendet SNI (Server Name Indication), um das richtige Zertifikat auszuwählen.

Unterstützt Apache ECDSA-Zertifikate?

Ja. Apache 2.4+ behandelt ECDSA genauso wie RSA — gleiche Direktiven, gleiches Dateiformat. GetHTTPS generiert standardmäßig ECDSA P-256.

Wo befinden sich die SSL-Fehlerprotokolle von Apache?

# Debian/Ubuntu
tail -f /var/log/apache2/error.log

# CentOS/RHEL
tail -f /var/log/httpd/ssl_error_log

Verwandte Artikel

Erste Schritte 2026-05-08
Kostenloses SSL-Zertifikat erhalten (Schritt-für-Schritt-Anleitung)
Erhalten Sie ein kostenloses SSL-Zertifikat von Let's Encrypt in 5 Minuten — keine Software-Installation, kein Konto erforderlich. Vollständige Anleitung mit 4 Methoden, beiden Challenge-Typen, Installation auf 6 Plattformen und Fehlerbehebung.
Bereitstellung 2026-05-07
HTTP auf HTTPS umleiten
Gesamten Traffic mit serverseitigen Weiterleitungen auf HTTPS erzwingen. Konfigurationsbeispiele für Nginx, Apache und .htaccess mit permanenten 301-Weiterleitungen.
Bereitstellung 2026-05-08
So installieren Sie ein SSL-Zertifikat auf Nginx
Schritt-für-Schritt-Anleitung zur Installation eines SSL-Zertifikats auf Nginx. Behandelt Dateiupload, vollständige Serverblock-Konfiguration, TLS Best Practices, HTTP/2, HSTS, Weiterleitungs-Setup, Tests und Fehlerbehebung für 6 häufige Fehler.
Bereitstellung 2026-05-07
So beheben Sie Mixed-Content-Warnungen
Mixed Content entsteht, wenn eine HTTPS-Seite Ressourcen über HTTP lädt. Erfahren Sie, wie Sie Mixed-Content-Fehler finden und beheben, um ein sauberes Schloss-Symbol zu erhalten.
Kostenloses SSL-Zertifikat im Browser erhalten
Keine Installation, kein Konto. Ihr privater Schlüssel verlässt nie Ihr Gerät.
Zertifikat erhalten