来源:ISA中文站
How to:在ISA Server 2004中发布安全Web服务
内容概要:这篇文章介绍了ISA的安全Web发布的原理及如何发布安全Web服务(HTTPS)。
在Tom的文章“使用ISA防火墙的OWA发布规则来发布OWA站点”中介绍了如何发布OWA站点,其实发布安全Web服务的步骤和原理基本和它一致。在这篇文章中,我给大家介绍一下如何发布安全Web服务。
对于发布安全Web服务,有两种发布模式:隧道和桥接。由于SSL加密了HTTP应用层信息,一般的防火墙是不能对这些数据包执行状态检查的。当采用桥接模式发布时,ISA防火墙会对SSL连接进行状态检查,并阻止攻击者在 SSL 通道中隐藏恶意行为。当客户向安全Web站点发起通信时,ISA防火墙接受客户发送的SSL加密数据包,对它进行解密后检查其中是否存在攻击代码,然后将其重新加密,再将重新加密的数据包转发到发布的内部网络中的安全Web服务器上。而在隧道模式下,当外部的客户访问发布的安全Web服务器时,ISA防火墙不检查SSL连接的内容,也不会对这些内容应用状态检查或过滤。
对于桥接的发布模式,又分为三种桥接模式:
本文中的试验环境如下图所示,ISA 2004防火墙为边缘防火墙,连接Internet和内部网络,并未加入域;内部网络的IP地址范围为10.2.1.0/24,部署了域contoso.com,Denver是域控制器,并且部署了DNS/证书权威/Web服务;Istanbul是位于Internet上的一台主机,用于测试。我将在此试验中,使用加密到客户端和Web服务器的连接的桥接模式来发布Denver上的安全Web站点denver.contoso.com。
各计算机的TCP/IP设置如下,在试验之前已经确认了网络连接工作正常:
ISA防火墙:
External Interface:
Internal Interface:
Denver(Web Server):
Istanbul(Web Server):
在这篇文章中,我将按照以下步骤来实现安全Web站点的发布:
为安全Web站点绑定一个Web服务器证书
为了实现客户和Web站点的SSL连接,我们必须为Web站点请求一个Web服务器证书,并且在Web站点上绑定此证书。
执行以下步骤来为Web站点请求Web服务器证书:
在Denver上打开管理工具下的Internet信息服务管理控制台,在左面板展开Web站点节点,然后右击默认站点,点击属性;
在默认站点属性对话框,点击目录安全性标签,然后点击服务器证书按钮;
在欢迎使用Web服务器证书向导页,点击下一步;
在服务器证书页,选择新建一个证书选项,点击下一步;
在延迟或立即发送请求页,选择将请求立即发送到一个在线的证书权威选项,然后点击下一步;
在名字和安全设置页,接受默认设置,然后点击下一步;
在组织信息页,在组织和组织单元文本框中分别输入你组织名和组织单元名,点击下一步;
在站点的公共名称页,输入站点的FQDN,这个名称将被内部网络和外部网络中的用户用于访问这个站点。在此例中,我输入denver.contoso.com。这个地方请一定要注意,如果输入有误,那么连接安全Web站点时会发生错误,点击下一步;
在位置信息页,输入你的国家/地区、州/省和城市/位置,点击下一步;
在SSL端口页,接受默认的值443,点击下一步;
在选择一个证书权威页,接受默认的选择,然后点击下一步;
在提交证书请求页检查设置,然后点击下一步;
最后,在正在完成Web服务器证书向导页,点击完成。
现在,查看证书按钮已经可用,这表明此Web站点已经拥有了一个Web服务器证书。
你可以查看证书的状态,看是否正常。
配置Web站点强制使用SSL加密
现在我们可以配置Web站点使用SSL加密了,同样在目录安全性标签,点击查看证书按钮下的编辑按钮;
在弹出的安全通信对话框上,勾选要求加密通道(SSL)和要求128位加密,然后两次点击确定,回到Internet信息服务管理控制台;
现在我们在Denver上打开一个浏览器窗口,访问本机的Web服务,首先在地址栏输入http://localhost,注意看,服务器提示需要使用SSL进行访问;
于是我们使用https://localhost进行访问,弹出了警告对话框,提示证书的名字和所访问的站点名字不一致,因为我们是使用名字localhost来访问,而申请的证书名字是denver.contoso.com,点击是;
访问Web服务成功,注意看窗口右下角的小锁图标,这表明访问是通过SSL加密来进行的;
导出安全Web站点的Web服务器证书(包含站点的私钥)
在使用桥接模式发布安全Web服务时,ISA防火墙模拟Web服务器和客户建立SSL连接,因此ISA防火墙需要将Web服务器的证书绑定在Web侦听器上。在你导出证书时,必须导出Web站点的私钥,否则你将不能绑定此证书到ISA防火墙的Web侦听器上。
还是在默认站点属性的目录安全性标签,点击查看证书,
然后在证书的细节标签,点击复制到文件...按钮;
在弹出的欢迎使用证书导出向导页,点击下一步;
在导出私钥页,选择是,导出私钥,然后点击下一步;
在导出文件格式页,选择个人信息交换PKCS #12 (.PFX)选项,然后勾选如果可能则包含证书路径中的所有证书,取消勾选启用加强保护(需要IE 5.0, NT 4.0 SP4 或更高),点击下一步;
在密码页,输入并确认证书的密码,点击下一步;
在导出文件页,在文件名文本框中输入c:\1,点击下一步;
在正在完成证书导出向导页点击完成;
在证书对话框中点击确定,然后将c:\1.pfx文件复制到ISA防火墙计算机上。
导入安全Web站点的证书到ISA防火墙计算机中
现在我们需要将Web服务器证书导入到ISA防火墙中,运行mmc,然后在文件菜单中点击添加/删除管理单元,然后在添加/删除管理单元对话框点击添加按钮,选择证书,点击添加,在证书管理单元对话框,选择计算机账户,然后在选择计算机页,选择本地计算机,依次点击完成、关闭、确定完成添加管理单元的操作。
右击左面板的个人节点,指向所有任务然后点击导入;
在欢迎使用证书导入向导页,点击下一步;
在要导入的文件页,点击浏览按钮,定位到复制过来的证书文件,然后点击下一步;
在密码页,输入证书文件的密码。不要勾选标志此密钥为可导出的,这样可以保证其他人不能再次将密钥导出。点击下一步;
在证书存储页,接受默认的将所有的证书放入个人存储目录,点击下一步;
最后在正在完成证书导入向导页,点击完成;
此时你就可以在个人目录下看到导入的证书;
另外,此证书的颁发机构必须放置在受信任的根证书颁发机构目录下的证书存储区,这样ISA防火墙才能信任这个计算机证书。你可以在此证书权威的证书申请页面下载CA证书或者使用上面的Web服务器证书,右击受信任的根证书颁发机构目录下的证书,然后选择所有任务下的导入,使用和上面相同的办法来导入证书,将证书保存在此目录下即可
在ISA防火墙上发布安全Web站点
现在我们可以在ISA防火墙上发布此安全Web站点了,不过在此之前,你需要正确的部署DNS解析服务。ISA防火墙使用Denver作为DNS解析服务器,可以正确的解析denver.contoso.com,不过对于安全Web发布,建议你通过在hosts文件中添加对应解析项来做DNS解析;
我已经在hosts文件中正确的添加了denver.contoso.com的DNS解析项;
打开ISA防火墙管理控制台,右击防火墙策略,指向新建,选择安全Web服务器发布规则,
在欢迎使用SSL Web发布规则向导页,输入规则名,在此我命名为Publish denver.contoso.com,点击下一步;
在发布模式页,选择SSL桥进行桥接模式的发布,点击下一步;
在请选择规则操作页,选择允许,点击下一步;
在桥接模式页,选择加密到客户端和Web服务器的连接,点击下一步;
在请定义要发布的网站页,输入发布的服务器名称或者IP地址。对于这个选项,微软并没有官方的说明。但是根据我的测试,ISA防火墙必须能够通过你输入的信息来正确的连接到要发布的安全Web站点,如果你输入和安全Web站点上绑定的的证书中不一样的域名或者IP地址时,这可能会导致ISA防火墙不能正常的访问此安全Web站点,也最终导致此安全Web发布的失败。所以,我建议你在部署安全Web服务时,对内部和外部网络都使用相同的域名,这样会大大减少错误发生的机率。我在前面已经通过hosts文件做了DNS解析,在此我输入denver.contoso.com,然后点击下一步;
在公共名称细节页,输入我们想要发布的域名denver.contoso.com,点击下一步;
在选择Web侦听器页,点击新建;
在弹出的欢迎使用新建Web侦听器向导页,输入侦听器的名字,在此我命名为Listen 443,点击下一步;
在IP地址页,勾选外部,点击下一步;
在端口指定页,取消勾选启用HTTP,勾选启用SSL,然后点击选择按钮选择证书;
在弹出的选择证书页,选择导入的证书,点击确定;
在端口指定页点击下一步;
在正在完成新建Web侦听器向导页,点击完成;
在选择Web侦听器页,点击下一步;
在用户集页,接受默认的所有用户,点击下一步;
在正在完成新建SSL Web发布规则向导页,点击完成;
最后点击应用按钮保存修改和更新防火墙策略;我们的安全Web发布规则就建立好了
在外部客户上访问进行测试
现在我们可以在外部的客户(Istanbul)上访问进行测试,首先我修改了hosts文件加入了denver.contoso.com的名字解析项,
在浏览器中访问https://denver.contoso.com,在弹出的不受信任的证书警告对话框上点击是,
此时,访问成功,指向浏览器窗口底部的小锁图标,显示为SSL加密(128位),表明是通过SSL加密进行的访问。
我们的试验就成功结束了
-------------------------------
注意:你的web服务器证书中指定的公共名称和你的ISA服务器里的公共名称一定要相同,否则他就会报“错误代码 500 内部服务器错误。目标主要名称不正确。 (-2146893022)。”如此错误!