WCF服务 - 使用UserName身份验证的证书和邮件安全性

时间:2011-01-13 10:53:36

标签: .net authentication wcf certificate

我正在准备创建一个WCF服务,客户可以使用它来更新我们系统中的数据。所以它必须通过互联网提供。我有一本关于WCF的书,我知道Message Security是通过Internet提供WCF服务的方法。这是因为您不应该使用传输安全性,因为它只应在您可以保证服务和客户端之间存在点对点连接的环境中使用。我做对了吗? 所以我想将Message Security与自定义UserName身份验证结合使用。我知道我必须获得证书才能完成。我们公司已拥有用于我们网站的SSL证书。

  • 我是否可以将相同的证书用于WCF服务的邮件安全性?

  • Message Security方式是否可以与期望ASMX Web服务的客户端互操作?

出于测试目的,我使用Makecert创建了自己的证书。它工作正常但我总是必须将证书添加到客户端计算机上的Trusted Persons

  • 是否可以使用上述证书启用Message Security,而无需强制客户端手动将证书添加到Trusted Persons

现在,让我们假设以下情况:

Company Infrastructure

ISA-Server /防火墙后面有两个Web服务器。此ISA-Server拥有www.company.com地址的证书。因此所有SSL内容都由它处理。它还相应地将传入的请求转发给Web服务器。新创建的WCF服务应该在第二个Web服务器上运行。

  • 我是否必须将证书复制到网络服务器才能使用Message Security

如果是,我听说复制证书不是好的做法,因为它降低了安全级别。将证书移动到Web服务器不是一种选择,因为Web-Server1上的网站也需要它。

  • 在这种情况下,我有哪些选择?

  • 无论给定的要求如何,此方案的最佳做法是什么?

谢谢...

1 个答案:

答案 0 :(得分:12)

准备充分的问题。首先,我可能会读同一本书,我想澄清一下这句话:

  

那是因为你不应该使用   运输安全,因为它应该   仅用于您的环境   可以保证有一个   两者之间的点对点连接   服务和客户。

是。 HTTPS(传输安全性)仅提供点对点安全性,但IMO人员无法正确理解此方案。你是否认为如果你通过HTTP连接到你的网上银行,它会随机地从互联网交换通信中的某个地方从HTTPS到HTTP?没有!点对点连接意味着在客户端和访问的网关之间提供所请求的URL的安全传输通道。在您的方案中,它意味着客户端和ISA Server之间的安全传输通道。您的ISA和Web服务器2之间的通信将不受保护。如果您希望端到端能够在客户端和Web服务器2之间提供安全通道(ISA将无法拦截消息),则需要消息安全性。

现在回答您的其他问题:

  

我可以使用相同的证书吗?   WCF服务的消息安全性?

是的,您可以,但您必须将私钥复制到Web服务器2.

  

是Message Security方式吗?   可与期望的客户互操作   ASMX Web服务?

没有。除非您编写大量自定义SOAP标头和扩展或安装WSE 3.0,否则纯ASMX客户端无法使用邮件安全性。

  

是否可以启用消息   安全与上述   证书而不强迫客户   将证书添加到“受信任”   人工手动?

是,但必须在客户端计算机上信任发布证书的证书颁发机构。它与HTTPS相同。使用消息安全性保护的服务还可以在WSDL中公开证书的指纹。客户端可以使用此指纹验证服务标识。我认为在这种情况下你也不需要在客户端上安装证书,但是当证书过期时,所有客户端都必须更新。

  

我是否必须将证书复制到   网络服务器能够使用   邮件安全性?

是的,你必须。但这可能是一个问题,因为出于安全原因,证书可以标记为不可导出。最佳解决方案是仅为此目的申请新证书。