发布
Exchange
的
RPC
以及
RPC Over HTTPS
在前几篇博文中,我们介绍了如何使用OWA,SMTP/POP3来发布Exchange服务器,今天我们介绍如何利用RPC或RPC Over HTTPS来发布Exchange,这也是Exchange发布系列的最后一篇博文,OWA,SMTP/POP3,RPC,RPC Over HTTPS已经涵盖了目前发布Exchange所使用的全部技术。
实验拓扑和以前一样,Denver是域控制器,CA服务器,DNS服务器,Exchange服务器,Beijing是ISA2006服务器,Istanbul是外网测试客户机。
一
利用
RPC
发布
Exchange
服务器
以前我们在Exchange系列博文中([url]http://yuelei.blog.51cto.com/202879/d-3[/url])曾经介绍过,Exchange的最佳客户端是使用RPC协议的Outlook,Outlook是微软为Exchange量身定做的客户端软件,可以发挥出Exchange的所有功能,如果从性能角度考虑,Outlook应该是Exchange客户端的首选。
Outlook这么好,为什么以前大家经常用OWA访问呢?一是OWA使用起来相对简单,二是Outlook使用的RPC协议对防火墙是个很大的考验.。RPC的特点是什么?我们在Exchange系列博文中曾经分析过,基于RPC的服务端口并不固定,每次服务启动时把自己的端口号以及UUID注册到135端口的终点映射器上。客户端要访问RPC服务,首先要连接到RPC服务器的135端口,向终点映射器提交要访问的服务的UUID,根据UUID查询这个服务本次启动对应的端口号是多少。这么折腾一番后,客户端才明白自已要访问的服务在哪个端口等着自己,这时才赶紧去连接那个端口。
RPC的这个特性如果用在局域网内,客户机和服务器能直接访问到,本来也算不了什么。问题是如果客户端和服务器之间还隔了一道防火墙,那防火墙就很头疼了,为什么?你想啊,客户端访问RPC服务器的端口号不是固定的,防火墙怎么开放端口呢?如果开放RPC有可能使用的全部端口,那就要把1024以上的端口都打开,那防火墙就成筛子了。如果只开放固定端口,那就要想办法让RPC服务器的管理员配合自己,把RPC的服务端口限定在一个范围内。但是这么做一方面比较麻烦,另一方面需要牺牲RPC的灵活的特性,并不是好的解决方案。因此如果你是防火墙,你是否也会头疼呢?这个问题尤其是对硬件防火墙来说是很难解决的,但是!但是!ISA已经彻底解决了这个问题,确切地说,ISA2004就已经很完美地解决了这个问题。
ISA解决RPC发布的问题其实很简单,ISA能够听懂RPC客户端和RPC服务器之间的会话内容,ISA根据会话内容可以判断出RPC客户端要访问的服务端口号是多少,当RPC客户端通过ISA访问RPC服务时,ISA会动态地,临时地开放相关端口,允许RPC客户端访问进去。当RPC客户端访问结束后,端口会自动关闭。你看,这个解决方案如何,ISA号称是应用层防火墙,和它对RPC的完美支持也是有关系的。ISA对RPC的支持可以通过下图来说明。
说了这么半天,无非是和大家介绍一下RPC的原理,希望大家理解ISA发布RPC服务器从操作上看很简单,但实际上对防火墙的过滤器有很高的技术要求。好,让我们通过实例来看看如何发布Exchange的RPC服务。如下图所示,在ISA服务器上选择新建“邮件服务器发布规则”。
为发布规则取个名字。
访问类型属于客户端访问RPC服务器。
用ISA发布Exchange服务器上的RPC服务。
填写RPC服务器的IP地址。
侦听外部网络。
完成RPC服务器的发布。这条发布规则看起来似乎只是把Exchange服务器的RPC服务发布出来了,其实Exchange服务器上所有基于RPC的服务现在都可以访问了。
在外网的Istanbul上测试一下,启动Outlook 2003,如下图所示,选择“下一步”。
Outlook询问是否需要升级电子邮件账号,选择“不升级”,准备创建一个Outlook配置文件。
选择配置一个电子邮件账号。
后台邮件服务器的类型是Exchange服务器。
Exchange服务器的域名是denver.contoso.com,不使用缓存模式,要访问的邮箱是administrator。
终于完成了Outlook的配置文件。
创建完配置文件后,Outlook登录进入了管理员邮箱,如下图所示,这说明发布Exchange的RPC服务成功了。
二
利用
RPC Over HTTPS
发布
Exchange
服务器
RPC发布成功之后,我们就要来考虑一下RPC Over HTTPS了,RPC Over HTTPS我们在Exchange系列博文中已经介绍过了,它主要就是考虑到电信部门可能会在公网上封锁RPC协议,因此把RPC协议封装成HTTP或HTTPS格式,这样就可以躲过电信的封杀,等封装后的数据包到达RPC服务器后,由RPC服务器再进行解封装操作,这样就借助HTTP的伪装完成了RPC数据的传递。
发布RPC Over HTTPS并不复杂,其实就是把Exchange服务器上的一个RPC虚拟目录发布出来。麻烦的是要搭建RPC Over HTTPS的环境,做这个实验要有点耐心,我们慢慢来吧。
1)
安装
”HTTP
代理上的
RPC”
首先我们需要让Exchange服务器在收到封装成HTTP格式的RPC数据包后,具有解封装能力,这个功能可以通过安装一个组件“HTTP代理上的RPC”来完成。组件的安装方式是,在Exchange服务器上依次点击 开始-设置-控制面板-添加或删除程序-添加/删除Windows组件,如下图所示,选择“网络服务”,点击“详细信息”。
在网络服务的子组件中选择“HTTP代理上的RPC”,如下图所示。
安装完组件后,检查IIS,发现IIS的默认站点中多了一个RPC虚拟目录,虚拟目录中有一个rpcproxy.dll的动态链接库,其实就是这个文件具有解封装的功能,客户端也会把封装好的RPC数据按照约定发到Exchange的RPC虚拟目录下。
2)
配置“
HTTP
代理上的
RPC
”
Exchange服务器上安装了“HTTP代理上的RPC”后,我们还需要对这个组件进行简单的配置,主要是配置端口。默认情况下,“HTTP代理RPC”代理的RPC协议端口范围在100-5000,但Exchange使用的RPC服务端口范围超过了6000,因此我们需要对此进行一番设置。在Exchange服务器上运行Regedit,在注册表中定位到下列键值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\RpcProxy\ValidPorts],如下图所示,我们把ValidPorts的键值改为denver.contoso.com:100-7000。100-7000是扩大了端口范围,计算机名设置为denver.contoso.com是为了和用户访问Exchange服务器的域名相匹配。值得注意的是,改完之后无需重启即可生效。
3)
IIS
支持
HTTPS
把RPC数据包封装成HTTP格式后,再利用SSL对数据进行加密保护就更安全了,因此我们需要在Exchange服务器的IIS中申请证书,用以满足客户端进行HTTPS访问的需求。好在前面的OWA发布实验中我们已经申请过证书了,如下图所示,IIS中已经有一个颁发给denver.contoso.com的服务器证书,这样Exchange就可以支持客户端用HTTP封装RPC后再用SSL进行加密了。
上次做Exchange的OWA发布时,我们把Exchange服务器证书导出给了ISA服务器,而且ISA服务器在侦听器中使用了Exchange的证书,如下图所示,这些我们在后续操作中都会用到。
4)
配置
RPC
虚拟目录的身份验证
接下来需要配置RPC虚拟目录的验证方式,考虑到互联网上用户使用操作系统的多样性,我们准备使用兼容性最好的基本验证方式,虽然基本验证不对用户名和口令进行任何加密保护,但好在HTTPS可以帮我们解决这个问题。如下图所示,在Exchange的IIS管理器中查看RPC虚拟目录属性,切换到目录属性的“目录安全性”标签,点击身份验证和访问控制处的“编辑”。
如下图所示,我们把RPC虚拟目录的身份验证方式改为“基本验证”。
5)
创建
ISA
发布规则
准备工作就绪后,我们准备在ISA上创建发布规则了,我们只要通过发布规则把Exchange的RPC虚拟目录发布到ISA服务器外网网卡上就可以了。如下图所示,我们在ISA服务器上选择新建“Exchange Web客户端访问发布规则”。
为发布规则取个名字。
选择Exchange服务器的版本号为Exchange 2003,客户端访问类型是Outlook RPC/HTTP(S)。
选择发布单个网站或负载平衡器。
利用SSL加密ISA与Exchange服务器之间的数据。
用完全合格域名denver.contoso.com来表示Exchange服务器。
Exchange服务器的公用域名为Denver.contoso.com,这些名称都和Exchange服务器证书中的计算机名称保持一致。
选择使用之前发布Exchange OWA时创建的Web侦听器,注意将身份验证方法改为基本验证。
ISA服务器委派身份验证也使用基本身份验证。
此发布规则仅适用于通过身份验证的用户。
发布规则完成,此发布规则仅仅把Exchange服务器的RPC虚拟目录发布了出来。
6)
配置
Outlook
好了,最好我们要配置客户端的Outlook,让Outlook把RPC数据封装为HTTPS格式。在Istanbul上 打开控制面板中的邮件,如下图所示,选择“电子邮件帐户”。
选择“查看或更改现有电子邮件帐户”。
在电子邮件帐户的属性中点击“更改”。
点击下图中的“其他设置”。
在其他设置中切换到“连接”标签,勾选“使用HTTP连接到我的Exchange邮箱”,点击“Exchange代理服务器设置”。
如下图所示,在Exchange代理服务器设置中,输入Exchange代理服务器为denver.contoso.com,选择无论是快速网络还是低速网络,都优先使用HTTP连接。身份验证方式为基本身份验证。
Outlook更改完配置后,我们启动Outlook来访问一下,如下图所示,Outlook要求进行身份验证,我们以contoso\administrator的身份进行身份验证。
身份验证通过后,进入了Exchange邮箱,按住Ctrl键,用右键点击屏幕右下角的Outlook图标,如下图所示,选择“连接状态”。
如下图所示,连接协议使用的是HTTPS,这证明我们发布RPC Over HTTPS成功了!
用Exchange发布RPC Over HTTPS非常考验管理员的耐心,大家作此操作时一定要小心谨慎,尤其要注意证书和身份验证的问题。