带有签名和加密的WCF客户端+带有四个证书的HTTPS

时间:2016-11-17 17:51:22

标签: wcf soap certificate interop ws-security

我必须为一个可能用Java编写的外部SOAP Web服务创建一个WCF客户端。该Web服务使用 WS-Security 进行签名和加密(因此,我想我必须使用WCF消息级安全性)。客户端和Web服务之间的传输机制是 HTTPS,双向握手

问题是我必须使用四种不同的证书 - 我们称之为 CertA CertB CertC CertD

    必须使用
  • CertA CertC 对SOAP邮件进行签名。
  • 必须使用
  • CertB CertD 进行SOAP邮件加密和HTTPS握手。

基本上,客户端应该使用它的私钥对消息进行签名,并使用服务器的公钥对消息进行加密。服务器正好相反。

准确地说,这是WCF客户端为了向服务器发送消息并接收响应而必须做的事情:

  1. 客户端使用证书 CertA 签署SOAP请求(使用CertA的 私钥)

  2. 客户端使用证书 CertD 加密SOAP请求 (使用CertD的公钥)

  3. 客户端通过HTTPS将签名和加密的SOAP消息发送到服务器(在HTTPS双向握手期间服务器需要证书 CertB 以进行身份​​验证)

  4. 在服务器端:

    1. 服务器接收消息,验证并授权客户端
    2. 使用 CertD 的私钥的服务器解密邮件
    3. 服务器使用 CertA 的公钥验证邮件签名。然后,服务器处理解密和验证的消息。
    4. 服务器创建响应消息并使用证书 CertC (使用CertC的私钥)对其进行签名
    5. 服务器使用证书 CertB (使用CertB的公钥)加密响应消息
    6. 服务器通过HTTPS传输将响应发送回客户端。
    7. 当客户端收到服务器响应时:

      1. 客户端使用 CertB 的私钥解密响应
      2. 客户端使用 CertC 的公钥验证邮件签名
      3. 客户处理回复。
      4. 问题是如何配置此类WCF客户端?使用哪种绑定来启用SOAP签名&消息层加密+ HTTPS传输层上的双向握手以及如何“告诉”WCF 4个证书的目的是什么?

        (是的,我已经看过这篇文章了:https://msdn.microsoft.com/en-us/library/ms729856(v=vs.110).aspx但是我担心这篇文章没有为我的案例提供解决方案,因为他们使用了一些奇怪的双工绑定,需要客户端打开一个监听端口,那就是因为我必须使用常规的HTTPS连接,所以不是我的选择。

0 个答案:

没有答案