Einrichtung von Apache mit SSL unter Debian

Dieses Tutorial erklärt, wie man einen den Apache Webserver SSL-fähig macht und dadurch die Verbindung zwischen Server und Client mit einem selbst signierten Zertifikat sichert.

Schritt 1: Prüfen ob openssl installiert ist

which openssl

Wenn der oben genannte Befehl keinen Pfad ausgibt, wird openssl mit folgendem Befehl nachinstalliert.

apt-get install openssl

Schritt 2: Verzeichnis für Zertifikat erstellen

mkdir /etc/apache2/ssl

Schritt 3: Zertifikat und Diffie Hellmann Gruppe erzeugen

openssl req $@ -new -x509 -days 365 -newkey rsa:2048 -nodes -out /etc/apache2/ssl/apache.crt -keyout /etc/apache2/ssl/apache.key

OpenSSL fragt daraufhin ein paar Eckdaten zum zu erstellenden Zertifikat ab.

Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Bundesland
Locality Name (eg, city) []: Stadt
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Firmenname
Organizational Unit Name (eg, section) []: Abteilung
Common Name (e.g. server FQDN or YOUR name) []: www.beispieldomain.com
Email Address []: admin@beispieldomain.com

Hinweis: Bei Verwendung des oben erstellten Zertifikats schreibt Apache eine Warnung ins Logfile, da es sich beim erstellen Zertifikat eigentlich um ein CA Zertifikat handelt, welches eigentlich zur Unterschrift von Serverzertifikaten gedacht ist. Diese Warnung kann zwar ignoriert werden, lässt sich aber dadurch beseitigen indem man ein Serverzertifikat erstellt und dieses mit dem CA Zertifikat unterschreibt.

Zuletzt wird noch eine 2048 bit Diffie Hellman Gruppe erstellt und dem Zertifikat angehängt.

openssl dhparam -out /etc/apache2/ssl/dhparams.pem 2048 && cat /etc/apache2/ssl/dhparams.pem >> /etc/apache2/ssl/apache.crt

Schritt 4: Zugriffsrechte anpassen

chmod 600 /etc/apache2/ssl/apache*

Schritt 5: mod_ssl aktivieren

a2enmod ssl

Schritt 5: Apache Konfiguration anpassen

nano /etc/apache2/ports.conf

Hier prüfen ob Apache auf Port 443 horcht und NameVirtualHost *:443 einfügen.

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>

Schritt 6: Virtuellen Host erstellen

nano /etc/apache2/sites-available/ssl

Hier folgendes wird folgendes eingefügt.

<VirtualHost *:443>
DocumentRoot /var/www
ServerName www.beispieldomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
</VirtualHost>

Im Anschluss wird der virtuelle Host aktiviert.

a2ensite ssl

Schritt 7: Apache neu starten

service apache2 restart

Damit ist die Einrichtung abgeschlossen. Nachdem es sich bei dem generierten Zertifikat um ein selbst signiertes Zertifikat handelt, wird dies von den meisten Browsern als nicht sicher eingestuft. Die Warnmeldung hierzu kann aber in dem Fall ignoriert werden.

Quellen: Self-Signed Certificate (Debian Wiki)Logjam: PFS Deployment Guide und Disabling SSLv3 for POODLE

Schreibe einen Kommentar

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