【问题标题】:WCF net.tcp SSL: none of the cipher suites supported by the client application are supported by the serverWCF net.tcp SSL:服务器不支持客户端应用程序支持的密码套件
【发布时间】:2015-08-20 16:55:46
【问题描述】:

我有两台电脑,我们称它们为 PC1 和 PC2。

我编写了一个服务端应用程序,它打开一个自托管的 WCF net.tcp 端点,并使用 X509 证书进行保护。我用于传输安全的证书是“颁发给”一个任意名称,例如:MY-TEST-SERVICE。

我还编写了一个客户端应用程序来与服务通信。它知道并指定服务将提供的 DnsIdentity (MY-TEST-SERVICE),它使用服务用于传输安全的相同 X509 证书。

当我在 PC1 上运行客户端时,它与 PC1 和 PC2 上的服务一起工作。

当我在 PC2 上运行客户端时,它与 PC1 上的服务一起工作,但与 PC2 上的服务的 SSL 握手失败。

在 PC2 上打开 WCF 客户端跟踪,然后成功连接到 PC1 上的安全 net.tcp 服务,并且无法连接到 PC2 上的安全 net.tcp 服务,我可以确切地看到哪个步骤失败了。

成功握手的跟踪,从 PC2 到 PC1,报告: - 为端点参考确定身份 - 身份验证成功

从 PC2 到 PC2 的失败握手跟踪报告: - 套接字连接被中止。这可能是由于... - 抛出异常

为什么身份验证过程会失败,但只有当客户端和服务都在 PC2 上执行时?

【问题讨论】:

  • 是本地计算机 > 受信任的人存储和本地计算机 > PC2 上的个人存储中的证书吗?
  • 是的。我用于客户端和服务器的证书位于本地计算机个人中,其 CA 位于本地计算机受信任的根目录中,PC1 和 PC2 都是这种情况。证书有一个私钥,并且验证了 CA 的路径。
  • 深入挖掘,我在系统事件日志中看到一个 Schannel 事件:“从远程客户端应用程序接收到一个 TLS 1.2 连接请求,但客户端应用程序支持的密码套件都不支持服务器。SSL 连接请求失败。”最后,我看到了实际的问题......但是在同一台PC上执行的服务和客户端怎么会这样不一致呢?!
  • @MikeZ 你能找到解决这个问题的方法吗?我们现在面临同样的事情。
  • @developer82 很抱歉耽搁了...我刚刚看到您的问题...我将 SecurityMode 从 Transport 更改为 Message。

标签: c# web-services wcf ssl tcp


【解决方案1】:

我们最终发现了问题(我不知道它是否适用于您的确切情况),而没有更改我们的代码中的任何内容 - 在我们的例子中,它刚刚开始一天而没有任何代码更改。

我们发现安装了kb3102467 的 Windows 更新发生了 - 这是 .NET Framework 4.6.1,我们最终会使用它,并且可能会在每个人的机器上找到它自己。

问题似乎在于 TLS 1.2 不再支持 SHA512,因为它会导致 CPU 使用率过高。我们可能需要为客户端和服务器颁发新的 SSL 证书。

作为一种解决方法,我们禁用了 TLS 1.2:

  1. 启动 regedit 并浏览到以下位置:HKLM\System\CurrentControlSet\Control\SecurityProviders\SChannel\Protocols
  2. 在协议下创建以下密钥:TLS 1.2
  3. 在 TLS 1.2 下创建以下两个 Key:Client 和 Server
  4. 在客户端和服务器键下创建以下 DWORD:DisabledByDefault 和 Enabled
  5. 在客户端和服务器下设置以下内容:DisabledByDefault=1 和 Enabled =0
  6. 重启服务器。

这解决了我们的问题,同时仍然在机器上安装了 .NET F/W 4.6.1。

【讨论】:

  • 非常感谢您的帮助。
【解决方案2】:

将客户端和服务上的 SecurityMode 从 Transport 更改为 Message 已经解决了最初的问题,现在所有客户端都可以使用所有服务。

这对我来说没有意义,但无论如何,我有一个解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多