Apache2

SSL 指令何時生效

  • December 9, 2020

我正在嘗試學習 Apache 伺服器配置的基礎知識,並想知道 SSL 指令在 Apache 的不同範圍之間的有效性。

那些指令;

SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...

它們可以放在哪裡?僅在 VirtualHost 部分?如果我將它們放在全域範圍內,它們會起作用嗎?

抱歉,如果這個問題以某種方式脫離上下文,我仍然對 Apache 有一些全面的問題 :)

歡迎來到阿帕奇的世界!第一課是學習如何閱讀優秀的文件。在 Apache 文件中,每個指令都有一個上下文部分,用於指示該指令在伺服器配置文件中的合法位置。它可以在Syntax:Default:行的正下方找到。

server config這意味著該指令可以在伺服器配置文件(例如,httpd.conf)中使用,但不能在任何 <VirtualHost>容器<Directory>中使用。根本不允許在 .htaccess文件中使用。

虛擬主機這個上下文意味著該指令可能出現在 <VirtualHost>伺服器配置文件中的容器內。

目錄在此上下文中標記為有效的指令可以在伺服器配置文件中的<Directory><Location><Files><If><Proxy> 容器中使用,但須遵守配置部分中概述的限制。

.htaccess如果指令在此上下文中有效,則意​​味著它可以出現在每個目錄的 .htaccess 文件中。它可能不會被處理,但取決於目前活動的覆蓋。

使用SSLEngine, SSLCertificateFileSSLCertificateKeyFile上下文是伺服器配置和虛擬主機。這意味著您可以為整個伺服器指定它們,並且還可以覆蓋每個<VirtualHost>.

另一方面,該SSLRequireSSL指令在目錄和 .htaccess 上下文中是合法的。這意味著您可以通過將其放置在一個目錄中來指定不應允許非 TLS 連接,即使存在一個單獨的 HTTP 虛擬主機,否則該主機將服務於該目錄。

但是,在當今時代,您應該使用 TLS 保護一切,而這一切都是SSLRequireSSL不必要的。將所有 HTTP 重定向到 HTTPS 並通過HTTP 嚴格傳輸安全(HSTS) 策略 ( RFC 6797 ) 強制執行。

引用自:https://serverfault.com/questions/1045570