如何在 Apache 上禁用 TLS 1.0、TLS 1.1

如何在 Apache 上禁用 TLS 1.0、TLS 1.1

我已经在 Web 服务器中启用了 TLS 1.2。但是http://ssllabs.com表示,我在服务器中启用了 TLS 1.0 和 1.1 版本以及 TLS1.2。我修改了配置文件以从服务器禁用 1.0 和 1.1。但这没有帮助。

/etc/apache2/mods-enabled/ssl.conf

SSLCipherSuite HIGH:!SSLv3:!kRSA:!kECDH:!ADH:!DSS
SSLHonorCipherOrder on
SSLProtocol -all +TLSv1.2

我的 Apache 服务器中有多个虚拟主机。在每个文件中,我都有以下配置。

SSLEngine On
SSLProtocol -all +TLSv1.2
SSLCertificateFile /etc/ssl/certs/certfile.pem
SSLCertificateKeyFile /etc/ssl/private/certfile.pem

答案1

在 /etc/letsencrypt/ 文件夹中查找配置文件。Let's Encrypt 在 sites-enabled/-le-ssl.conf 文件中添加了一个条目:

包括 /etc/letsencrypt/options-ssl-apache.conf

您还需要更新该文件中的 SSLProtocol 和 SSLCipherSuite 指令。

答案2

Letsencrypt 默认会将其写入/etc/letsencrypt/options-ssl-apache.conf。请检查以确保 包含在您的服务器配置中。

SSLEngine on    
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

打开此文件并进行如下编辑。

SSLEngine on

#we comment out whatever Letsencrypt give here
#SSLProtocol             all -SSLv2 -SSLv3
#We disabled TLS 1.0/1.1 and SSL 2.0/3.0 here
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

#Comment out whatever Letsencrypt give by default for SSLCipherSuite
#SSLCipherSuite    ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 .....

#Add this line instead of what Letsencrypt added as SSLCipherSuite
#This is to ensure the use of SSL encryption with a high degree of protection.
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES

SSLHonorCipherOrder     on
SSLCompression          off

返回SSL 服务器测试并清除缓存。然后重新运行测试

在此处输入图片描述

答案3

使用当前的 Ubuntu 18.04 LTS,我们有 Apache 2.4.29,并且问题无法重现。

以下配置可以/etc/apache2/sites-enables/default-ssl.conf关闭不需要的协议版本:

# Suppress TLSv1.0 and TLS v1.1
SSLProtocol +TLSV1.2 +TLSv1.3

我把它放在靠近文件末尾的位置</VirtualHost>

答案4

在您的虚拟主机配置中,编辑此行

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

请注意,在配置文件中可能包含另一个文件,因此您可以编辑该文件。

相关内容