Apache 2.4 文档被误解?

Apache 2.4 文档被误解?

我不确定是我的问题还是文档有问题,Apache但我认为这经常误导退出。

例子:

http://httpd.apache.org/docs/2.4/ssl/ssl_howto.html

您的 SSL 配置至少需要包含以下指令。

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    SSLCertificateFile "/path/to/www.example.com.cert"
    SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>

所以根据上面的内容,我假设该SSLEngine指令是必须

现在在 https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

SSLEngine Directive
Description:    SSL Engine Operation Switch
Syntax: SSLEngine on|off|optional
Default:    SSLEngine off
Context:    server config, virtual host
Status: Extension
Module: mod_ssl

This directive toggles the usage of the SSL/TLS Protocol Engine. This is should be used inside a <VirtualHost> section to enable SSL/TLS for a that virtual host. By default the SSL/TLS Protocol Engine is disabled for both the main server and all configured virtual hosts.
Example

<VirtualHost _default_:443>
SSLEngine on
#...
</VirtualHost>

In Apache 2.1 and later, SSLEngine can be set to optional. This enables support for RFC 2817, Upgrading to TLS Within HTTP/1.1. At this time no web browsers support RFC 2817.

特别是它所说的部分 - 默认情况下,主服务器和所有配置的虚拟主机都禁用 SSL/TLS 协议引擎。

首先,我不明白他们所说的 SSL/TLS 协议引擎的实际含义是什么。据我了解,要启用 SSL/TLS 支持,我们需要安装该mod_ssl模块,因为默认情况下未安装该模块 - 这是嘿谈论的引擎吗?

其次,一旦mod_ssl安装,httpd不仅可以开始收听,80而且443还可以继续收听。

第三,当我查看ssl.conf配置文件时,有以下行SSLEngine on。 Apache 文档说主服务器配置和之前的任何内容(例如虚拟主机指令)被解析为一个 - 那么为什么我需要SSLEngine在每个虚拟主机中使用该指令?

第四,我创建了两个虚拟主机,例如,并ServerName为每个主机定义指令和 SSLCertificate 指令,以便每个主机都会根据SNI浏览器发送的值以正确的证书进行响应,而且我做了不是在两个虚拟主机中包含 SSLEngine 指令,Web 内容将通过httpsApache 返回正确的 SSL 证书。

为什么文档说它是必需的,但没有它却可以工作?

期待您的评论!

附言。请记住我只是人类。我花了相当多的时间来阅读文档和复制品 - 如果我错过了一些东西,请道歉,这不是因为懒惰,有时我们可能会忽略就在我们眼前的简单想法。

答案1

我会尽力帮助:

1) SSL 协议引擎正是驱动 SSL 协议(又名 HTTPS)的引擎。该引擎由 mod_ssl 提供,但默认情况下未启用,因为这会消耗额外的资源。它与 HTTP 协议有很大不同,它需要自己的名称:HTTPS

2) 端口 443 的打开和 SSLEngine 的启用仅由于操作系统维护人员将该配置打包到 mod_ssl 包中而发生。通过直接从源代码构建和安装 Apache,默认行为如文档所述。

3) ssl.conf 文件是由您的发行版维护者提供的,Apache 和 Apache 文档对此一无所知,因此他们只是记录默认值。我不确定您的系统的内容是什么,但很可能您会将其包含到每个虚拟主机中,因为 Apache 文档指出 SSLEngine 应该在虚拟主机配置中使用。需要在每个虚拟主机中启用它,以免在不需要的地方消耗资源。

4) 如果它对你来说是这样的,那么很可能这是你的操作系统提供的另一种便利。 Apache 不知道每个操作系统如何在其包中配置 Apache,因此它们仅描述最基本的默认行为。您可以浏览您的发行版提供的所有 Apache 配置文件,看看它们如何影响 Apache 的行为,这样您可以学到很多东西。

相关内容