我正在尝试学习 Apache 服务器配置的基础知识,并想知道 SSL 指令在 Apache 的不同范围之间的有效性。
那些指令;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
它们可以放在哪里?仅在 VirtualHost 部分?如果我将它们放在全局范围内,它们会起作用吗?
抱歉,如果这个问题以某种方式脱离上下文,我仍然对 Apache 有一些全面的问题 :)
欢迎来到阿帕奇的世界!第一课是学习如何阅读优秀的文档。在 Apache 文档中,每个指令都有一个上下文部分,用于指示该指令在服务器配置文件中的合法位置。它可以在
Syntax:
和Default:
行的正下方找到。使用
SSLEngine
,SSLCertificateFile
,SSLCertificateKeyFile
上下文是服务器配置和虚拟主机。这意味着您可以为整个服务器指定它们,并且还可以覆盖每个<VirtualHost>
.另一方面,该
SSLRequireSSL
指令在目录和 .htaccess 上下文中是合法的。这意味着您可以通过将其放置在一个目录中来指定不应允许非 TLS 连接,即使存在一个单独的 HTTP 虚拟主机,否则该主机将服务于该目录。但是,在当今时代,您应该使用 TLS 保护一切,而这一切都是
SSLRequireSSL
不必要的。将所有 HTTP 重定向到 HTTPS 并通过HTTP 严格传输安全(HSTS) 策略 ( RFC 6797 ) 强制执行。