Mit der Ein­rich­tung von Apache-SSL wird der beliebte Webserver für die Nutzung von HTTPS kon­fi­gu­riert. HTTPS ver­schlüs­selt die Ver­bin­dung zwischen dem Browser des Nutzers und dem Webserver. Zur Ein­rich­tung werden je nach Hosting-Umgebung ggf. manuelle Schritte auf dem Server durch­ge­führt. Wir zeigen, wie dabei vor­zu­ge­hen ist.

Vor­aus­set­zun­gen für Nutzung von Apache-SSL

Um mit dem Apache-Webserver SSL-ver­schlüs­sel­te Ver­bin­dun­gen aufbauen zu können, bedarf es zunächst eines gültigen SSL-Zer­ti­fi­kats. Bei günstigen Shared-Hosting-Paketen werden SSL-Zer­ti­fi­ka­te heut­zu­ta­ge meist via „Let’s Encrypt“ kostenlos zur Verfügung gestellt und au­to­ma­tisch kon­fi­gu­riert. Es gibt jedoch man­nig­fal­ti­ge Mög­lich­kei­ten, ein SSL-Zer­ti­fi­kat zu beziehen. Für pro­fes­sio­nel­le An­wen­dun­gen lohnt es sich, ein eigens aus­ge­stell­tes SSL-Zer­ti­fi­kat ein­zu­rich­ten. So wird Sei­ten­be­su­che­rin­nen und -besuchern si­gna­li­siert, dass sie tat­säch­lich mit der ge­wünsch­ten Or­ga­ni­sa­ti­on kom­mu­ni­zie­ren. Das schafft zu­sätz­li­ches Vertrauen.

SSL-Zer­ti­fi­kat kaufen
Sichern Sie sich Ihr SSL-Zer­ti­fi­kat
  • Ver­schlüs­selt die Website-Kom­mu­ni­ka­ti­on
  • Ver­hin­dert Si­cher­heits­war­nun­gen
  • Ver­bes­sert die Google-Plat­zie­rung

Grund­sätz­lich wird ein SSL-Zer­ti­fi­kat für eine bestimmte Domain aus­ge­stellt. Dabei handelt es sich um ein rein tech­ni­sches Prüf­kri­te­ri­um. Darüber hinaus exis­tie­ren strengere Va­li­die­rungs­stu­fen, bis hin zur Ve­ri­fi­zie­rung der Or­ga­ni­sa­ti­ons-Identität durch einen Menschen. Schauen wir uns die un­ter­schied­li­chen Va­li­die­rungs­stu­fen im Überblick an:

Va­li­die­rung Erklärung Nutzen
Domain Va­li­da­ti­on (DV) Stellt sicher, dass Kom­mu­ni­ka­ti­on ver­schlüs­selt und nur mit der an­ge­ge­be­nen Domain erfolgt. Macht keine Aussage darüber, wem die Domain gehört. Führt bei Phishing-Versuch oder Man-in-the-middle-Angriff zur Warn­mel­dung im Browser.
Or­ga­niza­ti­on Va­li­da­ti­on (OV) Wie DV; zu­sätz­lich wird geprüft, dass die Domain zur an­ge­ge­be­nen Or­ga­ni­sa­ti­on gehört. Gilt als Min­dest­vor­aus­set­zung für den On­line­han­del.
Extended Va­li­da­ti­on (EV) Wie OV; zu­sätz­lich mensch­li­che Prüfung der Un­ter­neh­mens­iden­ti­tät. Wird von großen Or­ga­ni­sa­tio­nen wie Banken sowie von of­fi­zi­el­len Stellen ein­ge­setzt.

Neben SSL-Zer­ti­fi­ka­ten für einzelne Domains exis­tie­ren so­ge­nann­te Wildcard-Zer­ti­fi­ka­te. Diese gelten für alle Sub­do­mains unterhalb einer an­ge­ge­be­nen Domain. So gilt das Zer­ti­fi­kat *.example.com für die Domains www.example.com, dev.example.com, shop.example.com, blog.example.com etc. Wildcard-Zer­ti­fi­ka­te 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-Zer­ti­fi­kat vor, benötigt man zum Ein­rich­ten von Apache-SSL noch SSH-Zugriff auf den Webserver sowie „sudo“- bzw. „root“-Zugang.

