Angelo Lee's Blog
This is my kingdom .If i don't fight for it ,who will ?
发布 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 非常考验管理员的耐心,大家作此操作时一定要小心谨慎,尤其要注意证书和身份验证的问题。
posted on 2010-04-16 08:33  Angelo Lee  阅读(222)  评论(0编辑  收藏  举报