Apache 如何選擇使用哪個憑證?

Apache 如何選擇使用哪個憑證?

目前,Apache 正在託管多個子網域,其中包含由 certbot 產生的主機憑證和 http 質詢。

現在我想設定一個預設的虛擬 ssl 主機來將不存在的子網域重新導向到主網域。為此,我將產生帶有 DNS 質詢的通配符憑證。

由於我目前無法使用 DNS 質詢自動續訂,因此我只想對 Apache 中的預設 ssl 主機使用通配符憑證。

我的問題是:當 Apache 和瀏覽器之間進行第一次協商時,Apache 會首先在配置中查找與請求的主機匹配的證書,還是 Apache 每次都會提供預設 ssl 主機中配置的通配符證書?

答案1

阿帕奇文檔包含有關為請求選擇哪個 VirtualHost 的詳細部分。引用“伺服器如何選擇正確的基於名稱的虛擬主機”部分:

重要的是要認識到基於名稱的虛擬主機解析的第一步是基於 IP 的解析。基於名稱的虛擬主機解析僅在將候選範圍縮小到基於 IP 的最佳匹配後,才選擇最合適的基於名稱的虛擬主機。在所有 VirtualHost 指令中對 IP 位址使用通配符 (*) 會使這種基於 IP 的對應變得無關緊要。

當請求到達時,伺服器將根據請求使用的 IP 位址和連接埠找到最佳(最具體)匹配的 <VirtualHost> 參數。如果有多個虛擬主機包含此最佳匹配位址和連接埠組合,Apache 將進一步將 ServerName 和 ServerAlias 指令與請求中存在的伺服器名稱進行比較。

如果在任何基於名稱的虛擬主機中省略 ServerName 指令,伺服器將預設使用從系統主機名稱派生的完全限定網域名稱 (FQDN)。這種隱式設定的伺服器名稱可能會導致違反直覺的虛擬主機匹配,因此不鼓勵這樣做。

您應該建立一個專用的預設虛擬主機。對未在另一個 VirtualHost 區塊中明確列出的主機的每個請求都會定向到那裡,因此您可以選擇要在那裡使用的憑證。

答案2

Apache 允許您在虛擬主機層級指定 SSLCertificateFile 指令。看SSL憑證文件,其中顯示「上下文:伺服器配置、虛擬主機」。因此,無論它使用哪個虛擬主機來應答請求(無論是預設虛擬主機還是其他虛擬主機),它都會使用您在該虛擬主機中透過 SSLCertificateFile 配置的憑證。

我希望這能回答你的問題?

相關內容