Tôi có một ứng dụng đang sử dụng RSACryptoServiceProvider để giải mã một số dữ liệu bằng khóa riêng đã biết (được lưu trữ trong một biến).Hệ thống nhận dạng mã hóa RSACryptoServiceProvider không thể tìm thấy tệp được chỉ định trong ASP.NET
Khi IIS Application Pool được cấu hình để sử dụng Dịch vụ mạng, mọi thứ đều chạy tốt.
Tuy nhiên, khi chúng ta cấu hình IIS Application Pool để chạy mã theo một bản sắc khác nhau, chúng tôi nhận được như sau:
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)
Mã này là một cái gì đó như thế này:
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
Có tài nguyên cố gắng trả lời bằng cách tuyên bố rằng bạn nên cấp cho người dùng quyền truy cập đọc vào kho khóa máy - tuy nhiên không có câu trả lời dứt khoát nào để giải quyết vấn đề này.
Môi trường: IIS 6.0, Windows Server 2003 R2, NET 3.5 SP1
Cảm ơn câu trả lời - Tôi chưa có cơ hội để thử nghiệm điều này. Bạn có biết nếu tài khoản mới theo mặc định (cài đặt cửa sổ sạch) có quyền truy cập vào tài khoản này chưa? Chúng tôi đang cố gắng tránh phải sửa đổi quá nhiều - và điều này có vẻ giống như một vấn đề đặc biệt bizzare cho một cái gì đó nên chạy dưới sự tin tưởng thấp/trung bình. –
Tôi không chắc chắn! Vấn đề đặc biệt này chỉ xảy ra với máy của tôi. Tôi đã thử một máy phát triển khác và mọi thứ hoạt động như dự định. Trong máy chủ, các hệ thống của chúng tôi chạy theo ngữ cảnh người dùng khác nhau, vì vậy tôi cũng không gặp vấn đề gì. –