J'ai une application qui utilise la classe .NET SslStream avec des certificats client et serveur. Cette application fonctionne très bien sur Windows XP. Toutefois, sur Windows 7 (probablement Vista trop), l'exception ci-dessous apparaît lorsque vous appelez SslStream.AuthenticateAsClient:Éviter l'accès administrateur pour SslStream.AuthenticateAsClient?
System.ComponentModel.Win32Exception: The credentials supplied to the package were not recognized
at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface SecModule, String package, CredentialUse intent, SecureCredential scc)
at System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential& secureCredential)
at System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint)
at System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output)
at System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, 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.StartSendBlob(Byte[] incoming, Int32 count, 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.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
Si l'application est "exécuté comme" Administrateur sur Windows 7, tout fonctionne très bien. Je suppose que la cause principale ici est que AuthenticateAsClient a besoin de la clé privée pour le certificat client (qui est installé dans le magasin de certificats personnels de la machine locale) et que cette action nécessite un accès administrateur.
Ma question est de savoir s'il y a quelque chose qui peut être fait pour y remédier? Ou est-ce simplement une réalité que l'utilisation de AuthenticateAsClient avec un certificat client nécessite des privilèges d'administrateur?
Ceci est parfait et exactement ce que je cherchais !! – zdv
Note mineure; pouvez utiliser -C CURRENT_USER \ TrustedPublisher sans l'espace entre Trusted et Publisher. Non Trusted_Publisher ou "CURRENT_USER \ Trusted Publisher". Merci WinHttpCertCfg d'ignorer silencieusement mes erreurs. –