Answers:
当您有多个TLS虚拟主机并使用服务器名称指示(SNI)时,可以SSLProtocol
为每个虚拟主机使用一个指令,但是除非您实际上具有IP虚拟主机,否则从第一次出现该SSLProtocol
指令起的设置将用于整个服务器和/或所有支持TLS 1的基于名称的虚拟主机。
因此,请检查您的主要代码httpd.conf
(以及所有包含的代码段,例如conf.d/*.conf
和类似的包含代码段),以查看该SSLProtocol
指令的更多情况。
您的语法是正确的,尽管我同意ezra-s的回答,即当您扩展all
速记时,您可以略微改善以下内容:
SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
通过简单地使用:
SSLProtocol TLSv1.2
/etc/letsencrypt/options-ssl-apache.conf
您指定的足够了,它不应显示任何其他协议。请记住,SSLLABS会缓存最近的测试。尽管知道没有其他协议可以像您那样定义它,但故意使人困惑。
在任何情况下,您都可以使用它或简单地:
SSLProtocol TLSv1.2
-ALL +TLSv1.2
吗?
在Apache中禁用TLS1.0版本。
如果您有多个虚拟主机,则必须更新所有配置文件,否则,ssl.conf就足够了。
要检查TSL支持版本:
# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
| TLSv1.0:
| TLSv1.1:
| TLSv1.2:
修改Apache配置文件 vi /etc/httpd/conf.d/web.conf
删除所有TLS,仅允许TLS1.2。
SSLProtocol TLSv1.2
修改后进行验证。
# 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
您需要使用以下命令重新启动Apache服务以反映更改。
sudo service apache2 restart
下面的代码对我来说很好用,您可以查看这篇文章以获取更多详细信息, 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>