J'ai une application qui utilise RSACryptoServiceProvider pour décrypter certaines données en utilisant une clé privée connue (stockée dans une variable).RSACryptoServiceProvider CryptographicException System Impossible de trouver le fichier spécifié sous ASP.NET
Lorsque le pool d'applications IIS est configuré pour utiliser le service réseau, tout fonctionne correctement.
Cependant, lorsque nous configurons le pool d'applications IIS pour exécuter le code sous une autre identité, nous obtenons les suivantes:
System.Security.Cryptography.CryptographicException: The system cannot find the file specified. at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters) at System.Security.Cryptography.RSA.FromXmlString(String xmlString)
Le code est quelque chose comme ceci:
byte[] input;
byte[] output;
string private_key_xml;
var provider = new System.Cryptography.RSACryptoServiceProvider(this.m_key.Key_Size);
provider.FromXmlString(private_key_xml); // Fails Here when Application Pool Identity != Network Service
ouput = provider.Decrypt(input, false); // False = Use PKCS#1 v1.5 Padding
Il y a ressources qui tentent d'y répondre en indiquant que vous devez donner à l'utilisateur un accès en lecture au magasin de clés de l'ordinateur. Cependant, il n'existe aucune réponse définitive pour résoudre ce problème.
Environnement: IIS 6.0, Windows Server 2003 R2, .NET 3.5 SP1
Merci pour la réponse - Je n'ai pas encore eu l'occasion de le tester. Savez-vous si les nouveaux comptes par défaut (installation de Windows propre) ont déjà accès à cela? Nous essayons d'éviter d'avoir à modifier trop - et cela semble être un problème particulièrement important pour quelque chose qui devrait fonctionner avec une confiance faible/moyenne. –
Will, je ne suis pas sûr! Ce problème particulier est arrivé à ma machine seulement. J'ai essayé dans une autre machine de développement et les choses fonctionnent comme supposé. Dans le serveur, nos systèmes fonctionnent sous un contexte utilisateur différent, donc je n'ai eu aucun problème aussi. –