今天启动新服务器后,我遇到了一些麻烦。我做了以下操作:
- 安装 CentOS 7
- 已安装 Apache + PHP
- 使用 SSL(letsencrypt)保护我的服务器
但当我用 SSL-Test (ssllabs.com) 检查我的配置时,我得到了一个等级C。那是因为我仍启用了 SSLv3。有线。我在 letsencrypt 配置文件中禁用了它。
但过了一段时间我发现还有另一个 ssl-config 文件。默认情况下 SSLv3 未在那里被禁用,Apache 加载了此值。
我的问题是我有 2 个文件:
/etc/letsencrypt/options-ssl-apache.conf
:Let's Encrypt 配置文件,包含在每个虚拟主机定义中。/etc/httpd/conf.d/ssl.conf
:“标准” SSL 配置文件。
在“标准”配置中禁用 SSLv3 后,我得到了A+评级。看来 Apache 从第二个文件中获取了“SSLProtocol”定义,但从第一个文件中获取了所有其他选项。
我如何确定 Apache 正在加载哪些值以及从哪个文件加载?
答案1
除非您采取特定操作来包含该/etc/letsencrypt/options-ssl-apache.conf
文件,否则标准 CentOS 配置将不会读取它。
CentOS 的默认设置是读取,/etc/https/conf/httpd.conf
其中包括来自的文件/etc/httpd/conf.d
。
我怀疑您没有采取任何具体措施,而是使用默认文件。您可以通过查找配置文件及其所包含的文件中包括的语句来确认实际发生的情况。
Apache httpd 指令按声明顺序进行处理。包含文件在声明时进行处理。稍后声明的重复指令将覆盖先前声明的指令。
答案2
是的,由于 OpenSSL 中存在错误,Apache 将仅使用 ssl.conf 中定义的 SSLProtocol 配置,如下所述:
是否可以在 Apache 中为单个 VirtualHost(poodle)设置 SSLProtocol?
根据我对 Apache 2.2.15 的使用经验,它似乎是唯一无法从 vhost.conf 文件加载的 SSL 配置,尽管我尚未测试所有可能的配置。但是,如果您想自己检查服务器中的配置,而不使用 SSL Server Test,那么 CipherFox 等浏览器工具将对您有用。