HTTPs
![]()
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.1Version: 1.11.5OpenSSL 1.0.2l 25 May 2017OpenSSL version does not support SSLv2SSLv2 ciphers will not be detectedOpenSSL version does not support SSLv3SSLv3 ciphers will not be detectedTesting SSL server 127.0.0.1 on port 443 TLS renegotiation:Session renegotiation not supported TLS Compression:OpenSSL version does not support compressionRebuild with zlib1g-dev package for zlib support Heartbleed:TLS 1.2 not vulnerable to heartbleedTLS 1.1 not vulnerable to heartbleedTLS 1.0 not vulnerable to heartbleed Supported Server Cipher(s):Preferred TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256Accepted TLSv1.2 256 bits DHE-RSA-AES256-GCM-SHA384 DHE 4096 bitsAccepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256 DHE 4096 bitsAccepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve P-256 DHE 256Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256Accepted TLSv1.2 256 bits DHE-RSA-AES256-SHA256 DHE 4096 bitsAccepted TLSv1.2 256 bits DHE-RSA-AES256-SHA DHE 4096 bitsAccepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve P-256 DHE 256Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA256 DHE 4096 bitsAccepted TLSv1.2 128 bits DHE-RSA-AES128-SHA DHE 4096 bitsAccepted TLSv1.2 256 bits AES256-GCM-SHA384Accepted TLSv1.2 128 bits AES128-GCM-SHA256Accepted TLSv1.2 256 bits AES256-SHA256Accepted TLSv1.2 256 bits AES256-SHAAccepted TLSv1.2 128 bits AES128-SHA256Accepted TLSv1.2 128 bits AES128-SHA SSL Certificate:Signature Algorithm: sha256WithRSAEncryptionRSA Key Strength: 4096Subject: 192.168.2.67Issuer: 192.168.2.67Not valid before: Jul 10 17:10:25 2018 GMTNot valid after: Jul 10 17:10:25 2019 GMTroot@vm067:~#apt-get install build-essential git zlib1g-dev apt-get build-dep opensslmake static