SSL 指令何時生效
我正在嘗試學習 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
,SSLCertificateFile
,SSLCertificateKeyFile
上下文是伺服器配置和虛擬主機。這意味著您可以為整個伺服器指定它們,並且還可以覆蓋每個<VirtualHost>
.另一方面,該
SSLRequireSSL
指令在目錄和 .htaccess 上下文中是合法的。這意味著您可以通過將其放置在一個目錄中來指定不應允許非 TLS 連接,即使存在一個單獨的 HTTP 虛擬主機,否則該主機將服務於該目錄。但是,在當今時代,您應該使用 TLS 保護一切,而這一切都是
SSLRequireSSL
不必要的。將所有 HTTP 重定向到 HTTPS 並通過HTTP 嚴格傳輸安全(HSTS) 策略 ( RFC 6797 ) 強制執行。