【问题标题】:WCF Security - CertificatesWCF 安全 - 证书
【发布时间】:2013-06-25 10:06:50
【问题描述】:

我有一个关于 WCF 安全性的问题。我没有具体问题,但更多的是一般性问题。

如果我创建 WCF 服务并使用证书对其进行保护,是否每个使用该服务的客户端都需要拥有相应的客户端证书?

例如,如果我有一个与 WCF 服务(使用证书)对话的 Winforms 客户端应用程序,那么客户端是否必须具有匹配的客户端证书? - 或者客户端可以在没有安装证书的情况下进行通信?

谢谢。

【问题讨论】:

    标签: .net wcf security iis encryption


    【解决方案1】:

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

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

    到目前为止,还没有客户端身份验证:尽管客户端知道他们正在与他们想要的服务器通信(感谢服务器证书),并且所有通信都是加密的,但服务器无法验证连接到它的客户端的身份。客户端证书是执行客户端身份验证的一种方式;更熟悉的替代方法是用户名和密码。

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

    在这种情况下,“有效”表示可接受作为服务器的身份识别手段,使用一些既定标准(例如,客户端证书的白名单,或要求客户端证书由特定机构颁发)。虽然客户端通常可以简单地信任证书颁发机构链直至受信任的根以接受 服务器证书 为有效,但必须对可接受的客户端证书施加一些额外的限制 对身份验证有用 - 在大多数情况下,允许 任何 具有受信任证书的任意客户端连接到配置为使用客户端证书对客户端进行身份验证的服务是没有帮助的。

    【讨论】:

    • 感谢您的明确答复。我将 HTTPS 证书与 WCF 证书混淆了。你的解释已经说明了这一点。再次感谢。
    • 很抱歉,但据我所知,没有什么能像 HTTPS 证书或 WCF 证书那样,从概念上讲,它们都只是证书,它们的工作方式都相同。能否请您详细说明。
    【解决方案2】:

    先生。 Frost,让我先简要介绍一下证书的工作原理,这很重要:

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

    2. Web 服务器将其公钥连同其证书一起发送。

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

    现在客户端证书和服务器证书有什么区别,请参阅Link

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

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2011-09-28
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多