在 AWS 中,我在應用程式負載平衡器處終止 TLS。我已經使用AWS的證書管理器(ACM)配置了通配符TLS證書,例如*.example.com.
我有AWS Route 53解析*.example.com
,但我沒有任何東西,*.*.example.com
因為我不需要這個。
我知道您無法為多層域(例如*.*.example.com
.
https://x.example.com
一切都很好,並提供有效的證書。我收到一個證書錯誤https://y.x.example.com
,這是有道理的。我不需要服務多層子網域,例如*.*.example.com
.
我希望能夠阻止所有多層級網域請求,例如https://y.x.example.com
或只是不進行 Route 53 解析。基本上我想要一條規則,規定任何主機https://*.*.example.com
回傳 404 或主機不被解析。
在應用程式負載平衡器中,我有 2 個偵聽器連接埠 80 和連接埠 443。
我可以為連接埠 80 偵聽器配置一條規則,該規則工作正常,http://x.y.example.com
並且可以返回 404,但當我為連接埠 443 配置相同的規則時,它不起作用。我認為這是有道理的,因為瀏覽器無法完成 TLS 握手。
如果我完成nslookup
forx.example.com
並且y.x.example.com
獲得相同的名稱伺服器,我不會期望 Route 53 能夠解析y.x.example.com
.
因此,我正在尋找兩個問題之一的答案:
- 如何配置 AWS 負載平衡器以阻止連接埠 443 上的所有通配符多層子域?
- 為什麼 Route 53 解析
y.x.example.com
/如何停止 Route 53 解析相同?
答案1
如果這是專門針對 HTTPS/TLS 的情況,我認為這不可能以任何有意義的方式實現。
如果您沒有用戶端嘗試連線的名稱的有效證書,則無論配置如何,您首先都無法在伺服器端發送有效回應(如問題中提到的 404 回應)。
對於普通 HTTP 情況,可能可以執行類似於基於 a 的要求的操作主機狀況,但我不確定實際上是否可以區分單級與多級情況。不過,我不確定現在普通的 HTTP 情況是否那麼有趣。這就是 DNS 中通配符的工作原理。尋找不屬於樹的現有分支的 DNS 名稱(無論是否缺少一個或多個標籤)將符合其上方的通配符記錄。
還值得注意的是,*
僅當它是最左邊的標籤時才用作通配符。*.example.com
用作通配符,*.foo.example.com
用作通配符,但foo.*.example.com
,foo*.example.com
或*foo.example.com
不是 DNS 中的通配符。
我不相信您有一種實用的方法來使用通配符,同時獲得您所要求的「僅一級」功能(一般使用 DNS 通配符或專門使用 Route53)。請考慮新增您實際需要的特定名稱(如果需要的話動態地),或以其他方式使用正常的通配符行為。
總的來說,我懷疑最好的選擇是不在 DNS 中使用通配符,這樣就不會出現客戶端使用這些不需要的名稱連接到 ELB 的問題。