Comment puis-je désactiver TLS 1.0 et 1.1 dans Apache?

31

Est-ce que quelqu'un sait pourquoi je ne peux pas désactiver tls 1.0 et tls1.1 en mettant à jour la config.

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

Après cela, je recharge apache, je fais un scan ssl en utilisant ssllabs ou l'outil sod comodo, et il dit toujours que les tls 1.1 et 1.0 sont pris en charge. Je voudrais les supprimer?

David
la source

Réponses:

45

Lorsque vous avez plusieurs hôtes virtuels TLS et utilisez l'indication de nom de serveur (SNI), c'est une syntaxe autorisée d'avoir une SSLProtocol directive pour chaque hôte virtuel, mais sauf si vous avez des hôtes virtuels IP dans la pratique, les paramètres de la première occurrence de la SSLProtocoldirective sont utilisés pour l'ensemble du serveur et / ou tous les VirtualHosts basés sur le nom prenant en charge TLS 1 .

Vérifiez donc votre principal httpd.conf(et tous les extraits inclus par exemple et les inclusions conf.d/*.confsimilaires) pour plus d'occurrences de la SSLProtocoldirective.

Votre syntaxe est correcte, même si je suis d'accord avec la réponse d' Ezra-s selon laquelle, lorsque vous développez le allraccourci, vous pouvez légèrement améliorer:

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

en utilisant simplement:

 SSLProtocol TLSv1.2
HBruijn
la source
Tout cela a du sens, mais j'ai fait ce que vous avez recommandé. J'ai grep'd mon répertoire / etc / httpd pour toutes les références de "SSLProtocol". Je l'ai ensuite mis à jour vers SSLProtocol TLSv1.2, puis j'ai redémarré et cela montre toujours que tls 1.0 et 1.1 sont pris en charge. Je l'ai également essayé sur un autre de mes serveurs et même problème. Des idées?
David
1
Fausse alarme, celle-ci a en effet été mise en cache par les rapports comodo et ssllabs. Il semble que le rapport soit correct maintenant. Merci.
David
3
Je pense que je recommanderais d'utiliser "tous" avec moins pour les protocoles que vous ne voulez pas. Les futures versions d'apache définissent «tous» différemment à mesure que de nouvelles normes sont développées et que les anciennes normes ne sont pas sécurisées.
bobpaul
si vous utilisez Letsencrypt, n'oubliez pas de vérifier/etc/letsencrypt/options-ssl-apache.conf
Memes
9

que vous avez spécifié est suffisant, il ne devrait afficher aucun autre protocole. N'oubliez pas que SSLLABS met en cache les tests récents. Bien que sachant qu'il n'y a pas d'autres protocoles le définissant comme vous l'avez fait, c'est un peu compliqué exprès.

Dans tous les cas, vous pouvez l'utiliser ou simplement:

SSLProtocol TLSv1.2
ezra-s
la source
Y a-t-il une différence si vous spécifiez -ALL +TLSv1.2?
Chazy Chaz
"Tous" se développe en "+ SSLv3 + TLSv1 + TLSv1.1 + TLSv1.2". Je ne vois aucun avantage à utiliser "-Tous". En fait, d'après la documentation, il n'est pas clair que "-all" est même une syntaxe valide. Vous pouvez faire le protocole [+/-] mais tout n'est pas un protocole: httpd.apache.org/docs/2.4/mod/mod_ssl.html
bobpaul
6

Je me débattais également avec ce problème, la modification des configurations avec la SSLProtocoldirective ne fonctionnait pas. J'ai fini par ajouter ce qui suit à ma configuration d'hôte virtuel:

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

Ce qui a parfaitement fonctionné. Vous pouvez en savoir plus sur la SSLOpenSSLConfCmddirective ici .

Shultisj
la source
4

Désactivez la version TLS1.0 dans Apache.

Si vous avez plusieurs hébergements virtuels, vous devez mettre à jour tous les fichiers de configuration, sinon, ssl.conf suffit.

Pour vérifier la version prise en charge TSL:

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

Modifiez le fichier de configuration Apache vi /etc/httpd/conf.d/web.confsupprimez tous les TLS et autorisez uniquement TLS1.2.

SSLProtocol TLSv1.2

Validez après la modification.

# 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
la source
-1

Vous devez redémarrer le service Apache à l'aide de la commande suivante pour refléter les modifications.

sudo service apache2 restart

Le code ci-dessous fonctionnera bien pour moi, vous pouvez consulter cet article pour obtenir plus de détails, 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
la source
Cela ne désactivera rien. Il activera uniquement TLSv1.2. Et la façon de redémarrer varie d'une distribution à l'autre, et même entre les versions de la même distribution.
Gerald Schneider