2013-06-25 154 views
0

我对WCF安全性有疑问。我没有一个具体的问题,但更多的是一个普遍的问题。WCF安全性 - 证书

如果我创建了一个WCF服务及其保护使用证书,是否使用该服务需要有相应的客户端证书每一位客户?

举例来说,如果我有一个谈话WCF服务(使用证书)一个WinForms客户端应用程序,并在客户端必须有一个匹配的客户端证书? - 或者客户端可以在没有安装证书的情况下进行通信?

谢谢。

回答

1

您可能会将服务器证书与客户端证书混淆。当你说服务是“受证书保护”的时候,你不明白你的意思。服务器和客户端证书都可以“保护”服务,尽管以不同的方式 - 通过加密通信的服务器证书,仅通过将服务限制到授权客户端的客户端证书。

仅使用服务器证书的设置类似于任何网站通过HTTPS提供了 - 只有服务器证书“已安装”(这意味着它具有证书的私钥)。虽然客户端没有自己的证书,但服务器会将自己的证书发送给他们,并且他们可以验证服务器的身份,假设他们信任签署证书的权限。此外,一旦建立了服务器标识,证书就为加密客户端和服务器之间的会话提供了基础。

到目前为止,在这个故事中,没有客户端认证:虽然客户端知道他们正在与他们打算的服务器交谈(感谢服务器证书),并且所有通信都是加密的,但服务器无法验证连接到它的客户端的身份。客户端证书是一个执行客户端认证的方式;更熟悉的替代方法是用户名和密码。

要使用客户端证书,每个客户端必须具有有效的证书和私钥,这将不会是相同的服务器证书。同样,服务器不一定存储这些证书的本地副本 - 它们在安全握手期间交换。

“有效”在本上下文中是指作为身份到服务器的装置,使用一些建立的标准(例如,客户端证书的白名单中,或者要求客户端证书由特定机构颁发)是可接受的。虽然它往往可以接受的客户仅仅是为了接受服务器证书信任的证书颁发机构链到受信任根为有效,必须有强加于接受客户端证书成为认证有用的一些额外的限制 - 在大多数情况下,允许具有可信证书的任意客户端连接到配置为使用客户端证书对客户端进行身份验证的服务时,将不会有所帮助。

+0

感谢您的明确答案。我将HTTPS证书与WCF证书混淆在一起。你的解释已经说明了这一点。再次感谢。 – Chris

+0

很抱歉,据我所知,没有什么像HTTPS证书或WCF证书,概念上所有证书都只是证书,它们都以相同的方式工作。你能否详细说明一下。 – Anu

1

弗罗斯特先生,让我首先说明证书是如何工作的短序列帮你,这是很重要的:

  1. 浏览器(在此浏览器是一个客户端,它可以是任何其他客户端)请求安全页面(通常为https://)。

  2. Web服务器发送带有证书的公钥。

  3. 浏览器检查证书是否由可信的 参与方(通常为受信任的根CA)颁发,证书仍然是 有效且证书与所联系的站点相关。
  4. 然后,浏览器使用公钥对加密密钥进行加密并将其发送到服务器,并使用加密的URL 以及其他加密的http数据。
  5. Web服务器使用其私钥对其解密对称加密密钥,并使用对称密钥来解密URL和http 数据。
  6. 网络服务器发回所请求的html文档和用对称密钥加密的http数据 。
  7. 浏览器使用对称密钥 解密http数据和html文档并显示信息。

现在就是在客户端和服务器证书的区别,这是指在Link

现在回答你的问题“没有客户端必须有匹配客户端证书”,是它的没有这个概念就行不通。