
我有一個使用 Forefront TMG 作為 HTTPS 網站發布的網站。它具有有效的 SSL 憑證 (EV)。該網站可以在除 Safari、Midori 和 Dolphin 之外的所有瀏覽器上正確顯示。
問題是在 Safari 上根本無法連接到該網站。就像該網站根本不響應請求一樣。沒有檔案被傳輸。連線完全中斷。至少持續很長時間(30 秒到幾分鐘)。
我有幾個透過 HTTPS 配置的不同網站。不同的網域、不同的IP和不同的憑證。這些憑證來自不同的頒發者。
我的所有 HTTPS 網站都存在此問題,僅適用於 Safari、Midori 和 Dolphin 瀏覽器,所有 3 個網站在所有其他瀏覽器上都能正常運作。沒有滯後,沒有報告任何問題。
我嘗試在 TMG 偵聽器上停用 HTTP 到 HTTPS 重定向以排除憑證問題。我也無法透過 http 造訪我的網站。然而,它們可以透過 Firefox、Opera、Chrome、IE、Vivaldi、Slimjet 和 Edge 瀏覽器完美存取。
有時我可以在 Safari 上顯示單一頁面,但需要 30 秒以上才能顯示,而且缺少一些圖像(和/或 CSS)。然後 - 網站失敗,因為頁面上的 AJAX 失敗,儘管 CORS 標頭配置正確並且引用的 URL 甚至可以響應(有巨大的滯後)。
它看起來像這樣:您輸入 URL 並收到有關該網站無法存取的訊息。然後,如果您多次刷新頁面,它最終會出現,但嚴重損壞(就像許多檔案無法存取)。
在其他瀏覽器上沒有延遲。所有文件都可以立即存取。
在我的 Web 存取策略標籤中,我停用了所有檢查和代理選項。
最奇怪的是 - 我在同一台伺服器上有另一個網站(HTTP),但發佈在不同的 IP 上。網站可以在所有瀏覽器上正常運作。所有 IP 和路由似乎都已正確配置,如果沒有,其他瀏覽器將如何顯示這些網站?
順便說一句,它 100% 不在網站本身上。即使我嘗試從網站開啟單一 HTML 檔案或圖像,Safari 也無法取得它。
重要提示:網站 SSL 憑證資訊正確顯示,這是從這些網站下載的唯一內容。所以我看到了掛鎖圖示、網站訊息,但沒有內容。允許 HTTP 連線後,它也無法透過 HTTP 運作。在某些瀏覽器上透過 HTTP 工作。
重要提示:當省略 TMG 時(透過 VPN,直接引用我的 NLB IP 時),上述網站都可以在所有瀏覽器上存取。
當我們將虛擬伺服器移到新網路上的新主機時,問題就開始了。在舊網路上一切正常。但話又說回來,什麼內部網路配置使得網站只能在某些瀏覽器上無法存取?
更新
我嘗試了很多方法,例如更改 CISCO ASA 防火牆上的 MTU,但沒有幫助。我嘗試使用本教學更新 TMG 上的 SSL 配置:
我結束時測試甚至沒有完成。另外,我收到有關“伺服器配置不一致”的警告。它會停止並顯示“長握手解決方法:握手不超過 0x200 位元組:132”訊息。好吧,我將網域 www.example.com 和 example.com 設定為不同的地址。這是故意的。其中兩個之間有幾個重定向。順便說一句,www 網站有自己的證書,以防有人使用 https 輸入其 URL。但大部分都沒有被使用。是的,我替換了非 www 伺服器的證書,但 www 仍然沒有更新。這是一個錯誤,但它應該只影響 www 網站。但行為不端的是https://example.com, 不是https://www.example.com。
怎麼了?因為上次它運作良好,所以我在不同的主機上擁有相同的 TMG 虛擬機器。我的網站位於不同的(較舊的)IIS 伺服器上。我有不同的外部 IP,並且沒有 DMZ。而且憑證不同,較舊,金鑰為 128 位元而不是 256。當我們將所有網站移至新機器後,就發生了這種情況。它們適用於 Safari、Midori 和 Dolphin 之外的任何瀏覽器。
更新
我透過 VPN、ASA 連接到內部網路。如果我將網站網域 IP 直接設定為內部 NLB 位址 - 它就可以工作。如果我設定為 DMZ IP - 則不會。當然,對於外部 IP - 則不然。當然 - 所有 3 個路徑在大多數瀏覽器上都能完美工作,只有 Safari、Midori 和 Dolphin 受到影響。
順便說一句,同樣的 CISCO ASA 將我的網路請求路由到公共網路。
BTW2:來自同一 IIS->NLB->TMG->DMZ->ASA 的純 HTTP 網站(無憑證) - 可與 Safari 一起使用,沒有延遲或其他問題。我唯一沒有測試過的是刪除憑證並僅設定 HTTP 存取。這是一個製作網站,如果我願意的話,我應該在晚上並且非常匆忙地完成。
答案1
這聽起來像是一個基本的網路連線問題。這些症狀通常是由於 MTU 配置錯誤而發生的。或者,TGM 可能會扔掉一些東西,但我對此了解不夠,無法說。
我建議首先使用降低的 MTU 進行測試 - 將伺服器或客戶端或兩者都設為 1200 的 MTU 將是一個不錯的起點。或者,您可以對連線進行wireshark,以查看正在協商哪種類型的TCP 參數並從那裡開始。
[編輯] 在 Windows 上更改 MTU 稍微取決於您運行的 Windows 版本,因為沒有指定,我只是提供了通用的 Google 結果: