ISA連接非標準443端口的SSL站點問題

ISA 連接非443端口的https站點提示錯誤:
12204 The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests.
p_w_picpath
故障分析:
ISA防火牆同時是網絡防火牆和Web代理服務器。ISA Server的防火牆組件允許它同時執行數據包過濾和應用層狀態識別;而Web代理組件允許它作爲CERN兼容的HTTP 1.1 Web代理服務器。Web代理組件(實際上是ISA Server 2004防火牆內部的Web代理過濾器)可以對HTTP通信進行解碼,執行應用層狀態過濾,然後在轉發給外部的目的Web服務器時重建HTTP通信。
可是,對於在受ISA防火牆保護的網絡中的主機和一臺外部網絡的Web服務器間建立的SSL連接有點不一樣,當內部主機通過ISA防火牆的Web代理組件發起SSL請求時,ISA防火牆可以檢查HTTP頭或者根據訪問規則來執行過濾;但是,當它們之間的SSL連接建立後,由於在它們之間傳輸的數據實行了SSL隧道加密,ISA防火牆將不能再檢查它們之間傳輸的數據。
在內部Web客戶和目的Web服務器之間建立SSL隧道的過程如下所示:
1、內部的Web客戶通過在Web瀏覽器的地址欄中發起一個對目的Web服務器的SSL對象的請求,如
https:URL_Name
2、用戶將把這個請求發送到ISA防火牆的8080端口(默認的Web代理偵聽端口);
CONNECT URL_name:443 HTTP/1.1
3、ISA防火牆連接目的Web服務器的443端口;
4、當連接建立後,ISA防火牆返回數據給Web客戶;
HTTP/1.0 200 connection established
從此時開始,客戶直接和外部的Web服務器通信,而不再經過ISA防火牆的Web代理組件,因此,ISA防火牆不能再對封裝在SSL隧道中的數據和命令執行應用層狀態識別。
當外部Web服務器使用標準的SSL端口TCP 443時,一切都是很正常的,但是,有時候你的Web代理客戶也會使用其他的端口來訪問SSLWeb站點,例如,Web代理客戶可能會使用端口4433替代443來訪問銀行的Web站點,這樣會導致SNAT客戶和防火牆客戶產生錯誤,因爲ISA防火牆默認會轉發SNAT客戶和防火牆客戶的HTTP連接到Web代理過濾器,客戶可能會看見空白頁或者指出該頁面不能訪問的錯誤頁。
解決方法:
比如增加 9443端口:
The following Visual Basic Scripting Edition script (VBScript) is an example of how to add ports to the tunnel port range:
set isa=CreateObject("FPC.Root")
set tprange=isa.GetContainingArray.ArrayPolicy.WebProxy.TunnelPortRanges    
set tmp=tprange.AddRange("SSL 9443", 9443, 9443)    
tprange.Save    
"A restart of the Microsoft Firewall Service is required after you run the script"
運行完腳本需要重新啓動下Microsoft Firewall Service 。
 
ISA 2004的用另一段代碼,現在應該很少用2004了吧:
To add a tunnel port range with Microsoft Internet Security and Acceleration (ISA) Server 2004, this VBScript script will add port 10000:
Dim root    
Dim tpRanges    
Dim newRange    
Set root = CreateObject("FPC.Root")    
Set tpRanges = root.GetContainingArray.ArrayPolicy.WebProxy.TunnelPortRanges    
set newRange = tpRanges.AddRange("SSL 10000", 10000, 10000)    
tpRanges.Save
    
Note This script does not produce any output if it succeeds. If you run it again, it will produce an error because the range being set already exists.
 
運行完腳本後不會有任何提示,如果你再運行一遍的話可能會有錯誤彈出來。
 
也有其他方法,參考這篇博文:http://jxzhangxm.blog.51cto.com/149444/51482/ ,這篇中的“故障分析”就摘自這裏,^_^。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章