首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >没有证书和windows身份验证的WCF消息安全性

没有证书和windows身份验证的WCF消息安全性
EN

Stack Overflow用户
提问于 2009-10-15 08:05:51
回答 5查看 15.3K关注 0票数 17

我有一个WCF服务和客户端,这将部署到几个公司(数百)。一些公司将在他们的网络中运行软件,一些公司将在互联网上运行它(WCF服务器在办公室,WCF客户端在另一个)。

我们希望对WCF服务器和客户端之间的通信进行加密。我们不需要使用WCF安全来验证有效/订阅者,因为我们有自己的用户名/密码登录,客户端将使用它来登录服务器。

  • 我们不能依赖Windows身份验证,因为有些用户会在互联网上运行它,而WCF服务器可能与WCF客户端不在同一个域上。
  • 如果我们使用“真正的”证书*,运行该软件的公司将必须从CA购买证书并安装它,然后配置我们的软件才能使用它,但这对大多数公司来说太复杂了。
  • 我们可以在安装WCF服务器的过程中自动创建证书,但之后我们必须自动将其安装到证书存储中,并以某种方式自动授予IIS读取证书的权限。这比我们想象的要复杂得多。

简而言之,我们想要一个简单的解决方案,其中加密只是基于一个共享的秘密,在我们的例子中,是用户登录时使用的用户名/密码。我确实理解这不会给出最好的可用加密,但我们愿意牺牲一些安全性来使软件更容易部署。

这个是可能的吗?

*对于“真正的”证书,我指的是从证书颁发机构购买的证书,而不是我自己创建/自签名的证书。

EN

回答 5

Stack Overflow用户

发布于 2009-10-15 09:11:11

如果您想加密传输中的消息(这真是一个好主意!),发送者(客户端)和服务器之间必须有一些共享的知识。这可以是硬编码的,但这真的不是一个好主意--如果“公共共享”知识被泄露,攻击者就可以破译和阅读你的所有消息。

此外,由于这绝对是而不是推荐的做法,所以在WCF中没有任何类型的支持来简化共享密钥的使用。你要靠你自己--你必须100%靠自己。

以安全的方式交换公共共享秘密的唯一可行的方法是使用证书。别无他法,抱歉。证书甚至不必用于用户身份验证或任何东西-但它在调用者和服务之间建立了一个共享的秘密,从而允许调用者以只有目标接收者才能实际解密和使用的方式加密消息。

所以我真的看不出有什么方法可以在你的服务器上安装证书--不需要在每个客户端上,而是在你的服务运行的每一个服务器上。

Marc

PS:如果你真的想要研究“硬编码的共享密钥”方法,你需要考虑一下:

  • 如何在每个客户端上安全地存储共享密钥?
  • 如何使用存储的共享密钥中的信息对消息进行加密?

通常,这种方法有两个方面:

  1. 交换某种形式的私钥/公钥对;服务器生成密钥对并将私钥保留给自己,并与客户端共享公钥(例如,通过WCF消息,对于私钥/公钥对,交换公共共享密钥,例如,将对称加密您的消息的“加密密钥”(并且由于它是对称的,服务器可以使用相同的密钥来解密您客户端上的messages)
  2. setup基础设施(例如,称为行为的WCF扩展),以便在消息发出之前对其进行检查,并使用您的共享密钥

对其进行加密

总而言之,它真的不是微不足道的--任何比这更简单的东西都不值得被称为“安全性”。

如果您查看所有必须完成工作-只使用WCF内置证书机制不是更容易吗?

正派的安全性值得它的盐是硬的-所以为什么不利用可用的东西,而不是自己做所有的工作,或者更糟:想出一个半生不熟的解决方案,它很容易破解,你可以很容易地以明文发送所有东西.不要低估了处理最基本的安全场景所需的代码的复杂性和数量- WCF为您做了所有这些-免费,以可靠和安全的方式-使用它!你不会后悔的!

票数 17
EN

Stack Overflow用户

发布于 2009-10-15 08:26:43

使用WCF,您可以在消息级别使用密码凭据,在传输级别使用SSL,我认为在您的情况下这就足够了。

参见here

票数 3
EN

Stack Overflow用户

发布于 2009-10-19 08:47:07

对于消息安全性,您的客户端提供一些凭据,服务器提供一些凭据。对于此设置和您的场景,您可以不使用带有Custom Username Validator的客户端用户名和密码以及服务器证书来提供服务器凭据。此Application Scenario提供了实现此目的所需的配置设置,但aspNet membership部分除外,您必须将其替换为自定义验证配置。

您的服务器上仍然需要有效的证书(客户端上不需要证书),但我看不出有任何方法可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1570939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档