====== Apache: SSL-Verschlüsselung ====== //<- Zurück zum Artikel [[software:apache]]// Apache Modul laden, wenn es nicht bereits geladen ist: $ a2enmod ssl In /etc/apache2/ports.conf muss der Port 443 mit dem Befehl Listen 443 im Bereich eingetragen werden. Es muss noch die Direktive (= Anweisung, Auftrag, Befehl, Richtlinie) NameVirtualHost *:443 in diesem Bereich eingetragen werden und in der /etc/apache2/sites-available/default-ssl die VirtualHost-Direktive zu geändert werden, damit virtuelle Hosts mit SSL genutzt werden können. # /etc/init.d/apache2 restart ===== Erstellen eines neuen Zertifikates ===== Da der Nutzer des Verzeichnisses /srv/www/vhosts/[Domain]/ vom aktuell eingeloggten unterschiedlich ist, ist es zweckmäßig, die Zertifikaterstellung zunächst im Home-Verzeichnis vorzunehmen und dann in das Vhost-Verzeichnis zu kopieren. Also: # openssl req -new > [Zertifikat-Dateiname].csr Schlüssel erzeugen: # openssl rsa -in privkey.pem -out [Zertifikat-Dateiname].key Öffentliches Zertifikat erstellen: $ openssl x509 -in [Zertifikat-Dateiname].csr -out [Zertifikat-Dateiname].crt -req -signkey [Zertifikat-Dateiname].key Mit der Option --days [Tage] kann eine Gültigkeitsdauer in Tagen angegeben werden. Falls beim Ausführen des letzten Befehls der Fehler ''unable to write random state'' erscheint, muss man mit dem Befehl $ rm ~/.rnd das random file des users entfernen und den letzten Befehl nochmals ausführen Weitere Informationen: [[http://httpd.apache.org/docs/2.0/mod/core.html#%20namevirtualhost|Virtual Host Direktiven]] [[http://mrfoo.de/archiv/347-Howto-Apache2-SSL-Zertifikat-erstellen-und-aktivieren.html|Tutorium: SSL-Zertifikat erstellen]] ===== Einbinden des Zertifikats in die Apache (VHost-)Konfiguration ===== In der VHost-Konfiguration für den Port 443 (SSL-Port) folgende Zeilen hinzufügen: # SSLEngine On # SSLCertificateKeyFile /srv/www/vhosts/[vhost-Ordner]/[Dateiname].key # SSLCertificateFile /srv/www/vhosts/[vhost-Ordner]/[Dateiname].crt # #Bei verifizierten Zertifikaten muss hier noch das SSLCACertificate der Zertifizierungsstelle eingebunden werden ===== SSL Hardening ===== Nach diversen Attacken auf SSL ist es wichtig den Webserver so abzusichern, dass er nur noch sichere SSL-Algorithmen ermöglich. Dies ist bspw. in diesem Tutorial beschrieben, das auch regelmäßig geupdated wird: [[https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/]] ==== Testen der SSL Konfiguration des Webservers ==== Es gibt im Web einige Anwendungen, mit denen man die SSL-Verschlüsselung des Servers testen kann, dazu gehört zum Beispiel: [[https://www.ssllabs.com/ssltest/]] {{tag>apache ssl sicherheit}}