故障现象:
 
出现部分网上银行不能正常上网的现象.比如中国银行福建网上银行,还有一些其他未使用默认SSL端口的网上银行,都提示SSLrequests错误,例如
  • 错误代码: 502 Proxy Error。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. (12204)
 
 
故障分析:
 
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代理过滤器,客户可能会看见空白页或者指出该页面不能访问的错误页。
 
 
故障解决:
 
这个问题就是Web代理过滤器会转发SSL连接到TCP端口443。如果客户想连接其他不使用TCP 443端口的SSL站点,那么连接尝试将会失败。你可以通过扩展SSL隧道端口范围来解决这个问题。为了做到这一点,你需要下载Jim Harrison的脚本,然后运行时输入你想让ISA防火墙Web代理组件使用的SSL隧道端口范围。
执行以下步骤以扩展SSL隧道端口范围:

1、下载isa_tpr.js文件,拷贝到ISA服务器上,http://down.51cto.com/data/215229#,这个我已经下载了,负载本文章的附件里了

2、运行,在第一个对话框上可看到当前状态信息“This is your current Tunnel Port Range list”,点确定
3、此时,NNTP端口显示出来了,点击确定
4、然后,SSL端口显示出来了,点击确定
5、现在复制isa_tpr.js这个文件到C盘根目录,然后打开一个命名提示符窗口,输入以下命令:isa_tpr.js /?
6、添加一个新的 SSL 隧道端口,例如 8848,输入:Cscript isa_tpr.js /add Ext8848 8848
7、此时,你可以看到如下的信息,提示你命令运行成功

另外,你还可以下载Steven Soekrasno编写的.NET程序,ISATpre.zip,然后在ISA上安装即可。

端口添加完成后,记得重启ISA Server服务!


注意:以上的情况都只是通过Web代理过滤器访问HTTP协议的情况,如果你对HTTP协议取消了Web代理过滤器的识别,SNAT客户和防火墙客户通过ISA的HTTP访问将不会转发到Web代理过滤器。此时,你可以通过定义一个使用其他SSL端口的协议和允许访问此协议的出站访问规则来实现客户对外部非标准SSL端口Web站点的访问。