我正在新機器上安裝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