Jak mogę wyłączyć TLS 1.0 i 1.1 w Apache?

31

Czy ktoś wie, dlaczego nie mogę wyłączyć tls 1.0 i tls1.1 poprzez zaktualizowanie konfiguracji do tego.

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

Po wykonaniu tej czynności ponownie ładuję apache. Wykonuję skanowanie ssl przy użyciu narzędzia ssllabs lub comodo ssl i nadal mówi, że tls 1.1 i 1.0 są obsługiwane. Chciałbym je usunąć?

David
źródło

Odpowiedzi:

45

Jeśli masz wiele TLS VirtualHosts i używasz Server Name Indication (SNI), dozwoloną składnią jest posiadanie SSLProtocol dyrektywy dla każdego VirtualHost, ale jeśli nie masz IP VirtualHosts w praktyce, ustawienia od pierwszego wystąpienia SSLProtocoldyrektywy są używane dla całego serwera i / lub wszystkie oparte na nazwach VirtualHosts obsługujące TLS 1 .

Więc sprawdź swoje główne httpd.conf(i wszystkie zawarte fragmenty z na przykład conf.d/*.confi podobnych obejmuje) pod kątem więcej wystąpień SSLProtocoldyrektywy.

Twoja składnia jest poprawna, chociaż zgadzam się z odpowiedzią ezra-e, że kiedy rozszerzysz allskrót, możesz nieznacznie poprawić:

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

po prostu używając:

 SSLProtocol TLSv1.2
HBruijn
źródło
To wszystko ma sens, ale zrobiłem to, co zaleciłeś. Grep'd mój katalog / etc / httpd dla wszystkich odniesień do „SSLProtocol”. Następnie zaktualizowałem go do SSLProtocol TLSv1.2, a następnie wykonałem restart i nadal pokazuje, że obsługiwane są tls 1.0 i 1.1. Próbowałem też na innym serwerze i tym samym problemie. Jakieś pomysły?
David
1
Fałszywy alarm, rzeczywiście był buforowany przez raporty comodo i ssllabs. Wygląda na to, że teraz raportuje poprawnie. Dziękuję Ci.
David
3
Myślę, że poleciłbym użycie „wszystkich” z minusem dla protokołów, których nie chcesz. Przyszłe wersje apache definiują „wszystko” inaczej, gdy nowe standardy są opracowywane, a stare standardy okazują się niepewne.
bobpaul,
jeśli używasz Letsencrypt, nie zapomnij sprawdzić/etc/letsencrypt/options-ssl-apache.conf
Memes
9

podana przez Ciebie wartość jest wystarczająca, nie powinna pokazywać żadnych innych protokołów. Pamiętaj, że SSLLABS buforuje ostatnie testy. Chociaż świadomość, że nie ma innych protokołów definiujących to tak jak Ty, jest celowo trochę skomplikowana.

W każdym razie możesz użyć tego lub po prostu:

SSLProtocol TLSv1.2
ezra-s
źródło
Czy jest jakaś różnica, jeśli ją określisz -ALL +TLSv1.2?
Chazy Chaz,
„Wszystko” rozwija się do „+ SSLv3 + TLSv1 + TLSv1.1 + TLSv1.2”. Nie widzę korzyści z używania „-All”. W rzeczywistości z dokumentacji nie jest jasne, że „-all” jest nawet poprawną składnią. Możesz zrobić protokół [+/-], ale nie wszystko to protokół: httpd.apache.org/docs/2.4/mod/mod_ssl.html
bobpaul
6

Walczyłem również z tym problemem, modyfikowanie konfiguracji za pomocą SSLProtocoldyrektywy nie działało. Skończyło się na dodaniu do mojej konfiguracji wirtualnego hosta:

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

Który działał idealnie. Możesz przeczytać więcej o SSLOpenSSLConfCmddyrektywie tutaj .

Shultisj
źródło
4

Wyłącz wersję TLS1.0 w Apache.

Jeśli masz wiele hostów wirtualnych, musisz zaktualizować wszystkie pliki konfiguracji, w przeciwnym razie wystarczy plik ssl.conf.

Aby sprawdzić wersję obsługującą TSL:

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

Zmodyfikuj plik konfiguracyjny Apache, vi /etc/httpd/conf.d/web.confusuń wszystkie TLS i zezwól tylko na TLS1.2.

SSLProtocol TLSv1.2

Sprawdź poprawność po modyfikacji.

# 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
źródło
-1

Musisz zrestartować usługę Apache za pomocą następującego polecenia, aby odzwierciedlić zmiany.

sudo service apache2 restart

Poniższy kod będzie dla mnie dobrze działał, możesz sprawdzić ten artykuł, aby uzyskać więcej informacji, 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
źródło
To niczego nie wyłączy. Umożliwi to tylko TLSv1.2. Sposób ponownego uruchomienia różni się w zależności od dystrybucji, a nawet między wersjami w tej samej dystrybucji.
Gerald Schneider