Internet 浏览器程序一般都使用Hypertext Transport Protocol (HTTP) 作为浏览World Wide Web的主要方法。因此,在今天HTTP 在大多数计算机上被广泛使用。微软已经扩展了Internet Information Server (IIS) 的能力来使用HTTP提供远程过程调用服务。
Microsoft RPC-over-HTTP 部署(RPC over HTTP)允许RPC 客户端安全和有效地通过Internet 连接到RPC 服务器程序并执行远程过程调用。这是在一个名称为RPC-over-HTTP 代理,或简称为RPC 代理的中间件的帮助下完成的。
RPC 代理运行在IIS 计算机上。它接受来自Internet 的RPC 请求,在这些请求上执行认证,检验和访问检查,如果请求通过所有的测试,RPC 代理将请求转发给执行真正处理的RPC 服务器。通过RPC over HTTP,RPC 客户端不和服务器直接通信,它们使用RPC 代理作为中间件。选择该模型有许多原因。
使用HTTP 作为 RPC 传输
RPC-over-HTTP 让客户端程序使用Internet 来执行远距离网络上的服务
器程序提供的过程。RPC over HTTP 通过已经建立的HTTP 端口来封装它的调用。这样的话,它的调用能够跨越客户端和服务器网络中的网络防火墙。
RPC over HTTP 将它的调用路由给位于 RPC 服务器网络中的RPC 代理。RPC 代理建立和维护到RPC
服务器的连接。它作为一个代理,调度到RPC 服务器的远程过程调用并通过Internet将服务器的回复发送给客户端应用程序。如下图1所示。
该图显示了客户端应用网络中的防火墙。对于RPC over HTTP 操作来说这不是必须的。然而,如果客户端网络确实有防火墙的话,它也将需要一个像Microsoft Proxy Server 的代理服务器程序。
当客户端程序使用 HTTP 作为传输发出一个远程过程调用,客户端上的RPC 执行库联系 RPC 代理。取决于RPC 客户端是否被请求使用 HTTP 或
HTTPS(HTTP 加SSL)端口80 或端口 443分别被使用。RPC 代理联系 RPC 服务器程序并建立一个TCP/IP 连接。客户端和RPC 代理通过Internet维护他们的HTTP或HTTPS 连接。客户端到RPC 代理的HTTP或HTTPS 连接能够穿越防火墙(受限于适当的访问权限)如果存在的话。接着服务器能够执行远程过程调用并通过RPC 代理将连接回复给客户端。RPC 代理是一个运行在IIS的上下文中的ISAPI 扩展。
如果客户端或服务器因为某种原因失去连接, RPC 代理将检测到并结束RPC 会话。只要会话继续, RPC 代理将维护它到客户端和服务器的连接。它将来自客户端的远程过程调用转发给服务器,然后将来自服务器的回复发送给客户端。
RPC 客户端程序通过创建一串字符形式的绑定,能够通过Internet 封装它自己的RPC 调用:
[object_uuid@]ncacn_http:rpc_server[endpoint,HttpProxy=proxy_server:h ttp_port,RpcProxy=rpc_proxy:rpc_port]
在这里:
I. object_uuid 代表RPC 对象的UUID。
II. ncacn_http 为RPC over HTTP 选择指定的协议序列。
III. rpc_server 是执行 RPC 服务器过程的计算机的网络地址。该服务器地址必须以可见的形式被指定,并且被 RPC 代理计算机理解,而不是客户端。由于客户端不直接连接到服务器,它不需要会解析服务器的名称,或建立到它的连接。RPC 代理将替客户端建立连接,因此,rpc_server 的名称必须被RPC 代理识别。
IV. endpoint 指定RPC 服务器进程为远程过程调用侦听的TCP/IP 端口。
V. HttpProxy 可选指定 RPC 客户端网络上的 HTTP 代理服务器,像Microsoft Proxy Server。如果选择了代理服务器,没有指定端口号, RPC存根在缺省情况下使用80端口如果没有要求SSL,和443 端口如果指定了SSL。
VI. RpcProxy 指定充当到RPC 服务器的代理的IIS 计算机的地址和端口号。您只需要指定它如果 RPC 服务器进程位于一台不同的计算机上而不是在RPC 代理上。如果您不指定端口号,RPC 客户端存根在缺省情况下使用80端口如果没有要求SSL,使用443 端口如果指定了SSL(HTTPS)。
RPC 服务器程序能够接受被封装的 RPC 调用通过侦听ncacn_http 协议序列。
Microsoft 有两个主要的RPC over HTTP 实施:版本 1和版本2。
版本 1 (也称为RPC over HTTP v1) 被Windows XP 支持。RPC 代理的版本 1 被Windows 2000 支持。
版本 2 (也称为RPC over HTTP v2) 是当前的版本。
这两个版本有不同的功能和有限制的互用性。下面是不同之处的总结。
1) RPC over HTTP v1 要求RPC over HTTP 客户端和 RPC 代理之间的所有HTTP 代理/防火墙都启用SSL 封装。RPC over HTTP v1 企图建立一个SSL 通道通过端口80甚至它发送的数据没有真正被SSL 加密。代理和防火墙通常拒绝像这样的请求,除非显式地配置允许。RPC over HTTP v2 没有这样的要求。
2) RPC over HTTP v1 不能建立到RPC 代理的SSL 会话。RPC over HTTP v2 能够在SSL会话中发送所有的RPC over HTTP 流量,在缺省情况下v2 要求数据在SSL 会话中发送。
3) RPC over HTTP v1 不能对RPC 代理认证。RPC over HTTP v2 能够认证,在缺省情况下v2 要求对RPC 代理认证。
4) RPC 代理v1 不能正常工作当IIS 计算机被安装在网络场中。RPC 代理v2 能够正常工作当IIS 计算机被安装在网络场中。
注意如果客户端程序的计算机上安装了Microsoft Internet Explorer ,并且您的客户端没有在字符串绑定中指定HttpProxy , RPC 客户端存根将从客户端计算机的注册表中查HttpProxy 设置。如果到的话,它将使用注册表中指定的代理。
如何设置代理服务器假设,例如,您的客户端程序通过Internet需要连接到名称为
Server7.microsoft 的计算机上的RPC 服务器。进一步,假设 RPC 代理运行在Major7.microsoft。 RPC 服务器程序侦听2225 端口。您的客户端将使用下面的字符绑定:
ncacn_http:Server7.microsoft[2225,
RpcProxy=Major7.microsoft]
如果RPC 代理能够将服务器名称解析为Server7,不用完全限定域名,您也可以指定:
ncacn_http:Server7 [2225, RpcProxy=Major7.microsoft]
如果客户端网络使用防火墙和名称为myproxy 的Internet 代理服务器,客户端上的Internet Explorer 没有配置使用该代理,您将需要修改客户端的字符绑定为:
ncacn_http:Server7.microsoft[,HttpProxy=myproxy:80,RpcProxy=Major 7.microsoft:80]
这将指示客户端连接到Server7.microsoft 上的RPC 服务器程序。要完成它,客户端将先使用端口80 (或端口443 如果使用SSL)连接到myproxy。这将让客户端程序访问Internet。使用Internet,客户端程序接着连接到Major7.microsoft 上的 RPC 代理。RPC 代理将建立到运行在
Server7.microsoft 上的RPC 服务器程序的连接。
今天大部分计算机都配置了网络浏览。因此,大多数客户端不需要指定HttpProxy,因为它将从Internet 连接设置中获得。
RPC over HTTP 安全
RPC over HTTP 提供三种类型的安全除了标准RPC 安全以外,它导致RPC over HTTP 流量一旦被 RPC 保护,接着被RPC over HTTP 提供的通道机制加倍保护。RPC over HTTP 通道机制对正常的 RPC 安全来说增加了下面这些内容:
a) 通过IIS 提供安全 (只对RPC over HTTP v2 可用)。
b) 提供SSL 加密和 RPC 代理验证(互相认证) 。也只对RPC over HTTP v2 可用。
c) 在 RPC 代理级别上提供限制口指派服务器网络中的哪些机器被允许接收RPC over HTTP 调用。
下面我们将具体描述这三个安全特性。
IIS 认证
RPC over HTTP 能够利用IIS的正常认证机制。RPC 代理虚拟目录能够被配置使用IIS 管理工具中的Default Web Site 下的Rpc 节点。如图2所示。
IIS能够被配置为禁用匿名访问和要求对RPC 代理虚拟目录的认证。要完成这些,右键点击Rpc 节点,然后选择Properties,选择Directory Security 栏,然后点击Authentication和 Access Control 组中的Edit 按钮,如图3所示:
尽管您能够使用RPC over HTTP 即使当RPC 代理虚拟目录允许匿名访问,因为安全原因Microsoft 强烈建议对该虚拟目录禁用匿名访问。为RPC over HTTP 启用Basic 认证、Windows 集成认证或两者。记住只有RPC over HTTP v2 能够对 RPC 代理认证要求Basic或Windows 集成认证;RPC over HTTP v1 将不能连接如果Disallow Anonymous Access 被禁用。由于RPC over HTTP v2是一个更加安全和稳定的部署,使用支持它的Windows 版本将提高您的安装的安全。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论