Apache-2.4

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

  • January 5, 2021

目前 Apache 託管了幾個子域,其中包含使用 certbot 和 http 質詢生成的主機證書。

現在我想設置一個預設的虛擬 ssl 主機來將不存在的子域重定向到主域。為此,我將生成一個帶有 DNS 質詢的萬用字元證書。

由於我目前無法通過 DNS 質詢自動續訂,因此我只想將萬用字元證書用於 Apache 中的預設 ssl 主機。

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

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

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

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

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

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

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