Wie wird ein Apache-Webserver-SSL-Zer­ti­fi­kat ein­ge­rich­tet?

Das spe­zi­fi­sche Vorgehen zum Ein­rich­ten von Apache-SSL ist abhängig von dem ein­ge­setz­ten Be­triebs­sys­tem (OS) und der Apache-Version. Wir zeigen hier den Prozess für das „Apache httpd 2.4 default layout“. Die häufig an­zu­tref­fen­de Umgebung Apache2 auf Ubuntu erfordert ein etwas anderes Vorgehen. Weitere Kon­fi­gu­ra­tio­nen für geläufige Kom­bi­na­tio­nen von OS und Apache-Version finden Sie im of­fi­zi­el­len Apache-Wiki.

Der generelle Prozess beim manuellen Ein­rich­ten von Apache-SSL umfasst die folgenden Schritte:

  1. Zer­ti­fi­kats­da­tei­en erzeugen
  2. Zer­ti­fi­kats­da­tei­en auf Server plat­zie­ren
  3. Apache-SSL-Kon­fi­gu­ra­ti­on einfügen
  4. Apache-SSL-Funk­tio­na­li­tät testen

Schauen wir uns die einzelnen Schritte im Detail an.

Apache-SSL-Zer­ti­fi­kats­da­tei­en erzeugen

Um die SSL-Zer­ti­fi­kats­da­tei­en zu erlangen, wird ein „Cer­ti­fi­ca­te Signing Request“ (CSR) aus­ge­führt. Der CSR-Prozess verknüpft den Domain-Namen mit iden­ti­fi­zie­ren­den Merkmalen der Or­ga­ni­sa­ti­on sowie einem kryp­to­gra­fi­schen Schlüssel. Das Ausführen des CSR erfolgt in Ab­hän­gig­keit vom Zer­ti­fi­kats­an­bie­ter entweder über eine Web­ober­flä­che oder von der Kom­man­do­zei­le aus. Wir zeigen ex­em­pla­risch ein Beispiel für ein Cer­ti­fi­ca­te Signing Request via OpenSSL:

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

Beim Ausführen des Befehls wird eine Reihe von In­for­ma­tio­nen abgefragt; ferner werden eine Handvoll Dateien erzeugt. Wir geben eine Übersicht der beim Ausführen des Cer­ti­fi­ca­te Signing Request (CSR) erzeugten Dateien samt Datei-Er­wei­te­run­gen:

Datei Er­wei­te­rung Er­läu­te­rung
Privater Schlüssel .key Wird genutzt, um CSR zu erzeugen und später Ver­bin­dun­gen mithilfe des Zer­ti­fi­kats ab­zu­si­chern und zu ve­ri­fi­zie­ren.
CSR-Datei .csr Wird benötigt, um das SSL-Zer­ti­fi­kat zu bestellen.
In­ter­me­diä­res SSL-Zer­ti­fi­kat .crt Zer­ti­fi­kat, welches eine Zer­ti­fi­zie­rungs­stel­le befähigt, weitere Zer­ti­fi­ka­te aus­zu­stel­len.
Primäres SSL-Zer­ti­fi­kat .crt Für eine spe­zi­fi­sche Domain und Or­ga­ni­sa­ti­on aus­ge­stell­tes SSL-Zer­ti­fi­kat.

Apache-SSL-Zer­ti­fi­kats­da­tei­en auf Server plat­zie­ren

Zum Ein­rich­ten von Apache-SSL werden die Zer­ti­fi­kats­da­tei­en auf dem Server platziert. In der Regel handelt es sich um zwei bis drei Dateien:

  1. Privater Schlüssel
  2. Primäres SSL-Zer­ti­fi­kat
  3. Ggf. in­ter­me­diä­res SSL-Zer­ti­fi­kat

