RSACryptoServiceProvider を使用して、既知の秘密鍵 (変数に格納されている) を使用して一部のデータを復号化するアプリケーションがあります。
IIS アプリケーション プールが Network Service を使用するように構成されている場合、すべてが正常に実行されます。
ただし、別の ID でコードを実行するように IIS アプリケーション プールを構成すると、次のようになります。
System.Security.Cryptography.CryptographicException: 指定されたファイルが見つかりません。 System.Security.Cryptography.Utils.CreateProvHandle (CspParameters パラメーター、ブール値の randomKeyContainer) で System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters パラメーター) で System.Security.Cryptography.RSA.FromXmlString (文字列 xmlString) で
コードは次のようなものです。
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
ユーザーにマシン キー ストアへの読み取りアクセス権を付与する必要があると述べて回答しようとするリソースがありますが、この問題を解決するための決定的な回答はありません。
環境: IIS 6.0、Windows Server 2003 R2、.NET 3.5 SP1