G'Day,.net可以知道客戶端是否可以通過HTTP進行SNI功能?
我們希望使用SNI在基於雲的單一IP解決方案上託管SSL網站。 .net能否在TLS握手和HTTP之前判斷客戶端是否支持SNI?
G'Day,.net可以知道客戶端是否可以通過HTTP進行SNI功能?
我們希望使用SNI在基於雲的單一IP解決方案上託管SSL網站。 .net能否在TLS握手和HTTP之前判斷客戶端是否支持SNI?
您不清楚「TLS握手」之前「」的含義。
服務器名稱擴展名位於客戶端Hello消息中,這是客戶端發送的用於啓動握手的第一個TLS消息。由於HTTPS也始終從首先建立TLS連接開始,因此根本就沒有任何事情發生。在握手之前瞭解客戶是否具備SNI能力是根本不可能的。
您可能可以在客戶端使用JavaScript to try to detect SNI support對某些內容進行排序。這就是說,這不太可能解決您的一般問題:如果您在SNI不受支持時有回退/通配符證書,則除了事實證書是not recommended之外,其他特定證書幾乎沒有意義。如果你期望SNI,你會阻止不支持它的客戶端。
如果你看看維基百科,它列出以下爲SNI兼容。
所以如果你開始在HTTP
的連接,那麼你可以檢查useragent
並檢測客戶端支持SNI
,如果他們確實將它們重定向到HTTPS
,如果不將它們保留在HTTP
。
在我們的例子中,我們關心的是,唯一的Web瀏覽器不兼容SNI是IE瀏覽器在XP ...
您所連結的JavaScript解決方案也看起來很有趣。您可能最初可能擁有一個「瀏覽器功能」檢測頁面,然後將其重定向到適合其瀏覽器的域。我不確定如果網站有很多切入點,那麼效果會有多好,但是有趣的概念是毫無用處的。 – dana
@dana - 我們通過在asp.net中使用用戶代理標題並將其與兼容的瀏覽器列表進行比較來解決問題。 –
@dana,JS技巧可以用於製作瀏覽器統計信息或在用戶訪問網站前向用戶發送一條好消息。不過,這不會讓網站支持SNI。如果您的網站可以通過SNI進行訪問,則不需要SNI支持。 timmah.faase,因爲用戶代理頭只能在握手成功後才能訪問,所以不清楚如何解決你自己的問題。 – Bruno