Wie kann ich TLS 1.0 und 1.1 in Apache deaktivieren?

31

Weiß jemand, warum ich tls 1.0 und tls1.1 nicht deaktivieren kann, indem ich die Konfiguration auf diese aktualisiere?

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

Danach lade ich Apache neu. Ich führe einen SSL-Scan mit ssllabs oder comodo ssl tool durch und es heißt immer noch, dass tls 1.1 und 1.0 unterstützt werden. Ich möchte diese entfernen?

David
quelle

Antworten:

45

Wenn Sie über mehrere TLS VirtualHosts verfügen und die Server Name Indication (SNI) verwenden, ist es eine zulässige Syntax, SSLProtocol für jeden VirtualHost eine Direktive zu verwenden. Wenn Sie jedoch in der Praxis über IP VirtualHosts verfügen, werden die Einstellungen ab dem ersten Auftreten der SSLProtocolDirektive für den gesamten Server verwendet und / oder alle namensbasierten VirtualHosts, die TLS 1 unterstützen .

Suchen Sie in Ihrem Hauptverzeichnis httpd.conf(und in allen enthaltenen Snippets, z. B. aus conf.d/*.confähnlichen Includes) nach weiteren Vorkommen der SSLProtocolDirektive.

Ihre Syntax ist korrekt, obwohl ich der Antwort von ezra-s zustimme , dass Sie beim Erweitern der allKurzschrift Folgendes leicht verbessern können:

 SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

durch einfaches Verwenden von:

 SSLProtocol TLSv1.2
HBruijn
quelle
Das alles macht Sinn, aber ich habe getan, was Sie empfohlen haben. Ich habe mein / etc / httpd-Verzeichnis nach allen Referenzen von "SSLProtocol" durchsucht. Ich habe es dann auf SSLProtocol TLSv1.2 aktualisiert, dann einen Neustart durchgeführt und es zeigt immer noch, dass TLS 1.0 und 1.1 unterstützt werden. Ich habe es auch auf einem anderen meiner Server und demselben Problem versucht. Irgendwelche Ideen?
David
1
Fehlalarm, dies wurde in der Tat von comodo und ssllabs Berichten zwischengespeichert. Es scheint jetzt richtig zu berichten. Vielen Dank.
David
3
Ich denke, ich würde empfehlen, "all" mit Minus für die Protokolle zu verwenden, die Sie nicht wollen. Zukünftige Versionen von Apache definieren "alle" unterschiedlich, da neue Standards entwickelt und alte Standards als unsicher eingestuft werden.
Bobpaul
Wenn Sie Letsencrypt verwenden, vergessen Sie nicht zu überprüfen/etc/letsencrypt/options-ssl-apache.conf
Memes
9

dass Sie angegeben haben, reicht aus, es sollten keine anderen Protokolle angezeigt werden. Denken Sie daran, dass SSLLABS die letzten Tests zwischenspeichert. Obwohl das Wissen, dass es keine anderen Protokolle gibt, die es so definieren wie Sie, absichtlich verworren ist.

In jedem Fall können Sie das verwenden oder einfach:

SSLProtocol TLSv1.2
Ezra-s
quelle
Gibt es einen Unterschied, wenn Sie angeben -ALL +TLSv1.2?
Chazy Chaz
"Alle" wird zu "+ SSLv3 + TLSv1 + TLSv1.1 + TLSv1.2" erweitert. Ich sehe keinen Vorteil bei der Verwendung von "-All". Tatsächlich ist aus der Dokumentation nicht ersichtlich, dass "-all" sogar eine gültige Syntax ist. Sie können [+/-] protokollieren, aber alles ist kein Protokoll: httpd.apache.org/docs/2.4/mod/mod_ssl.html
bobpaul
6

Ich hatte auch mit diesem Problem zu kämpfen, da das Ändern von Konfigurationen mit der SSLProtocolDirektive nicht funktionierte. Am Ende habe ich meiner virtuellen Hostkonfiguration Folgendes hinzugefügt:

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

Welches hat perfekt funktioniert. Sie können mehr über die lesen SSLOpenSSLConfCmdRichtlinie hier .

Shultisj
quelle
4

Deaktivieren Sie die TLS1.0-Version in Apache.

Wenn Sie über mehrere virtuelle Hosts verfügen, müssen Sie alle Konfigurationsdateien aktualisieren. Andernfalls ist ssl.conf ausreichend.

So überprüfen Sie die TSL-unterstützende Version:

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.0:
|   TLSv1.1:
|   TLSv1.2:

Ändern Sie die Apache-Konfigurationsdatei, vi /etc/httpd/conf.d/web.confentfernen Sie alle TLS und lassen Sie nur TLS1.2 zu.

SSLProtocol TLSv1.2

Nach der Änderung validieren.

# grep SSLProtocol /etc/httpd/conf.d/web.conf
SSLProtocol TLSv1.2

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.2:
# service httpd restart
Narendra Kumar
quelle
-1

Sie müssen den Apache-Dienst mit dem folgenden Befehl neu starten, um die Änderungen zu berücksichtigen.

sudo service apache2 restart

Der folgende Code funktioniert für mich einwandfrei. Weitere Informationen finden Sie in diesem Artikel unter https://karthikekblog.com/how-to-disable-enable-ssl-tls-protocols-in-ubentu-apache-linux-server/

<VirtualHost *:443>
ServerName www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol +TLSv1.2
SSLCertificateFile /etc/apache2/certificates/certificate.crt
SSLCertificateKeyFile /etc/apache2/certificates/certificate.key 
SSLCertificateChainFile /etc/apache2/certificates/intermediate.crt
</VirtualHost>
Karthik
quelle
Dadurch wird nichts deaktiviert. Es wird nur TLSv1.2 aktiviert. Der Neustart variiert von Distribution zu Distribution und sogar zwischen Versionen derselben Distribution.
Gerald Schneider