【问题标题】:WCF Message Level Security using Certificate (X.509) Message Signed and Encrypted使用证书 (X.509) 消息签名和加密的 WCF 消息级别安全性
【发布时间】:2016-08-14 19:31:32
【问题描述】:

我有一个常见的用例来实现一个 Web 服务 (WCF) 和一个使用该 Web 服务的 Web 客户端。客户端和服务都在发送和接收签名和加密消息(消息级别安全性)。

我可以有多个客户端使用我的服务,因此需要在运行服务项目的服务器上安装多个客户端证书。

我在本地机器存储中安装了 2 个证书(服务证书和客户端证书),位于个人和受信任的根证书颁发机构下。

makecert -sr LocalMachine -ss My -a sha1 -n "CN=WCFServer" -len 2048 -sky exchange -pe

makecert -sr LocalMachine -ss My -a sha1 -n "CN=WCFClient" -len 2048 -sky exchange -pe

虽然证书给了我“无法保证许可证的完整性”的错误,但现在我不在乎这个问题。

Web Client 需要通过自己的 Private Key 对请求消息进行签名,并通过 Service Certificate Public key 对消息进行加密。

服务接收请求并通过客户端公钥验证消息的签名并通过自己的私钥解密内容

然后处理请求并创建响应对象。 现在 Service 必须使用自己的私钥对响应进行签名,并通过客户端公钥对消息进行加密。

现在客户端得到签名和加密的响应。现在它通过服务公钥验证响应并通过自己的私钥解密消息。

这是整个 Szenerio 。我已经在我的本地开发机器上安装了(客户端和服务)X.509 证书。我正在使用wsHttpBinding 并且通信正常。

我将 [ServiceContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)] 用于 ServuceContract,[OperationContract(ProtectionLevel = ProtectionLevel.EncryptAndSign, IsOneWay = false)] 用于 OperationContract。

我有以下问题: 我需要在我的代码中签名和加密/解密请求或响应消息(一次在客户端,一次在服务代码中)或服务项目和客户端项目的 web.config 中的配置足以完成所有这些工作吗?

我完成了以下代码项目,它工作正常。 http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF

我的源代码(Visual Studio 项目)包括这两个证书都可以在 Bitbucket 上获得 download here

谁能告诉我,我需要在代码中完成所有这些工作还是通过我当前的配置来完成。

提前致谢。

【问题讨论】:

    标签: wcf-security x509 ws-security wshttpbinding makecert


    【解决方案1】:

    我从 MSDN 论坛得到以下答案。

    我是否需要在我的代码中签名和加密/解密请求或响应消息(一次在客户端,一次在服务代码中)或服务项目和客户端项目的 web.config 中的配置足以完成所有这些工作吗?

    如果我们在配置文件中将服务配置为使用证书身份验证,那么正如您所说,所有响应和请求消息都将由客户端证书的私钥/公钥和服务证书的私钥/公钥加密/解密钥匙。所以在我看来,完成配置文件中的所有内容就足够了。

    更多信息,请尝试参考以下文章:

    证书认证:

    https://msdn.microsoft.com/en-us/library/ff648360.aspx.

    消息和传输安全:

    https://msdn.microsoft.com/en-us/library/ff648863.aspx.

    【讨论】:

      【解决方案2】:

      我还有几个问题可能有人可以回答我。

      1. 我有多个将访问我的服务的客户端(外部 Web 应用程序)。每个客户都需要创建自己的证书吗?客户端将向我们提供没有私钥的证书,需要安装在服务主机服务器上?这是正确的方法吗?

      2. 每个客户端证书都需要在web.config中配置?

      3. 我需要导出没有私钥的服务证书并发送给客户。客户端必须在他们的应用服务器上安装和配置证书?这是正确的吗?

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 2014-05-22
        • 2013-04-05
        相关资源
        最近更新 更多