Skip to main content

SSL mit dem Apachen – Renew

Seit meinem letzten Artikel ( der ist schon etwas älter 🙂 ) zur SSL Verschlüsselung von Webseiten mit dem Apache Webserver hat sich in diesem Bereich eine ganze Menge getan.

Neue Apache-Versionen, neue Ciphers und längere Schlüssel sind für mich nun Grund genug, ein Renew dieses Artikels zu verfassen. Viel Erfolg also dann bei Euren Anpassungen oder eben auch Neuinstallationen.

War ich in meinem letzten Artikel noch auf die Erstellung von Self-Signed Zertifikaten eingegangen, so möchte ich dies hier unterlassen. Mittlerweile gibt es verschiedene Trust-Center, welche kostengünstig oder teilweise sogar auch kostenlos signierte SSL Zertifikate für Domains ausstellen. Als Beispiel sei hier gerne startssl.com genannt, was derzeit mein persönlicher Favorit ist.

Nun also zu den Arbeiten auf der Seite Eures Webservers. Nach wie vor ist natürlich hier die Verfügbarkeit entsprechender SSL Module und Basiskonfigurationen Pflicht:

root@webserver:/# ls -al /etc/apache2/mods-enabled |grep ssl
lrwxrwxrwx 1 root root 26 Mär 8 2013 ssl.conf -> ../mods-available/ssl.conf
lrwxrwxrwx 1 root root 26 Mär 8 2013 ssl.load -> ../mods-available/ssl.load

Ebenso muss natürlich auch ein SSL Stack bereitstehen, welches im Fall von Ubuntu Linux ( wie hier in meinem Beispiel ) openssl wäre:

root@webserver:/# dpkg -l |grep openssl
ii openssl 1.0.1-4ubuntu5.21 Secure Socket Layer (SSL) binary and related cryptographic tools

Als nächsten Schritt muss ein sogenannter Code-Signing-Request ( CSR ) erstellt werden, was auf Commandline-Ebene mit folgendem Kommando geschieht:

root@webserver:/# openssl req -nodes -new -newkey rsa:4096 -sha256 -out csr.pem

Mit den entsprechenden Parametern dieses Aufrufs wird nun ein CSR und der dazugehörige private Schlüssel generiert. Wichtig ist hier vor allem die Angabe zur gewünschten Schlüssel-Länge ( hier: rsa:4096 ), welche auf keinen Fall mehr unter 2048-Bit liegen sollte und ebenso auch die Signaturmethode, welche nicht mehr bei SHA-1 sondern bei SHA-2 ( hier: sha256 ) liegen sollte.

Bei der Eingabe der nun geforderten Angaben ( Domainname, Mail-Adresse, Unternehmen, etc. ) ist darauf zu achten, dass KEIN PASSWORT für den Key eingegeben wird. Dies ist wichtig, da sonst bei jedem ( Neu- ) Start des Webservers eben dieses Passwort abgefragt werden würde, was zumindest im Regelfall sicher nicht wirklich optimal wäre.

Nun wird der Inhalt des CSR-Files ( csr.pem ) beim Trust-Center Eurer Wahl entsprechend eingetragen, woraufhin ein entsprechendes Zertifikat bereitgestellt werden wird.

Dieses Zertifikat und der dazugehörige, vorher generierte private Schlüssel werden nun dem entsprechenden Apache vHost zugeordnet und schon ist die Implementierung abgeschlossen. Zu guter Letzt sollten dann noch die, vom Apachen zu verwendenden Ciphers eingetragen werden. Meine Empfehlung ist hier die folgende Konfiguration ( in der ssl.conf ):

SSLProtocol all -SSLv2 -SSLv3
SSLCompression Off
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+AESGCM EDH+AESGCM EECDH -RC4 EDH -CAMELLIA -SEED !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

Ein Hinweis noch meinerseits für eine gute Webseite, über welche Ihr Eure nun bestehende SSL gesicherte Webseite testen lassen könnt ist ssllabs.com – testet es aus, hier gibt es immer wieder neueste Tips und Tricks um die Verschlüsselung zu optimieren 🙂

Apache, Debian, Webserver


Sven Neidahl

Hallo, ich bin Sven, technikbegeisterter Mensch mit Blog-Ambitionen. Ich liebe Australian-Shepherds, leckeres Essen, laute Musik und Wandern mit anschliessendem Wellness-Programm, hauptsache "Lebe das Leben mit Liebe, Spass und Technik".

Comments (6)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite ist durch reCAPTCHA und Google geschütztDatenschutz-Bestimmungen UndNutzungsbedingungen anwenden.

The reCAPTCHA verification period has expired. Please reload the page.