用
ISA
发布安全
Web
站点
到目前为止,我们已经对ISA发布Web站点进行了很多介绍,但还没有涉及到安全Web站点。其实在很多领域,安全Web站点都由于高安全性而受到广泛应用,例如在电子商务,电子邮件,OA等应用中基本都会使用安全站点来加强对数据的保护。既然安全站点如此重要,今天我们就来讨论一下如何用ISA2006来发布安全Web站点。
用ISA2006发布安全站点并不是一件困难的事,相反,ISA2006为管理员发布安全站点提供了灵活且强大的技术支持。以往防火墙在发布安全Web站点时,处理方法并不令人满意。由于安全Web站点对HTTP数据进行了加密,这使得防火墙无法对数据内容进行分析,当然也没办法判断这些数据是否不利于安全。防火墙遇到这种情况,往往就采用“隧道”模式,如下图所示,“隧道”模式让外网的访问请求直接通过防火墙抵达内网的安全站点,防火墙对访问请求直接放行,透明通过。这种方法自然无法让管理员满意,买个防火墙发布网站不就是希望利用防火墙过滤有害数据嘛,现在防火墙让加密数据透明通过,那防火墙还有什么用呢,不如直接把安全网站放到外网好了。
![](http://blog.51cto.com/attachment/200807/200807161216174406671.jpg?x-oss-process=image/resize,w_1400/format,webp)
ISA2006对发布安全站点做了很好的改进,ISA2006在发布安全站点时可以采用“桥接”模式,如下图所示,这种模式可以让ISA对外网的发来的加密数据先进行解密,然后过滤检查,发来的数据被证实没问题了才会被重新加密送往内网的Web服务器。显然,桥接模式比隧道模式更能发挥防火墙的功效,对网站的安全更为有利。
![](http://blog.51cto.com/attachment/200807/200807161216174431734.jpg?x-oss-process=image/resize,w_1400/format,webp)
ISA并不是随随便便就能启用桥接模式,发布安全Web站点和发布Web站点有所不同,区别就在于安全Web服务器必须提供证书用于数据加密。在桥接模式下,ISA要对外网发来的加密的数据进行解密,这就要求ISA必须拥有证书及配套私钥。例如ISA发布的安全站点是perth.contoso.com,那ISA必须拥有名为perth.contoso.com的证书以及配套的私钥,如果没有证书,ISA无法对外网的访问者证明自己就是他们要访问的perth.contoso.com,如果没有私钥,ISA则无法对加密数据进行解密。因此,ISA启用桥接模式发布安全网站的关键就在于如何让ISA拥有证书以及私钥,我们解决这个问题的方法是让安全Web服务器导出证书及私钥,然后ISA再进行导入操作。
实验拓扑如下图所示,Perth是内网要发布的安全站点,Denver是内网的域控制器兼CA服务器,Beijing是ISA2006服务器,我们看看如何用ISA发布安全Web站点。
![](http://blog.51cto.com/attachment/200807/200807161216174442031.jpg?x-oss-process=image/resize,w_1400/format,webp)
一
创建
CA
服务器
既然Perth上的Web站点是安全Web站点,那Perth的站点肯定要有证书,谁来发这个证书呢?CA!我们既可以选择去国际CA公司申请证书,也可以自己创建CA服务器来颁发证书。平时经常有朋友问这个问题:到底应该选择去国际CA申请证书还是自己创建一个CA来颁发呢?这个问题我觉得应该根据被发布安全站点的用途来决定,如果你发布的安全站点针对的群体是互联网上的用户,那我认为还是应该去国际CA申请证书,这样申请到的证书自动会被所有的用户所信任,使用起来很方便。否则你自己创建CA颁发证书,但互联网上其他用户都不信任,每个用户都要手工信任你创建的CA,这样就很麻烦了。当然,去国际CA申请是要付出代价的,一年估计要1W多RMB,这银子花得很心疼的。如果发布的安全站点主要是给公司员工使用的,那就可以自己创建CA来颁发证书了,因为公司员工人数有限,即使手工信CA任也不用花太多时间。这时自己创建的CA就能体现出使用方便,节省成本的优点了。
回到本例中,我们准备在Denver上创建一个CA服务器,用以在域内为计算机颁发证书。在Denver上依次点击 开始-设置-控制面板-添加或删除程序-添加/删除Windows组件,如下图所示,勾选“证书服务”,这时会弹出对话框提示你安装证书服务后不能改变计算机名称以及身份,选择“是“按钮。
![](http://blog.51cto.com/attachment/200807/200807161216174455875.jpg?x-oss-process=image/resize,w_1400/format,webp)
CA类型设置为企业根,这样可以更好地利用域的管理优势。
![](http://blog.51cto.com/attachment/200807/200807161216174464937.jpg?x-oss-process=image/resize,w_1400/format,webp)
CA命名为TESTCA。
![](http://blog.51cto.com/attachment/200807/200807161216174472953.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书数据库的存储路径取默认值即可。
![](http://blog.51cto.com/attachment/200807/200807161216174480437.jpg?x-oss-process=image/resize,w_1400/format,webp)
安装程序提示需要重启IIS服务,在插入Win2003的安装光盘后,如下图所示,安装结束。
![](http://blog.51cto.com/attachment/200807/200807161216174487593.jpg?x-oss-process=image/resize,w_1400/format,webp)
创建完CA服务器后,这个服务器必须得到其他计算机的认可,域内的计算机如本例中的Perth和Beijing都不用担心,组策略会告诉他们TESTCA是个可以信任的CA服务器。如果你觉得组策略生效时间太长,还可以运行 Gpupdate/force来加快组策略生效时间。域外的计算机如本例中的Istanbul就需要手工信任这个CA服务器了,具体操作方法如下。我们先把Denver的网站用ISA发布出来,然后在Istanbul上访问[url]http://denver.contoso.com/certsrv[/url],如下图所示,网站要求进行身份验证,我们输入域管理员的用户名和口令。
![](http://blog.51cto.com/attachment/200807/200807161216174498437.jpg?x-oss-process=image/resize,w_1400/format,webp)
通过身份验证后我们可以通过网站访问CA服务器了,如下图所示,选择“下载一个CA证书,证书链或CRL”。
![](http://blog.51cto.com/attachment/200807/200807161216174507031.jpg?x-oss-process=image/resize,w_1400/format,webp)
如下图所示,选择“下载CA证书”,网站弹出文件下载的对话框,选择“保存”。
![](http://blog.51cto.com/attachment/200807/200807161216174516593.jpg?x-oss-process=image/resize,w_1400/format,webp)
把下载的CA根证书保存到C:\certnew.cert。
![](http://blog.51cto.com/attachment/200807/200807161216174528921.jpg?x-oss-process=image/resize,w_1400/format,webp)
有了CA根证书之后,我们要把它手工导入被信任的根证书颁发机构中。在Istanbul上运行mmc,如下图所示,在mmc控制台中选择“添加删除管理单元”。
![](http://blog.51cto.com/attachment/200807/200807161216174537515.jpg?x-oss-process=image/resize,w_1400/format,webp)
如下图所示,点击“添加”,选择添加“证书”管理单元。
![](http://blog.51cto.com/attachment/200807/200807161216174547765.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书管理单元负责对计算机账号管理证书。
![](http://blog.51cto.com/attachment/200807/200807161216174602437.jpg?x-oss-process=image/resize,w_1400/format,webp)
在新添加的证书管理单元中定位到“受信任的根证书颁发机构-证书”,如下图所示,在所有任务中选择“导入”。
![](http://blog.51cto.com/attachment/200807/200807161216174609796.jpg?x-oss-process=image/resize,w_1400/format,webp)
启动证书导入向导。
![](http://blog.51cto.com/attachment/200807/200807161216174624125.jpg?x-oss-process=image/resize,w_1400/format,webp)
将CA根证书文件导入,如下图所示。
![](http://blog.51cto.com/attachment/200807/200807161216174635000.jpg?x-oss-process=image/resize,w_1400/format,webp)
选择证书的存储区域。
![](http://blog.51cto.com/attachment/200807/200807161216174643015.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书导入后,如下图所示,TESTCA已经成了被Istanbul信任的根证书颁发机构。
![](http://blog.51cto.com/attachment/200807/200807161216174650546.jpg?x-oss-process=image/resize,w_1400/format,webp)
至此,我们完成了CA服务器的创建以及对CA服务器的信任,切记,所有访问安全
Web
站点的计算机都要信任证书颁发机构。
二
为安全
Web
站点申请证书
创建了CA服务器之后,我们就可以为Perth的Web站点申请证书了。在Perth的IIS管理器中查看默认站点的属性,如下图所示,切换到站点属性的“目录安全性”标签,点击“服务器证书”。
![](http://blog.51cto.com/attachment/200807/200807161216174699640.jpg?x-oss-process=image/resize,w_1400/format,webp)
弹出服务器证书申请向导。
![](http://blog.51cto.com/attachment/200807/200807161216174706781.jpg?x-oss-process=image/resize,w_1400/format,webp)
选择“新建证书”。
![](http://blog.51cto.com/attachment/200807/200807161216174715796.jpg?x-oss-process=image/resize,w_1400/format,webp)
由于之前创建的CA类型是企业根,因此我们可以直接在线申请证书。
![](http://blog.51cto.com/attachment/200807/200807161216174724031.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书的名称和加密位数取默认值即可。
![](http://blog.51cto.com/attachment/200807/200807161216174732171.jpg?x-oss-process=image/resize,w_1400/format,webp)
单位和部门参数也不重要。
![](http://blog.51cto.com/attachment/200807/200807161216174740703.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书的公用名称至关重要,公用名称一定要和外网用户访问此安全网站时所使用的域名完全匹配。如果不匹配,安全Web站点将发布失败。
![](http://blog.51cto.com/attachment/200807/200807161216174749562.jpg?x-oss-process=image/resize,w_1400/format,webp)
填写证书的地理信息。
![](http://blog.51cto.com/attachment/200807/200807161216174756984.jpg?x-oss-process=image/resize,w_1400/format,webp)
安全Web站点使用默认的443端口。
![](http://blog.51cto.com/attachment/200807/200807161216174764921.jpg?x-oss-process=image/resize,w_1400/format,webp)
从Active Directory中选择所使用的证书颁发机构。
![](http://blog.51cto.com/attachment/200807/200807161216174773937.jpg?x-oss-process=image/resize,w_1400/format,webp)
证书申请完成,CA已经给Perth的Web站点颁发了证书,现在Perth已经是一个安全Web站点了。
![](http://blog.51cto.com/attachment/200807/200807161216174781562.jpg?x-oss-process=image/resize,w_1400/format,webp)
三
导出证书
接下来我们要在Perth上把申请到的证书导出给文件,然后再让ISA服务器导入。在Perth的IIS管理器中切换到默认Web站点的“目录安全性”标签,如下图所示,点击“查看证书”。
![](http://blog.51cto.com/attachment/200807/200807161216174793156.jpg?x-oss-process=image/resize,w_1400/format,webp)
切换到证书的“详细信息”属性,如下图所示,点击“复制到文件”。
![](http://blog.51cto.com/attachment/200807/200807161216174800125.jpg?x-oss-process=image/resize,w_1400/format,webp)
出现证书导出向导。
![](http://blog.51cto.com/attachment/200807/200807161216174807593.jpg?x-oss-process=image/resize,w_1400/format,webp)
一定要连同私钥一起导出。
![](http://blog.51cto.com/attachment/200807/200807161216174815859.jpg?x-oss-process=image/resize,w_1400/format,webp)
导出为pfx格式文件。
![](http://blog.51cto.com/attachment/200807/200807161216174823328.jpg?x-oss-process=image/resize,w_1400/format,webp)
输入私钥保护密码。
![](http://blog.51cto.com/attachment/200807/200807161216174832875.jpg?x-oss-process=image/resize,w_1400/format,webp)
把证书及私钥导出为c:\perth.pfx。
![](http://blog.51cto.com/attachment/200807/200807161216174840531.jpg?x-oss-process=image/resize,w_1400/format,webp)
四
导入证书
我们把perth导出的证书文件复制到ISA服务器上,然后ISA就可以进行证书的导入操作了。参考在Istanbul上用mmc创建证书管理单元的步骤,在ISA上也创建一个证书管理单元管理计算机账号的证书,如下图所示,右键单击“个人”容器,在所有任务中选择“导入”。
![](http://blog.51cto.com/attachment/200807/200807161216174859718.jpg?x-oss-process=image/resize,w_1400/format,webp)
出现证书导入向导。
![](http://blog.51cto.com/attachment/200807/200807161216174866203.jpg?x-oss-process=image/resize,w_1400/format,webp)
选择导入perth.pfx文件。
![](http://blog.51cto.com/attachment/200807/200807161216174872796.jpg?x-oss-process=image/resize,w_1400/format,webp)
输入pfx文件中的私钥保护口令。
![](http://blog.51cto.com/attachment/200807/200807161216174880359.jpg?x-oss-process=image/resize,w_1400/format,webp)
将导入的证书放到个人存储中。
![](http://blog.51cto.com/attachment/200807/200807161216174887218.jpg?x-oss-process=image/resize,w_1400/format,webp)
如下图所示,导入成功,ISA服务器上有了perth.contoso.com的证书以及相关私钥。
![](http://blog.51cto.com/attachment/200807/200807161216174894890.jpg?x-oss-process=image/resize,w_1400/format,webp)
五
创建安全
Web
站点发布规则
万事俱备,只欠东风。我们现在可以在ISA服务器上发布Perth上的安全Web站点了。如下图所示,在ISA服务器管理器中选择新建“网站发布规则”。
![](http://blog.51cto.com/attachment/200807/200807161216174905812.jpg?x-oss-process=image/resize,w_1400/format,webp)
为发布规则取名。
![](http://blog.51cto.com/attachment/200807/200807161216174914171.jpg?x-oss-process=image/resize,w_1400/format,webp)
访问请求满足规则要求ISA则允许访问。
![](http://blog.51cto.com/attachment/200807/200807161216174921953.jpg?x-oss-process=image/resize,w_1400/format,webp)
发布类型为发布单个网站。
![](http://blog.51cto.com/attachment/200807/200807161216174930093.jpg?x-oss-process=image/resize,w_1400/format,webp)
使用SSL加密ISA与安全Web站点之间的数据。
![](http://blog.51cto.com/attachment/200807/200807161216174938453.jpg?x-oss-process=image/resize,w_1400/format,webp)
内部站点的名称为perth.contoso.com,注意,内部站点的名称应该和安全站点证书中的公用名称完全一致,否则会导致发布失败。
![](http://blog.51cto.com/attachment/200807/200807161216174951546.jpg?x-oss-process=image/resize,w_1400/format,webp)
从根目录开始发布整个网站。
![](http://blog.51cto.com/attachment/200807/200807161216174962937.jpg?x-oss-process=image/resize,w_1400/format,webp)
安全站点的公共名称也应该和证书中的公用名称完全一致。
![](http://blog.51cto.com/attachment/200807/200807161216174970531.jpg?x-oss-process=image/resize,w_1400/format,webp)
由于没有监听443端口的侦听器,因此我们选择“新建”。
![](http://blog.51cto.com/attachment/200807/200807161216174978640.jpg?x-oss-process=image/resize,w_1400/format,webp)
出现Web侦听器创建向导,我们为新创建的Web侦听器取个名字。
![](http://blog.51cto.com/attachment/200807/200807161216175332234.jpg?x-oss-process=image/resize,w_1400/format,webp)
侦听器与外网访问者之间的数据需要用SSL加密。
![](http://blog.51cto.com/attachment/200807/200807161216175339812.jpg?x-oss-process=image/resize,w_1400/format,webp)
侦听器对外网进行监听。
![](http://blog.51cto.com/attachment/200807/200807161216175347687.jpg?x-oss-process=image/resize,w_1400/format,webp)
由于侦听器需要对外网访问者的数据进行加密,因此侦听器需要提供证书,如下图所示,点击“选择证书”。
![](http://blog.51cto.com/attachment/200807/200807161216175355468.jpg?x-oss-process=image/resize,w_1400/format,webp)
在侦听器中选择使用导入的perth.contoso.com证书,这样外网访问者才会相信ISA服务器就是他们要访问的perth.contoso.com。
![](http://blog.51cto.com/attachment/200807/200807161216175364078.jpg?x-oss-process=image/resize,w_1400/format,webp)
侦听器选择证书之后,继续下一步。
![](http://blog.51cto.com/attachment/200807/200807161216175372562.jpg?x-oss-process=image/resize,w_1400/format,webp)
本例中发布的安全Web站点不需要用户进行身份验证,发布其他的安全Web站点就未必不需要身份验证了,例如发布Exchange就需要进行身份验证。
![](http://blog.51cto.com/attachment/200807/200807161216175380296.jpg?x-oss-process=image/resize,w_1400/format,webp)
本例中不需要设置单点登录。
![](http://blog.51cto.com/attachment/200807/200807161216175388484.jpg?x-oss-process=image/resize,w_1400/format,webp)
在发布规则中使用新创建的Web侦听器。
![](http://blog.51cto.com/attachment/200807/200807161216175399453.jpg?x-oss-process=image/resize,w_1400/format,webp)
安全Web站点没有委派ISA对客户端进行身份验证。
![](http://blog.51cto.com/attachment/200807/200807161216175410171.jpg?x-oss-process=image/resize,w_1400/format,webp)
此规则适用于所有用户。
![](http://blog.51cto.com/attachment/200807/200807161216175418875.jpg?x-oss-process=image/resize,w_1400/format,webp)
完成安全Web站点发布规则,呵呵,终于结束了。
![](http://blog.51cto.com/attachment/200807/200807161216175426015.jpg?x-oss-process=image/resize,w_1400/format,webp)
好了,一切都就绪了,我们在Istanbul上测试一下,如下图所示,在Istanbul上访问[url]https://perth.contoso.com[/url],系统弹出对话框提示即将通过安全连接查看网页。
![](http://blog.51cto.com/attachment/200807/200807161216175436359.jpg?x-oss-process=image/resize,w_1400/format,webp)
访问结果正常,OK,发布安全Web站点成功!
![](http://blog.51cto.com/attachment/200807/200807161216175447843.jpg?x-oss-process=image/resize,w_1400/format,webp)
发布安全
Web
站点时问题基本都处在证书上,要么是证书的公用名称写得不对,要么导出证书的格式有问题,要么有些计算机不信任证书颁发机构等等,如果能先理解证书原理,那发布安全
Web
站点时就可以事半功倍了。
本文转自yuelei51CTO博客,原文链接: http://blog.51cto.com/yuelei/88041,如需转载请自行联系原作者