# Apache-SSL einrichten

Mit der Einrichtung von Apache-SSL wird der beliebte **Webserver für die Nutzung von HTTPS konfiguriert**. HTTPS verschlüsselt die Verbindung zwischen dem Browser des Nutzers und dem Webserver. Zur Einrichtung werden je nach Hosting-Umgebung ggf. manuelle Schritte auf dem Server durchgeführt. Wir zeigen, wie dabei vorzugehen ist.

## Voraussetzungen für Nutzung von Apache-SSL

Um mit dem Apache-Webserver SSL-verschlüsselte Verbindungen aufbauen zu können, **bedarf es zunächst eines gültigen SSL-Zertifikats**. Bei günstigen Shared-Hosting-Paketen werden SSL-Zertifikate heutzutage meist via „Let’s Encrypt“ kostenlos zur Verfügung gestellt und automatisch konfiguriert. Es gibt jedoch mannigfaltige Möglichkeiten, ein SSL-Zertifikat zu beziehen. Für professionelle Anwendungen lohnt es sich, ein eigens ausgestelltes SSL-Zertifikat einzurichten. So wird Seitenbesucherinnen und -besuchern signalisiert, dass sie tatsächlich mit der gewünschten Organisation kommunizieren. Das schafft zusätzliches Vertrauen.

Grundsätzlich wird ein **SSL-Zertifikat für eine bestimmte Domain ausgestellt**. Dabei handelt es sich um ein rein technisches Prüfkriterium. Darüber hinaus existieren strengere Validierungsstufen, bis hin zur Verifizierung der Organisations-Identität durch einen Menschen. Schauen wir uns die unterschiedlichen Validierungsstufen im Überblick an:

<table>
  <thead>
    <tr>
      <th>Validierung</th>
      <th>Erklärung</th>
      <th>Nutzen</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Domain Validation (DV)</td>
      <td>Stellt sicher, dass Kommunikation verschlüsselt und nur mit der angegebenen Domain erfolgt. Macht keine Aussage darüber, wem die Domain gehört.</td>
      <td>Führt bei Phishing-Versuch oder Man-in-the-middle-Angriff zur Warnmeldung im Browser.</td>
    </tr>
    <tr>
      <td>Organization Validation (OV)</td>
      <td>Wie DV; zusätzlich wird geprüft, dass die Domain zur angegebenen Organisation gehört.</td>
      <td>Gilt als Mindestvoraussetzung für den Onlinehandel.</td>
    </tr>
    <tr>
      <td>Extended Validation (EV)</td>
      <td>Wie OV; zusätzlich menschliche Prüfung der Unternehmensidentität.</td>
      <td>Wird von großen Organisationen wie Banken sowie von offiziellen Stellen eingesetzt.</td>
    </tr>
  </tbody>
</table>

Neben SSL-Zertifikaten für einzelne Domains existieren sogenannte **Wildcard-Zertifikate. Diese gelten für alle Subdomains** unterhalb einer angegebenen Domain. So gilt das Zertifikat *\*.example.com* für die Domains *www.example.com*, *dev.example.com*, *shop.example.com*, *blog.example.com* etc. Wildcard-Zertifikate sind praktisch, um auf einem Server Live- und Staging-Site bzw. Homepage und Shop oder Blog parallel zu betreiben.

Liegt bereits ein gültiges SSL-Zertifikat vor, benötigt man zum Einrichten von Apache-SSL noch **SSH-Zugriff auf den Webserver** sowie „sudo“- bzw. „root“-Zugang.

