====== SSL-Verschlüsselung in Apache2 (openssl) ====== Bei [[server:Webserver|Webservern]] wie [[apache:Apache]](2) mit wird [[netzwerke:ssl und tls|SSL oder TLS]] die [[security:verschlüsselung#hybride verschlüsselung|Hybride Verschlüsselung]] zur Absicherung des Datenverkehrs eingesetzt. :!: [[apache:virtuelle server#namens-basierte virtuelle hosts|namensbasierte virtuelle Server]] sind in Verbindung mit aktuellen Clients mit Unterstützung der TLS-Erweiterung [[wpde>Server Name Indication (SNI)]] kein Problem ((Für ältere Browser Internet Explorer 6 auf Windows XP, Java 6u45, ... muss eine eigene IP pro [[netzwerke:ssl und tls|SSL]]-geschützter Seite existieren. Der Grund ist das die passende IP Teil des HTTP-Request ist, der nur mit dem passenden Host-Schlüssel entschlüsselt werden kann. Da aber der passende Host erst anhand des HTTP-Request ermittelt wird, kann es an dieser Stelle zu keiner Verifizierung kommen.)) Es sollte aber ein Standardhost definiert werden der Client auf die fehlende Unterstützung hinweist. Siehe auch [[security:ssl Zertifikate]]. ===== Apache2 Konfiguration für SSL ===== * das SSL-Modul aktivieren: a2enmod ssl * **überprüfen ob Apache auf Port 443 lauscht** (Direktive "Listen 443") * **Konfiguration der virtuellen Hosts anpassen**: ===== sichere SSL Einstellungen ===== Alternativ der [[https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=apache|Mozilla SSL Configuration Generator]]. SSLEngine On SSLProtocol All -SSLv2 -SSLv3 SSLHonorCipherOrder On SSLCipherSuite 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:ECDH+AESGCM:ECDH+AES:ECDH:HIGH:MEDIUM:!RC4:!3DES:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP' SSLCertificateFile /etc/apache2/DATEI.crt SSLCertificateKeyFile /etc/apache2/DATEI.key SSLCACertificateFile /etc/apache2/intermediate-ca-cert.crt Header always set Strict-Transport-Security "max-age=15768000" * **restriktive Dateirechte vergeben**: Den Schlüsseldateien ''chmod 600'' zuweisen (''chown root'') * **Sicherheitsmechanismen** * **Testseiten**: https://www.ssllabs.com/ssltest oder https://sslcheck.globalsign.com * TLS v1.2: benötigt openssl ab Version 1.0.1 ([[debian:Debian]]: ab [[http://packages.debian.org/wheezy/openssl|wheezy]]) * TLS v1.3: benötigt openssl ab Version 1.1.1 ([[debian:Debian]]: ab [[http://packages.debian.org/buster/openssl|buster]]) * Forward Secrecy: benötigt Apache 2.4x ([[debian:Debian]]: ab [[http://packages.debian.org/jessie/apache2|jessie]]) siehe auch: [[http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html|Configuring Apache, Nginx, and OpenSSL for Forward Secrecy]]