我正在新机器上安装Windows服务。 该服务通过TCP使用问题中的证书对SslStream进行各种操作。新机器的证书问题 - 提供给包无法识别的凭证
该服务在其他2台Windows 2003计算机上使用相同的代码和相同的证书正常运行。但是,这款新机器也是64位处理器的Windows 2003。
当我尝试以“服务帐户”身份运行服务时,我遇到了此问题。它适用于我自己的凭据。 (同样,它可以在其他2台机器上使用此服务帐户正常工作)
我没有在导入证书时启用“强力保护”功能。
这是堆栈跟踪。
System.ComponentModel.Win32Exception: 供给到 包中的凭据未在 在 System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface SecModule,字符串包, CredentialUse意图,SecureCredential SCC)识别System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage,SecureCredential & secureCredential)在 System.Net.Security.SecureChannel.AcquireClientCredentials(字节[] & 指纹)在 System.Net.Security.SecureChannel.GenerateToken(字节[] 输入,的Int32偏移的Int32计数, 字节[] &输出)在 System.Net.Security.SecureChannel.NextMessage(字节[] 传入,的Int32偏移的Int32计数)
在 System.Net.Security.SslState.StartSendBlob(字节[] 传入,计数的Int32, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.ProcessReceivedBlob(字节[] buffer,Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.StartReadFrame(字节[] 缓冲器,的Int32的ReadBytes, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.StartReceiveBlob(字节[] 缓冲器,AsyncProtocolRequest asyncRequest)在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive在 System.Net.Security.SslState.StartSendBlob(ProtocolToken 消息,AsyncProtocolRequest asyncRequest)(字节[] 传入,计数的Int32, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.ForceAuthentication(布尔 receiveFirst,字节[]缓冲液, AsyncProtocolRequest asyncRequest)
处 System.Net.Security System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)。 SslStream。AuthenticateAsClient(字符串 targetHost,X509CertificateCollection clientCertificates,SslProtocols enabledSslProtocols,布尔 checkCertificateRevocation)
看看第一个搜索结果是:http://www.google .com/search?q =“+凭证+提供给+ +包+ + +不被识别” – 2010-02-23 23:39:13
我曾看过那个论坛主题,Wim。它正确地解释了这里发生的事情。它不适用于我的原因是我必须解决这个问题,因为“服务帐户”不能用于登录到计算机并以该身份安装证书。 但是在下面的文章中提到了解决“永远的人”的正确方法,我在“答案”中发布了这个文章。 – cdpnet 2010-02-24 18:50:48