一、为何做此实验,写此文
公司有一台OA服务器,使用的是厂商集成安装模式(windows+php+apache+mysql),并对外开放WEB访问。此种情况下,面临几个问题:
- WEB客户端与OA服务器交互没有安全性可言。
- 公司不愿意花钱去购置如硬件的SSL-VPN的解决方案。
- 对于IT管理人员,不愿意改变现有的系统和网络架构,从而导致管理的更加复杂化。如此只有从管理、软件购置(如升级OA能有SSL模块的支持)、硬件购置等成本的最小化来着手了。
因为一直学习和研究ISA,突然想到ISA 2004开始就支持SSL-TO-HTTP的发布方式,而正好,公司也有一台ISA机器被我在使用,何不用来测试下?主意打定后,就开始了测试之旅,当然,还是挺顺利的完成了,并把一些重要的步骤写下来,供与各位交流。
二、要了解的知识点
实现此解决方案要首先了解一些知识点,尤其是需要用到CA方面技术知识,而这此又相对复杂点,还请各位提前备些此方面的能力。在这篇实验文章里,并不会过多的讲解。
- ISA SERVER 发布WEB服务器
- SSL 相关 (包括ssl-to-ssl隧道模式、桥接模式)
- CA相关(工作组下,独立根CA的建立)
- WEB服务及端口相关
- PING NETSTAT等命令的使用
注:在此实验中,我使用的是WINDOWS 2003企业版自带的证书服务来做的证书,实际生产环境中,建议与数字证书服务机构洽购。且并不会在实验中过多的讲述微软证书服务实现的流程。
三、目的
目的很简单,利用现有的网络架构,达到在节省成本的同时,实现外部安全访问公司内部的OA服务器。
四、实现及原理简要分析
ISA SERVER 2004及2006主机充当代理服务器(代理内部用户上网,此境中主要是让OA服务器的网关为ISA的内部IP)、防火墙(HTTP筛选)、证书服务等角色。
ISA SERVER主机安装有两块网卡,其中一块为“外网卡”,为公网IP。一块为“内网卡”,为私有IP。
Internet上的web客户端访问OA时,需输入https://dnsdomainname,此时web客户端与ISA SERVER的外网卡之间的网络为ssl隧道访问,而ISA SERVER与放置在内部网络(或DMZ区)的OA服务器之间的通讯则为“明文传输”。从而达到实现在INTERNET上数据传输安全的目的。
详细的可参考以下图示:

四、环境与拓朴
- windows server 2003 with sp2(企业版)+isa server 2006标准版+证书服务(windows 自带)
- OA服务器(通达OA测试版)运行windows server 2003 with sp2
- 工作组环境,CA为独立根CA类型
- IP及角色等详见如下图示:
五、安装及测试步骤
(一)证书服务的安装及申请(如果使用专业的公网CA。这一步骤可以省去)
1、证书服务的安装:
此部分只简单讲述,欲了解更加详细的内容请自行查找互联网。
A、在isa server主机上安装证书服务(前提ISA上安装了IIS6.0)
控制面板——添加删除程序——WINDOWS组件——选定证书服务

注意:在选定后会提示,点是继续。
B、由于是在工作组环境中,没有AD,在接下出现的"CA类型"选择“独立根CA”,并继续。同时输入CA的公用名称,自已可以随间填写(此是内部测试,如果用于公网上所有用户的访问时,就要做好详细的规划及找好CA机构)


C、之后按下一步,完成证书服务的安装。此时在ISA这台机器上就会新建一个站点默认访问地址为http://192.168.1.2/certsrv.但由于本机已有其它虚拟目录占用80端口,故改为8000,现在访问地址为:http://192.168.1.2:8000/certsrv
2、为ISA SERVER本机与CA交互申请证书
A、在ISA SERVER机器上(证书服务也装在本机),打开IE,输入:http://192.168.1.2:8000/certsrv

选择“申请一个证书”,进入下一个窗口,如下图:

这里有几个选项很重要:
a、姓名:一定要填写上你要使用的域名,这里填上ssl.rickyfang.net,也就是OA服务器对外的域名。
b、需要的证书类型:选择“服务器身份验证证书”
在"标记密钥为可导出"前面打上对勾
在“将证书保存在本地计算存储中”打上对勾
B、然后提示证书申请成功,注意此时的申请ID为3,因为之前为了配合实验截图,我又新做了一遍。故可能在接下来的截图中会出现ID为2的证书申请。
OK,打开管理工具——证书颁发机构——挂起的证书。可以看到刚才申请的ID为3的证书申请。选定——右键——所有任务——颁发。这时,便可在同一窗口的颁发的证书里看到刚才操作的结果。



