我們有一個 Nginx 實例,在同一 IP 位址上有多個虛擬主機。 nginx.conf
具有類似以下的配置:
server {
listen 443 default_server ssl;
server_name www.primary.com;
...
}
server {
listen 80;
server_name .primary.com;
rewrite ^(.*) https://www.primary.com$1 permanent;
}
server {
listen 443 ssl;
server_name www.secondary.com;
...
}
server {
listen 80;
server_name .secondary.com;
rewrite ^(.*) https://www.secondary.com$1 permanent;
}
server {
listen 443 ssl;
server_name www.tertiary.com;
...
}
server {
listen 80;
server_name .tertiary.com;
rewrite ^(.*) https://www.tertiary.com$1 permanent;
}
...
每個網域都有自己的 SSL 憑證。所有憑證在 SSLLabs.com 上均被評為 A+。但是,所有這些都顯示與未啟用 SNI 的瀏覽器(例如 WinXP 上的 IE8)不相容。
使用者通常可以正常存取http(s)://www.primary.com
、http(s)://www.secondary.com
、http(s)://www.tertiary.com
等。然而,一些使用 Windows 7 64 位元的 IE9 用戶抱怨說,當他們嘗試訪問https://www.secondary.com
或https://www.tertiary.com
.如果他們忽略安全警告並繼續,則 URL 可以正常開啟。然後,從瀏覽器網址列檢查證書會顯示該證書,www.primary.com
而不是所請求網域的證書。相同的使用者在同一台電腦上使用任何其他瀏覽器(例如 Firefox、Chrome 或 Opera)不會遇到任何問題。沒有其他使用者報告任何錯誤(IE10、IE11、Safari、Windows 8、Mac OS 等)。另請注意,並非所有 IE9 用戶都會遇到此問題。我們已經看到同一網路中的 IE9 使用者能夠完美地存取網站。
由於使用者處於 IT 政策鼓勵使用預設瀏覽器 (IE9) 的企業環境中,因此一些受影響的使用者認真對待該警告並拒絕繼續使用受影響的網站。我們嘗試了常規選項,例如清除瀏覽器快取。
關於如何找到和解決根本原因有什麼想法或指示嗎?我們想要一個可以在伺服器端實現並且不需要用戶任何干預的解決方案(除非 Windows 7 上的 IE9 有記錄的問題)。