我正在准备创建一个 WCF 服务,我们的客户可以使用它来更新我们系统中的数据。因此,它必须通过 Internet 提供。我有一本关于 WCF 的书,我从中知道了 Message Security
是在 Internet 上提供 WCF 服务时要走的路。那是因为您不应该使用传输安全性,因为它应该只在您可以保证服务和客户端之间存在点对点连接的环境中使用。我做对了吗?
所以我想结合自定义 UserName
使用 Message Security验证。我知道我必须获得证书才能实现这一目标。我们公司已经拥有用于我们网站的 SSL 证书。
和
出于测试目的,我使用 Makecert 创建了自己的证书。它工作正常,但我总是不得不将证书添加到
Trusted Persons
在客户端机器上。Message Security
使用上述证书而不强制客户端将证书添加到 Trusted Persons
手动? 现在,让我们假设以下场景:
ISA 服务器/防火墙后面有两个 Web 服务器。此 ISA 服务器持有 www.company.com 地址的证书。所以所有的 SSL 东西都由它处理。它还相应地将传入的请求转发到网络服务器。新创建的 WCF 服务应该在第二个 web 服务器上运行。
Message Security
? 如果是,我听说复制证书不是一个好习惯,因为它降低了安全级别。将证书移动到网络服务器不是一种选择,因为 Web-Server1 上的网站也需要它。
和:
谢谢...
最佳答案
精心准备的问题。首先,我可能读过同一本书,我想澄清一下这个说法:
That is because you shouldn't use the transport security because it should only be used in environments where you can guarantee that there is a point-to-point connection between service and client.
是的。 HTTPS(传输安全)仅提供点对点安全,但 IMO 人员无法正确理解这种情况。你认为如果你通过 HTTPs 连接到你的网上银行,它会在互联网中间的某个地方随机从 HTTPS 交换通信到 HTTP 吗?不!点对点连接意味着客户端和提供所请求 URL 的访问网关之间的安全传输 channel 。在您的方案中,它意味着客户端和您的 ISA 服务器之间的安全传输 channel 。您的 ISA 和 Web 服务器 2 之间的通信将不会受到保护。如果您想要在客户端和 Web 服务器 2 之间提供安全 channel 的端到端(ISA 将无法拦截消息),您需要消息安全性。
现在回答你的其他问题:
Can I use the same certificate for the message security of the WCF Service?
是的,您可以,但您必须将私钥复制到您的 Web Server 2。
Is the Message Security way interoperable with clients that expect a ASMX Webservice?
不可以。除非您编写大量自定义 SOAP header 和扩展或安装 WSE 3.0,否则纯 ASMX 客户端无法使用消息安全性。
Is it possible to enable the Message Security with the above mentioned certificate without forcing the client to add the certificate to the Trusted Persons manually?
是的,但发布证书的证书颁发机构必须在客户端机器上受信任。这与 HTTPS 相同。受消息安全保护的服务也可以在 WSDL 中公开证书的指纹。客户端可以使用此指纹验证服务身份。我认为在这种情况下,您也不需要在客户端上安装证书,但是当证书过期时,所有客户端都必须更新。
Do I have to copy the certificate to the webserver to be able to use the Message Security?
是的,你必须。但这可能是一个问题,因为出于安全原因,证书可以标记为不可导出。最好的解决方案是为此目的申请新证书。
关于.net - WCF 服务 - 使用用户名身份验证的证书和消息安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679235/