我新安装了 ubuntu 服务器版本 14.04.1,我的 apache2 启用了 SSL。我想禁用 SSLv3
(我知道这是一个常见问题,但我已在多个网站上搜索过所有其他答案,并且我相信我已经遵循了他们建议的所有步骤。)
当我使用以下命令时:
nmap --script ssl-enum-ciphers -p 443 MYDOMAIN.com
我可以看到两组密码。一组是 SSLv3,一组是 TLSV1.0
我已启用 SSL 模块,其配置文件是 /etc/apache2/mods-enabled/ssl.conf
我通过改变行来改变它
SSLProtocol all
到
SSLProtocol All -SSLv2 -SSLv3
从所有文档和网络教程来看,这应该禁用 SSLv3。
我使用以下命令重新启动 apache
sudo service apache2 restart
但没有变化。SSLv3 仍然在列表中。
我尝试停止服务器并重新运行命令,以确保我没有意外检查错误的服务器。结果正如预期的那样发生了变化。
有人能指出我犯了什么错误吗?
罗伯特
我的确切 Ubuntu 版本:
root@xxxx:/etc/apache2/mods-enabled# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
我的确切 apache2 版本:
root@xxxx:~# apache2 -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 22 2014 14:36:38
我的确切 openssl 版本:
root@xxxx:~# openssl version
OpenSSL 1.0.1f 6 Jan 2014
参考:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslprotocol
答案1
我发现我有其他配置文件覆盖了该选项。
可以通过运行以下命令找到这些文件:
cd /etc/apache2
grep -r "SSLProto" .
答案2
SSLv2 不再受支持。
所以
SSLProtocol All -SSLv2 -SSLv3
不起作用
SSLProtocol All -SSLv3
将要
答案3
在您的 apache 配置文件中使用以下设置:
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
然后重启 Apache 并检查你的站点
https://www.ssllabs.com/ssltest/analyze.html?d=www.yourfancysite.com
它给了我 A 级(截至 2017 年 7 月),而我之前的设置只给了 F :)
致谢:
https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/