新しいマシンに Windows サービスをインストールしています。このサービスは、問題の証明書を使用する TCP 上の SslStream でさまざまな操作を実行します。
このサービスは、他の 2 台の Windows 2003 マシンで同じコードと同じ証明書を使用して正常に動作しています。ただし、この新しいマシンも 64 ビット プロセッサを搭載した Windows 2003 です。
「サービス アカウント」ID でサービスを実行しようとすると、この問題が発生します。自分の資格情報で問題なく動作します。(繰り返しますが、このサービス アカウントを持つ他の 2 台のマシンでは問題なく動作します)
証明書のインポート中に「強力な保護」が有効になっていません。
これがスタックトレースです。
System.ComponentModel.Win32Exception: パッケージに提供された資格情報が、System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential& secureCredential) at System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint) at System.Net.Security.SecureChannel.GenerateToken(Byte[] 入力、Int32 オフセット、Int32 カウント、Byte[]& 出力) システムで.Net.Security.SecureChannel.NextMessage(Byte[] 着信、Int32 オフセット、Int32 カウント)
System.Net.Security.SslState.StartSendBlob (Byte[] 着信、Int32 カウント、AsyncProtocolRequest asyncRequest) で
System.Net.Security.SslState.ProcessReceivedBlob (Byte[] バッファー、Int32 カウント、AsyncProtocolRequest asyncRequest)
で System.Net.Security.SslState.StartReadFrame (Byte[] バッファー、Int32 readBytes、AsyncProtocolRequest asyncRequest)
で System.Net.Security .SslState.StartReceiveBlob(Byte[] バッファー、AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.CheckCompletionBeforeNextReceive (ProtocolToken メッセージ、AsyncProtocolRequest asyncRequest) で System.Net.Security.SslState.StartSendBlob(Byte[] 着信、Int32 カウント、AsyncProtocolRequest) asyncRequest)
System.Net.Security.SslState.ForceAuthentication (Boolean receiveFirst、Byte[] バッファー、AsyncProtocolRequest asyncRequest) で
System.Net.Security.SslState.ProcessAuthentication (LazyAsyncResult lazyResult) で System.Net.Security.SslStream.AuthenticateAsClient (文字列 targetHost、X509CertificateCollection clientCertificates、SslProtocols enabledSslProtocols、ブール値 checkCertificateRevocation) で