Ich habe eine Anwendung, die den RSACryptoServiceProvider verwendet, um einige Daten mit einem bekannten privaten Schlüssel (der in einer Variablen gespeichert ist) zu entschlüsseln.RSACryptoServiceProvider CryptographicException System kann die unter ASP.NET angegebene Datei nicht finden
Wenn der IIS-Anwendungspool für die Verwendung des Netzwerkdienstes konfiguriert ist, läuft alles einwandfrei.
Wenn wir jedoch die IIS Application Pool führen Sie den Code unter einer anderen Identität zu konfigurieren, erhalten wir folgendes:
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)
Der Code ist so etwas wie dieses:
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
Es gibt Ressourcen, die versuchen, sie zu beantworten, indem Sie angeben, dass Sie dem Benutzer Lesezugriff auf den Computerschlüsselspeicher geben sollten - jedoch gibt es keine definitive Antwort, um dieses Problem zu lösen.
Umwelt: IIS 6.0, Windows Server 2003 R2, 3.5 SP1 .NET
Danke für die Antwort - ich hatte bisher noch keine Gelegenheit, das zu testen. Weißt du, ob neue Accounts standardmäßig (saubere Windows-Installation) Zugriff darauf haben? Wir versuchen zu vermeiden, zu viel zu modifizieren - und das scheint ein besonders bizarres Problem für etwas zu sein, das unter geringer/mittlerer Vertrauenswürdigkeit laufen sollte. –
Will, ich bin mir nicht sicher! Dieses spezielle Problem trat nur mit meiner Maschine auf. Ich habe einen anderen Entwickler-Rechner ausprobiert und die Dinge funktionieren so. Auf dem Server laufen unsere Systeme unter einem anderen Benutzerkontext, also hatte ich auch kein Problem. –