Possiedo un'applicazione che utilizza RSACryptoServiceProvider per decrittografare alcuni dati utilizzando una chiave privata nota (memorizzata in una variabile).RSACryptoServiceProvider CryptographicException System Impossibile trovare il file specificato in ASP.NET
Quando il pool di applicazioni IIS è configurato per utilizzare il servizio di rete, tutto funziona correttamente.
Tuttavia, quando configuriamo l'IIS pool di applicazioni per eseguire il codice sotto una diversa identità, otteniamo la seguente:
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)
Il codice è qualcosa di simile:
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
ci sono risorse che tentano di rispondere affermando che si dovrebbe dare all'utente l'accesso in lettura all'archivio chiavi della macchina - tuttavia non esiste una risposta definitiva per risolvere questo problema.
Ambiente: IIS 6.0, Windows Server 2003 R2, .NET 3.5 SP1
Grazie per la risposta - Non ho ancora avuto la possibilità di testarlo. Sai se i nuovi account per impostazione predefinita (clean windows install) hanno già accesso a questo? Stiamo cercando di evitare di dover modificare troppo - e questo sembra un problema particolarmente bizzarro per qualcosa che dovrebbe essere eseguito con fiducia bassa/media. –
Will, non sono sicuro! Questo particolare problema è successo solo alla mia macchina. Ho provato su un'altra macchina per sviluppatori e le cose funzionano come dovrebbe. Nel server, i nostri sistemi funzionano in un contesto utente diverso, quindi non ho avuto problemi. –