Um HTTPs zu aktivieren, ist in der entsprechenden vHost-Konfiguration ein Eintrag vorzunehmen bzw. der alte Eintrag zu löschen. Um HTTPs nutzen zu können ist ein Zertifikat notwendig. Es kann ein selbstsigniertes Zertifikat sein, aber ein echtes offiziell gültiges Zertifikat wäre besser. Dafür könnte, wenn man kein Geld ausgeben will, Letsencrypt eine Anlaufstelle sein.
Selbstsigniertes Zertifikat erstellen
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache-selfsigned.key -out /etc/apache2/ssl/apache-selfsigned.crt
<VirtualHost *:443> ServerName mydomain.tld DocumentRoot /var/www/html ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache-selfsigned.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache-selfsigned.key </VirtualHost>
Nun nicht vergessen das Zertifikat noch einzubinden, da es sonst nicht funktioniert. Und natürlich auch SSL aktivieren. Das nötige Modul lädt man mit a2enmod ssl
Veraltetes SSL abschalten
Bestimmt weiß der kluge Leser, dass SSL, der Verläufer von TLS, in der Version 3 längst unsicher ist. Google hilft da gerne aus, wer sich zum Thema Poodle Attack schlau machen will. Ich zeige hier wie man es am besten abschaltet und verifiziert, dass es wirklich abgeschaltet ist.
Am einfachsten ist es, wenn es im Apache2-Modul - bei Debian ist es in /etc/apache2/mods-available/ssl.conf - abgeschaltet wird. Somit ist automatisch jeder vHost betroffen und man muss es nicht auf jedem vHost extra machen - aber das kann man natürlich auch tun.
Die folgenden Zeilen gehören also in die ssl.conf oder zur Konfig des vHosts und schaltet alle unsicheren Protokolle ab. Alleine TLS1.2, welches aktuell ist, bleibt eingeschaltet.
SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:
ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
Die Sache prüfen
Natürlich will man prüfen, ob das Ergebnis das bringt, was gewünscht war. Am besten geht es mit "sslscan", was man einfach mit yum oder apt-get nachinstallieren kann. Der Syntax ist kinderleicht. Hier meine Ausgabe:
root@vm067:~# sslscan 127.0.0.1
Version: 1.11.5
OpenSSL 1.0.2l 25 May 2017
OpenSSL version does not support SSLv2
SSLv2 ciphers will not be detected
OpenSSL version does not support SSLv3
SSLv3 ciphers will not be detected
Testing SSL server 127.0.0.1 on port 443
TLS renegotiation:
Session renegotiation not supported
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
Heartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256
Accepted TLSv1.2 256 bits DHE-RSA-AES256-GCM-SHA384 DHE 4096 bits
Accepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256 DHE 4096 bits
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve P-256 DHE 256
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256
Accepted TLSv1.2 256 bits DHE-RSA-AES256-SHA256 DHE 4096 bits
Accepted TLSv1.2 256 bits DHE-RSA-AES256-SHA DHE 4096 bits
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve P-256 DHE 256
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA256 DHE 4096 bits
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA DHE 4096 bits
Accepted TLSv1.2 256 bits AES256-GCM-SHA384
Accepted TLSv1.2 128 bits AES128-GCM-SHA256
Accepted TLSv1.2 256 bits AES256-SHA256
Accepted TLSv1.2 256 bits AES256-SHA
Accepted TLSv1.2 128 bits AES128-SHA256
Accepted TLSv1.2 128 bits AES128-SHA
SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength: 4096
Subject: 192.168.2.67
Issuer: 192.168.2.67
Not valid before: Jul 10 17:10:25 2018 GMT
Not valid after: Jul 10 17:10:25 2019 GMT
root@vm067:~#
apt-get install build-essential git zlib1g-dev
apt-get build-dep openssl
make static