Wir legen diese Dateien in einen eigenen Ordner und stellen sicher, dass sie nur vom Root-Benutzer lesbar sind. Von der Kom­man­do­zei­le aus nutzen wir die folgenden Schritte:

  1. Ordner für Zer­ti­fi­kats­da­tei­en erstellen:
mkdir -p /root/cert/
  1. Zer­ti­fi­kats­da­tei­en in Ordner ver­schie­ben:
mv /path/to/cert-files/* /root/cert/
  1. Nutzer und Rechte anpassen, um Ordner und Dateien nur für Root lesbar zu machen:
chown root:root /root/cert/
chown root:root /root/cert/*
chmod 400 /root/cert/*
chmod 500 /root/cert/
Hinweis

Beim Schützen des Zer­ti­fi­kats­ord­ners handelt es sich nicht um denselben Prozess wie beim Setzen eines Pass­wort­schut­zes für ein Ver­zeich­nis mit Apache.

Apache-SSL-Kon­fi­gu­ra­ti­on einfügen

Sobald die Zer­ti­fi­kats­da­tei­en auf dem Server liegen, können Sie sich der Apache-SSL-Kon­fi­gu­ra­ti­on zuwenden. Das Herzstück der Apache-SSL-Kon­fi­gu­ra­ti­on ist ein „Virtual Host“-Block (VHost-Block). Meist existiert bereits ein VHost-Block für HTTP-Ver­bin­dun­gen. Soll der Server sowohl auf HTTPS- als auch auf HTTP-Anfragen antworten, werden beide VHost-Blöcke benötigt.

  1. Apache Kon­fi­gu­ra­ti­ons­da­tei be­ar­bei­ten:
nano /usr/local/apache2/conf/httpd.conf
  1. Be­stehen­den VHost-Block für HTTP iden­ti­fi­zie­ren.

Der gesuchte Block für HTTP enthält die Port­num­mer 80:

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName your.domain.example.com
</VirtualHost>
  1. HTTP-VHost-Block du­pli­zie­ren und für HTTPS anpassen.

Wir du­pli­zie­ren den HTTP-VHost-Block, passen den Port auf 443 an und fügen die Apache-SSL-spe­zi­fi­schen Ein­stel­lun­gen hinzu:

<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 Än­de­run­gen an der Apache-Kon­fi­gu­ra­ti­ons­da­tei.

Apache-SSL-Funk­tio­na­li­tät testen

Beim Ein­rich­ten der Apache-SSL-Kon­fi­gu­ra­ti­on kann einiges schief­ge­hen. Je nach Ein­satz­sze­na­rio und An­for­de­run­gen gibt es subtile Un­ter­schie­de der Ein­stel­lun­gen. Es ist daher notwendig, die Apache-SSL-Funk­tio­na­li­tät zu testen. Dazu gibt es das prak­ti­sche Kom­man­do­zei­len-Tool 'a­pach­ect­l':

apachectl configtest

Sollte dieser Befehl nicht funk­tio­nie­ren, versuchen wir den al­ter­na­ti­ven Befehl 'apache2ctl':

apache2ctl configtest

Sofern der Test er­folg­reich war, starten wir im Anschluss den Apache-Server neu:

apachectl restart

Nachdem der Apache-Server mit an­ge­pass­ter Kon­fi­gu­ra­ti­on neu startet, testen wir die SSL-Ver­bin­dung. Dazu rufen wir die Site in min­des­tens zwei ver­schie­de­nen Browsern auf. Zu guter Letzt un­ter­zie­hen wir das in­stal­lier­te Zer­ti­fi­kat einem Gütetest. Dazu nutzen wir den kos­ten­lo­sen SSL-Check von IONOS.

Tipp

Lernen Sie, wie bei der Ver­bes­se­rung der Per­for­mance eines Apache-Web­ser­vers vor­zu­ge­hen ist!

Zum Hauptmenü