SSL-Verschlüsselung in Apache2 (openssl)
Bei Webservern wie Apache(2) mit wird SSL oder TLS die Hybride Verschlüsselung zur Absicherung des Datenverkehrs eingesetzt.
namensbasierte virtuelle Server sind in Verbindung mit aktuellen Clients mit Unterstützung der TLS-Erweiterung Server Name Indication (SNI) kein Problem 1) Es sollte aber ein Standardhost definiert werden der Client auf die fehlende Unterstützung hinweist.
Siehe auch 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:<file>
sichere SSL Einstellungen
Alternativ der 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 <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000" </IfModule>
- restriktive Dateirechte vergeben: Den Schlüsseldateien
chmod 600
zuweisen (chown root
) - Sicherheitsmechanismen
- Testseiten: https://www.ssllabs.com/ssltest oder https://sslcheck.globalsign.com
- Forward Secrecy: benötigt Apache 2.4x (Debian: ab jessie) siehe auch: Configuring Apache, Nginx, and OpenSSL for Forward Secrecy
1)
Für ältere Browser Internet Explorer 6 auf Windows XP, Java 6u45, … muss eine eigene IP pro 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.