调用SSPI失败,请参阅内部异常。不支持请求的功能

Ald*_*jal 6 .net c# ssl sspi schannel

在我公司中,我们有一个用C#开发的Windows服务,用于使用SSLStream和Tls12以及服务器和客户端证书来处理来自客户端的请求消息。该服务在Windows Server 2012(包括Windows 10 PC)上都运行良好,无论是以发布模式执行还是调试以检查代码,但是最近执行AuthenticateAsServer时会引发异常。一段代码是:

ServicePointManager.SecurityProtocol = SslProtocols.Tls12;
SslStream secureClient = new SslStream(networkStream, false);
secureClient.AuthenticateAsServer(serverCertificate);
Run Code Online (Sandbox Code Playgroud)

networkStream是具有服务的IP和端口的NetworkStream的实例。serverCertificate是X509Certificate2,它以自签名的方式安装在本地计算机存储中。客户端具有相同的证书。异常详细信息如下:

System.Security.Authentication.AuthenticationException
  HResult=-2146233087
  Message=A call to SSPI failed, see inner exception.
  Source=System
  StackTrace:
       at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
       at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
       at System.Net.Security.SslStream.AuthenticateAsServer(X509Certificate serverCertificate)
       at TransakcioClassLib.ServiceStream..ctor(Int64 id, NetworkStream networkStream, Boolean isSecure, X509Certificate2 serverCertificate) in c:\Developer\OmniPay\0-Development\OmniGateway\TransakcioClassLib\TransakcioClassLib\TransakcioClassLib.cs:line 6311
       at TransakcioClassLib.TransakcioServer.ProcessClientRequestBlocking() in c:\Developer\OmniPay\0-Development\OmniGateway\TransakcioClassLib\TransakcioClassLib\TransakcioClassLib.cs:line 2658
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.ComponentModel.Win32Exception
       HResult=-2147467259
       Message=The function requested is not supported
       ErrorCode=-2147467259
       NativeErrorCode=-2146893054
       InnerException: 
Run Code Online (Sandbox Code Playgroud)

正如我之前提到的,直到几天前,服务一直工作良好。任何帮助将不胜感激。