3、在ISA主机上(再次强调,证书服务和证书申请都是在同一台机器上)再次输入http://192.168.1.2:8000/certsrv
在出现的首页,点选"查看挂起的证书申请的状态",在出现的下一个“证书已颁发”页面中,点选“安装此证书”。 就可以把证书安装在此主机中,这样,就为外部用户输入域名https://ssl.rickyfang.net进行验证提供了保证。
接下来,继续重头戏,就是在ISA上发布内部站点http://192.168.1.28为外部通过https://ssl.rickyfang.net能访问。
在此主要分为三大部分,一是建立ISA主机与内部WEB服务器HTTP连接;二是建立ISA主机与WEB客户端之间的SSL连接(https)包含建立SSLWEB侦听器;三是验证发布是否生效、成功。
一、在ISA本地主机上新建发布规则(建立ISA主机与内部WEB服务器HTTP连接)
要点:
A、新建的发布规则,仍是按照"网站发布规则"的步骤来建立的,这并没有什么新的东西。
B、在ISA 2006版本中,发布的内部站点,需以内部域名的方式显示出来,并不能只在同一页面的下方填写IP地址或是计算机名字。为了更好的让外部访问ssl.rickyfang.net的流量经由ISA转发至内部的被发布的WEB站长点,故此,我在ISA本地主机上新建一个HOST记录:notepad c:\WINDOWS\system32\drivers\etc\hosts 填入192.168.1.28 ssl.rickyfang.net。
1、打开ISA 2006本地主机,ISA管理控制台窗口,找到计算机名,展开,右键点“防火墙规则”,新建“网站发布规则”。
2、在弹出的窗口“新建WEB发布规则向导”,WEB发布规则名称下框中输入名称:pub ssl-to-http。(名称可以自定义)
3、下一步,在“发布类型”窗口中,选择“发布单个网站或负载平衡器”。
4、下一步,在“服务器连接安全”窗口中,选择“使用不安全的连接连接发布的WEB服务器或服务器场”。
这一步要说明:既然要使用SSL连接,为何在此步骤中不选择第一项呢?因此,提示各位可以仔细看下这个选择下面的说明—这步骤是要建立ISA主机与要发布的内部WEB服务器的之间的连接。而不是INTERNET上的WEB客户端与ISA主机之间的连接。当然要使用HTTP连接啦,请大家结合这次实验目的来理解这一步。 
5、下一步,在“内部发布详细”窗口中,在内部站点名称后填上“ssl.rickyfang.net”(如果内部有DNS,并有A记录指向内部WEB站点。这里可以改变的),并勾选“使用计算机名称或IP连接到发布的服务器”。并填入内部的WEB服务器IP地址为192.168.1.28。(当然也可以不填写,还记得之前的HOSTS文件添加的A记录吗?在这里用上啦)
6、下一步,在“内部发布详细信息”窗口,在“路径(可选)”框里,输入/*。
7、下一步,在“公共名称细节”窗口中,在“接受请求”后,选择“在此域名(在以下输入)”,并在“公用名称”后框中输入:ssl.rickyfang.net,(注意,这此输入的是需要INTERNET上访问的网站域名,一定要搞清楚和之前发布时输入的域名用处之别)
。在“路径(可选)”后面输入"/*"。
二、建立ISA主机与WEB客户端之间的SSL连接(https)
8、下一步,弹出“选择WEB侦听器”窗口,此时并没有可以选择的侦听器,而且也不能选择。(接下来的操作也是重点,是实现SSL必不可少的步骤),在此点“新建”。在出现的新窗口中,输入侦听器名称:ssl-to-http。
9、下一步,出现“客户端连接安全设置”窗口,选择“需要与客户端建立SSL安全连接”。(哈哈,我太喜欢ISA 2006了,太为我们着想啦,这不,刚才还在抱怨怎么实现SSL连接的朋友,这下就明白了,此处建立的是INTERNET上的WEB客户端与ISA主机建立SSL连接的选项。也就是通过在IE浏览器里输入https://后的加密访问)。
之前也提到,如果你在一些数字证书颁发机构申请了证书。就可以免去很多麻烦,不过那是要缴费的。而且至于如何做,他们也会指导去做的。
10、下一步,在“WEB侦听器IP地址”窗口中,选择“外部”以使ISA主机侦听来自于INTERNET上的传入WEB请求。
11、下一步,出现“侦听器SSL证书”窗口,选择“对此WEB侦听器使用单一证书”,并点击“选择证书”。在出现的窗口中,选择
在之前建立的证书(第一篇中建立的),呵呵,这里,有两个,其中一个是我第一次成功时的。第二个是为了写这篇文章又建立一个的。这次,咱们选择第二个(之前的证书申请ID为3)。并点“选择”。
12、下一步,在“身份验证”窗口,选择"没有身份验证"。下一步,下一步,二次下一步后,出现如下的窗口,便完成了WEB侦听器的建立。
13、下一步,在出现的“身份验证委派”页面。点下一步。在出现的“用户集”页面,选择“所有用户”。然后点完成。完成所有的动作。
三、验证发布的WEB访问
在任一台能上网的机器上,在IE浏览器里输入https://ssl.rickyfang.net。会出现如下的窗口
在上述窗口中,我点了查看证书,可以看到一些提示说是此证书并不是受信任的证书颁发机构颁发的。那是当然的,如果你真正的了解证书相关知识,就知道为何了。当然,如果你选择了受信任机构颁发的,就不会出现这样的问题啦(IE浏览器默认就会不弹出此界面啦。详情见相关知识)。
点“是”后,就能正常访问啦。如下图:
从此,这篇文章就算成功的实现了SSL的发布及访问。下面有几点和各位提一下:
- 由于我这是仅限于公司内部访问,尽管也在公网上提供了服务,但仍采用了微软内置的CA。如果各位真不想这样子麻烦就去一些数字证书机构去花钱申请。这样子就不会出点"是"的提示窗口了。
- 如果你想使用微软内置的CA,但又不想出现提示的窗口,那就把证书下载下来,通过MMC导入此证书。就可以啦。
- 如何验证WEB客户端到ISA主机的SSL,以及ISA主机到内部的WEB服务器的HTTP访问。可以使用netstat -an | find "80" /netstat -an |find "443"就可以验证了。如果,你会使用SNIFFER抓包工具,就更能清楚啦。
