发布Exchange的RPC以及RPC Over HTTPS:ISA2006系列之十九

简介:
发布 Exchange RPC 以及  RPC Over HTTPS
在前几篇博文中,我们介绍了如何使用OWASMTP/POP3来发布Exchange服务器,今天我们介绍如何利用RPCRPC Over HTTPS来发布Exchange,这也是Exchange发布系列的最后一篇博文,OWASMTP/POP3RPCRPC Over HTTPS已经涵盖了目前发布Exchange所使用的全部技术。
实验拓扑和以前一样,Denver是域控制器,CA服务器,DNS服务器,Exchange服务器,BeijingISA2006服务器,Istanbul是外网测试客户机。
 
 
  利用 RPC 发布 Exchange 服务器
以前我们在Exchange系列博文中([url]http://yuelei.blog.51cto.com/202879/d-3[/url])曾经介绍过,Exchange的最佳客户端是使用RPC协议的OutlookOutlook是微软为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的完美支持也是有关系的。ISARPC的支持可以通过下图来说明。
 
说了这么半天,无非是和大家介绍一下RPC的原理,希望大家理解ISA发布RPC服务器从操作上看很简单,但实际上对防火墙的过滤器有很高的技术要求。好,让我们通过实例来看看如何发布ExchangeRPC服务。如下图所示,在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登录进入了管理员邮箱,如下图所示,这说明发布ExchangeRPC服务成功了。
 
   利用 RPC Over HTTPS 发布 Exchange 服务器
RPC发布成功之后,我们就要来考虑一下RPC Over HTTPS了,RPC Over HTTPS我们在Exchange系列博文中已经介绍过了,它主要就是考虑到电信部门可能会在公网上封锁RPC协议,因此把RPC协议封装成HTTPHTTPS格式,这样就可以躲过电信的封杀,等封装后的数据包到达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数据按照约定发到ExchangeRPC虚拟目录下。
 
2) 配置“ HTTP 代理上的 RPC
Exchange服务器上安装了“HTTP代理上的RPC”后,我们还需要对这个组件进行简单的配置,主要是配置端口。默认情况下,“HTTP代理RPC”代理的RPC协议端口范围在1005000,但Exchange使用的RPC服务端口范围超过了6000,因此我们需要对此进行一番设置。在Exchange服务器上运行Regedit,在注册表中定位到下列键值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\RpcProxy\ValidPorts],如下图所示,我们把ValidPorts的键值改为denver.contoso.com:100-7000100-7000是扩大了端口范围,计算机名设置为denver.contoso.com是为了和用户访问Exchange服务器的域名相匹配。值得注意的是,改完之后无需重启即可生效
 
3) IIS 支持 HTTPS
RPC数据包封装成HTTP格式后,再利用SSL对数据进行加密保护就更安全了,因此我们需要在Exchange服务器的IIS中申请证书,用以满足客户端进行HTTPS访问的需求。好在前面的OWA发布实验中我们已经申请过证书了,如下图所示,IIS中已经有一个颁发给denver.contoso.com的服务器证书,这样Exchange就可以支持客户端用HTTP封装RPC后再用SSL进行加密了。
 
上次做ExchangeOWA发布时,我们把Exchange服务器证书导出给了ISA服务器,而且ISA服务器在侦听器中使用了Exchange的证书,如下图所示,这些我们在后续操作中都会用到。
 
4) 配置 RPC 虚拟目录的身份验证
接下来需要配置RPC虚拟目录的验证方式,考虑到互联网上用户使用操作系统的多样性,我们准备使用兼容性最好的基本验证方式,虽然基本验证不对用户名和口令进行任何加密保护,但好在HTTPS可以帮我们解决这个问题。如下图所示,在ExchangeIIS管理器中查看RPC虚拟目录属性,切换到目录属性的“目录安全性”标签,点击身份验证和访问控制处的“编辑”。
 
如下图所示,我们把RPC虚拟目录的身份验证方式改为“基本验证”。
 
5) 创建 ISA 发布规则
准备工作就绪后,我们准备在ISA上创建发布规则了,我们只要通过发布规则把ExchangeRPC虚拟目录发布到ISA服务器外网网卡上就可以了。如下图所示,我们在ISA服务器上选择新建“Exchange Web客户端访问发布规则”。
 
为发布规则取个名字。
 
选择Exchange服务器的版本号为Exchange 2003,客户端访问类型是Outlook RPC/HTTP(S)
 
选择发布单个网站或负载平衡器。
 
利用SSL加密ISAExchange服务器之间的数据。
 
用完全合格域名denver.contoso.com来表示Exchange服务器。
 
Exchange服务器的公用域名为Denver.contoso.com,这些名称都和Exchange服务器证书中的计算机名称保持一致。
 
选择使用之前发布Exchange OWA时创建的Web侦听器,注意将身份验证方法改为基本验证。
 
ISA服务器委派身份验证也使用基本身份验证。
 
此发布规则仅适用于通过身份验证的用户。
 
发布规则完成,此发布规则仅仅把Exchange服务器的RPC虚拟目录发布了出来。
 
6) 配置 Outlook
好了,最好我们要配置客户端的Outlook,让OutlookRPC数据封装为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非常考验管理员的耐心,大家作此操作时一定要小心谨慎,尤其要注意证书和身份验证的问题.
























本文转自yuelei51CTO博客,原文链接: http://blog.51cto.com/yuelei/91076,如需转载请自行联系原作者
相关文章
|
3月前
|
缓存 网络协议 安全
计算机网络 TCP、RPC、GRPC、HTTP 对比
【1月更文挑战第1天】计算机网络 TCP、RPC、GRPC、HTTP 对比
|
3月前
|
网络协议 Java 程序员
SpringCloud 远程调用为啥要采用HTTP,而不是RPC?
关于SpringCloud远程调用采用HTTP而非RPC。
66 0
|
3月前
|
网络协议 安全 API
计算机网络 TCP、RPC、GRPC、HTTP 总结
【1月更文挑战第1天】计算机网络 TCP、RPC、GRPC、HTTP 总结
|
4月前
|
缓存 网络协议 安全
tcp、http、rpc和grpc得一些个人总结
tcp、http、rpc和grpc得一些个人总结
75 0
|
6月前
|
JSON Go 开发工具
Go语言学习 - RPC篇:理解标准库HTTP的hander实现逻辑
在Go语言中,常见的RPC包括HTTP/gRPC/Thrift等,但绝大多数的开发场景仍是基于HTTP。本文对RPC的讨论,主要是基于HTTP的场景。
39 0
|
6月前
|
自然语言处理 负载均衡 安全
HTTP那么强大,RPC为啥还有用武之地?
HTTP那么强大,RPC为啥还有用武之地?
49 0
|
8月前
|
JSON 网络协议 程序员
既然有HTTP协议,为什么还要有RPC
既然有HTTP协议,为什么还要有RPC
82 0
|
9月前
|
开发框架 负载均衡 监控
既然有了HTTP,为什么还要RPC?
既然有了HTTP,为什么还要RPC?
|
10月前
|
网络协议 Dubbo Java
【远程调用框架概述 一】基于HTTP和RPC的远程调用方式
【远程调用框架概述 一】基于HTTP和RPC的远程调用方式
250 0
|
10月前
|
JSON 负载均衡 网络协议
rpc和http的区别?
rpc和http的区别?
109 0