我最近开发了一个WCF Facade服务。我是WCF的新手,无法理解安全实现部分。如何使用证书来保护3跳WCF外观服务?
该服务如下:
- 一个asp.net公共网站具有WCF客户端,它访问:一个DMZ,内
- 甲WCF门面服务这又充当客户端来访问:
- 内部网络WCF服务
所有服务目前正在使用的WSHttpBinding。
我想在所有3个服务器之间使用X.509证书进行客户端/服务器身份验证(即公共客户端应用程序和门面服务使用证书相互进行身份验证,门面客户端和内部服务使用证书相互进行身份验证)。
有人可以一步一步解释在生产环境中需要做些什么来保证这一点?我所引用的每篇文章和书籍都解释了makecert.exe的使用,但并未解释使用来自真实CA的生产证书。我知道这可能很容易,但我似乎无法围绕所需的概念包围我的头。
从受信任的CA获得用户访问公共网站的SSL证书和SAN SSL证书,该证书可通过主题替代名称应用于多达4个域名。如果我需要使用makecert.exe等来创建客户端证书,我仍然对身份验证感到困惑。
理想情况下,所有服务/客户端配置都在app/web.config(无代码)内。我拥有对所有三台服务器(公共Web服务器,Facade/dmz服务器,内部Web服务器)的完全管理权限。
任何洞察力或指导将非常感激!
编辑基于评论提供更多的细节:
- IIS 6
- 用户身份验证,则无须对面向公众的网站上的所有服务器。基本上,公众访问者将输入信息的形式,由服务处理和处理。不需要认证。
- 付费EV SSL证书将用于确保公共访问者和网站之间的交互。
我感兴趣的是如何在不同的WCF客户端/服务之间实现双向认证/身份验证。所以:
-
公共服务器和WCF服务门面/ DMZ服务器上
- WCF客户端相互识别和相互使用证书认证 内部服务器上的门面/ DMZ服务器和WCF服务
- WCF客户端,然后还互相识别并使用证书对彼此进行身份验证。
我从受信任的CA(DigiCert)获得灵活的SAN证书,如果可能的话,我希望使用它来进行身份验证。它可以通过主题替代名称支持多达4个DNS条目。
感谢您提供任何帮助!
一些问题,制约了答案: - 是服务的所有IIS托管,自托管瓦特/的ServiceHost,或组合? - 您是否期望客户端身份验证信息通过不同的层,或者您是否正在执行受信任的子系统模型,其中唯一的“变量”凭据位于公共站点上,那么后端服务器具有固定的客户端证书? - 您是否需要根据客户端证书进行任何类型的授权,或者仅仅是由您的CA签署的客户端证书的存在足以完全访问? - 您打算如何为最终用户颁发客户端证书(Windows CA,makecert,付费威瑞信)? – nitzmahone 2009-12-19 02:45:50
另外,我不清楚最终用户是否使用证书,或者您是否有其他身份验证机制,并且只想通过证书通过相互身份验证来保护服务器 - 服务器通信。 – nitzmahone 2009-12-19 02:47:19