Tipp Lernen Sie, einen [Apache-Webserver selbst einzurichten](https://www.ionos.de/digitalguide/server/konfiguration/apache-webserver-einrichten-so-wirds-gemacht/ "Apache-Webserver einrichten – so wird’s gemacht")!

## Wie wird ein Apache-Webserver-SSL-Zertifikat eingerichtet?

Das spezifische Vorgehen zum Einrichten von Apache-SSL ist **abhängig von dem eingesetzten Betriebssystem (OS) und der Apache-Version**. Wir zeigen hier den Prozess für das „Apache httpd 2.4 default layout“. Die häufig anzutreffende Umgebung Apache2 auf Ubuntu erfordert ein etwas anderes Vorgehen. Weitere Konfigurationen für geläufige Kombinationen von OS und Apache-Version finden Sie im offiziellen [Apache-Wiki](https://cwiki.apache.org/confluence/display/HTTPD/DistrosDefaultLayout "DistrosDefaultLayout - HTTPD - Apache Software Foundation").

Der generelle **Prozess beim manuellen Einrichten von Apache-SSL** umfasst die folgenden Schritte:

1. Zertifikatsdateien erzeugen
2. Zertifikatsdateien auf Server platzieren
3. Apache-SSL-Konfiguration einfügen
4. Apache-SSL-Funktionalität testen

Schauen wir uns die einzelnen Schritte im Detail an.

### Apache-SSL-Zertifikatsdateien erzeugen

Um die SSL-Zertifikatsdateien zu erlangen, wird ein „Certificate Signing Request“ (CSR) ausgeführt. Der **CSR-Prozess verknüpft den Domain-Namen mit identifizierenden Merkmalen** der Organisation sowie einem kryptografischen Schlüssel. Das Ausführen des CSR erfolgt in Abhängigkeit vom Zertifikatsanbieter entweder über eine Weboberfläche oder von der Kommandozeile aus. Wir zeigen exemplarisch ein Beispiel für ein Certificate Signing Request via OpenSSL:

```none
openssl req –new –newkey rsa:2048 –nodes –keyout <server-name>.key –out <server-name>.csr
```

Beim Ausführen des Befehls wird eine Reihe von Informationen abgefragt; ferner werden eine **Handvoll Dateien erzeugt**. Wir geben eine Übersicht der beim Ausführen des Certificate Signing Request (CSR) erzeugten Dateien samt Datei-Erweiterungen:

<table>
  <thead>
    <tr>
      <th>Datei</th>
      <th>Erweiterung</th>
      <th>Erläuterung</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Privater Schlüssel</td>
      <td>.key</td>
      <td>Wird genutzt, um CSR zu erzeugen und später Verbindungen mithilfe des Zertifikats abzusichern und zu verifizieren.</td>
    </tr>
    <tr>
      <td>CSR-Datei</td>
      <td>.csr</td>
      <td>Wird benötigt, um das SSL-Zertifikat zu bestellen.</td>
    </tr>
    <tr>
      <td>Intermediäres SSL-Zertifikat</td>
      <td>.crt</td>
      <td>Zertifikat, welches eine Zertifizierungsstelle befähigt, weitere Zertifikate auszustellen.</td>
    </tr>
    <tr>
      <td>Primäres SSL-Zertifikat</td>
      <td>.crt</td>
      <td>Für eine spezifische Domain und Organisation ausgestelltes SSL-Zertifikat.</td>
    </tr>
  </tbody>
</table>

### Apache-SSL-Zertifikatsdateien auf Server platzieren

Zum Einrichten von Apache-SSL werden die **Zertifikatsdateien auf dem Server platziert**. In der Regel handelt es sich um zwei bis drei Dateien:

1. Privater Schlüssel
2. Primäres SSL-Zertifikat
3. Ggf. intermediäres SSL-Zertifikat

Wir legen diese Dateien in einen eigenen Ordner und stellen sicher, dass sie **nur vom Root-Benutzer lesbar** sind. Von der Kommandozeile aus nutzen wir die folgenden Schritte:

1. Ordner für Zertifikatsdateien erstellen:

```none
mkdir -p /root/cert/
```

2. Zertifikatsdateien in Ordner verschieben:

```none
mv /path/to/cert-files/* /root/cert/
```

3. Nutzer und Rechte anpassen, um Ordner und Dateien nur für Root lesbar zu machen:

```none
chown root:root /root/cert/
chown root:root /root/cert/*
chmod 400 /root/cert/*
chmod 500 /root/cert/
```

Hinweis Beim Schützen des Zertifikatsordners handelt es sich nicht um denselben Prozess wie beim [Setzen eines Passwortschutzes für ein Verzeichnis mit Apache](https://www.ionos.de/digitalguide/server/konfiguration/passwortschutz-fuer-ein-verzeichnis-mit-apache/).

### Apache-SSL-Konfiguration einfügen

Sobald die Zertifikatsdateien auf dem Server liegen, können Sie sich der Apache-SSL-Konfiguration zuwenden. Das **Herzstück der Apache-SSL-Konfiguration ist ein „Virtual Host“-Block (VHost-Block)**. Meist existiert bereits ein VHost-Block für HTTP-Verbindungen. Soll der Server sowohl auf HTTPS- als auch auf HTTP-Anfragen antworten, werden beide VHost-Blöcke benötigt.

1. Apache Konfigurationsdatei bearbeiten:

```none
nano /usr/local/apache2/conf/httpd.conf
```

2. Bestehenden VHost-Block für HTTP identifizieren.

Der gesuchte Block für HTTP enthält die Portnummer 80:

```none
<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName your.domain.example.com
</VirtualHost>
```

3. HTTP-VHost-Block duplizieren und für HTTPS anpassen.

Wir duplizieren den HTTP-VHost-Block, passen den Port auf 443 an und fügen die Apache-SSL-spezifischen Einstellungen hinzu:

```none
<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName your.domain.example.com
        SSLEngine on
        SSLCertificateFile /path/to/your_domain_name.crt
        SSLCertificateKeyFile /path/to/your_private.key
        SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
```

Im Anschluss speichern wir die Änderungen an der Apache-Konfigurationsdatei.

### Apache-SSL-Funktionalität testen

Beim Einrichten der Apache-SSL-Konfiguration kann einiges schiefgehen. Je nach Einsatzszenario und Anforderungen gibt es **subtile Unterschiede der Einstellungen**. Es ist daher notwendig, die Apache-SSL-Funktionalität zu testen. Dazu gibt es das praktische Kommandozeilen-Tool ‘apachectl’:

```none
apachectl configtest
```

Sollte dieser Befehl nicht funktionieren, versuchen wir den alternativen Befehl ‘apache2ctl’:

```none
apache2ctl configtest
```

Sofern der Test erfolgreich war, starten wir im Anschluss den Apache-Server neu:

```none
apachectl restart
```

Nachdem der Apache-Server mit angepasster Konfiguration neu startet, **testen wir die SSL-Verbindung**. Dazu rufen wir die Site in mindestens zwei verschiedenen Browsern auf. Zu guter Letzt unterziehen wir das installierte Zertifikat einem Gütetest. Dazu nutzen wir den kostenlosen [SSL-Check von IONOS](https://www.ionos.de/tools/ssl-check "SSL-Check » Kostenlos SSL-Zertifikat prüfen &amp; testen").

Tipp Lernen Sie, wie bei der [Verbesserung der Performance eines Apache-Webservers](https://www.ionos.de/digitalguide/server/konfiguration/verbesserung-der-performance-von-apache-web-server/) vorzugehen ist!


This is a markdown version of: [https://www.ionos.de/digitalguide/server/sicherheit/apache-ssl/](https://www.ionos.de/digitalguide/server/sicherheit/apache-ssl/) for AI/LLM consumption.