发布
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
非常考验管理员的耐心,大家作此操作时一定要小心谨慎,尤其要注意证书和身份验证的问题。
作者:Angelo Lee
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.