C# WCF net.tcp SSL:服务器不支持客户端应用程序支持的密码套件
我有两台电脑,我们叫它们PC1和PC2 我编写了一个服务端应用程序,它打开一个自托管的WCF net.tcp端点,并使用X509证书进行保护。我用于传输安全的证书是“颁发给”任意名称的,例如:MY-TEST-SERVICE 我还编写了一个客户端应用程序来与服务对话。它知道并指定服务将提供的DnsIdentity(MY-TEST-service),它使用服务用于传输安全的相同X509证书 当我在PC1上运行客户端时,它与PC1和PC2上的服务一起工作 当我在PC2上运行客户端时,它与PC1上的服务一起工作,但与PC2上的服务的SSL握手失败 在PC2上打开WCF客户端跟踪,然后成功连接到PC1上的secured net.tcp服务,但未能连接到PC2上的secured net.tcp服务,我可以准确地看到哪个步骤失败 从PC2到PC1的成功握手跟踪报告: -已确定端点引用的标识 -身份验证成功 从PC2到PC2的失败握手跟踪报告: -套接字连接已中止。这可能是由于。。。 -抛出异常C# WCF net.tcp SSL:服务器不支持客户端应用程序支持的密码套件,c#,web-services,wcf,ssl,tcp,C#,Web Services,Wcf,Ssl,Tcp,我有两台电脑,我们叫它们PC1和PC2 我编写了一个服务端应用程序,它打开一个自托管的WCF net.tcp端点,并使用X509证书进行保护。我用于传输安全的证书是“颁发给”任意名称的,例如:MY-TEST-SERVICE 我还编写了一个客户端应用程序来与服务对话。它知道并指定服务将提供的DnsIdentity(MY-TEST-service),它使用服务用于传输安全的相同X509证书 当我在PC1上运行客户端时,它与PC1和PC2上的服务一起工作 当我在PC2上运行客户端时,它与PC1上的服务
为什么身份验证过程会失败,但只有当客户端和服务都在PC2上执行时才会失败?将客户端和服务上的SecurityMode从传输更改为消息解决了最初的问题,所有客户端现在都可以使用所有服务
这对我来说没有意义,但无论如何,我有一个解决方案。我们最终发现了问题(我不知道它是否适用于您的具体情况),而没有更改代码中的任何内容-在我们的情况下,它只是开始了一天,没有任何代码更改 我们发现已安装了
kb3102467
,即.NET Framework 4.6.1,我们最终将使用它,并且可能会在每个人的计算机上找到它自己
问题似乎在于TLS1.2中不再支持SHA512,因为它会导致高CPU使用率。我们可能需要为客户端和服务器颁发新的SSL证书
作为解决办法,我们禁用了TLS 1.2:
这解决了我们的问题,同时计算机上仍安装了.NET F/W 4.6.1。证书是否同时位于PC2上的本地计算机>受信任的人员存储和本地计算机>个人存储?是。我用于客户端和服务器的证书位于本地计算机Personal中,其CA位于本地计算机Trusted Root中,PC1和PC2上都是这种情况。证书有私钥,CA的路径经过验证。深入挖掘,我在系统事件日志中看到一个Schannel事件:“从远程客户端应用程序接收到TLS 1.2连接请求,但服务器不支持客户端应用程序支持的密码套件。SSL连接请求失败。”最后,我看到了实际的问题。。。但是,在同一台PC上执行的服务和客户端怎么会像这样不一致呢@米克斯,你能找到解决这个问题的办法吗?我们现在面临着同样的问题。@developer82非常抱歉延迟。。。我刚才看到你的问题。。。我将安全模式从传输更改为消息。非常感谢您的帮助。