मेरे पास एक एएसपी.नेट वेब सेवा है जो एक बाइट सरणी प्राप्त कर रही है जो फ़ाइल की सामग्री का प्रतिनिधित्व करती है जिसमें X.50 9 प्रमाणपत्र है। सर्वर-साइड कोड बाइट्स से प्रमाणपत्र लोड करने के लिए System.Security.Cryptography.X509Certificate2
निर्माता उपयोग कर रहा है:X509Certificate2 कभी-कभी ब्लॉब से बनाने में विफल क्यों होता है?
X509Certificate2 native_cert = new X509Certificate2(
pkcs12_buf /*byte array*/,
password,
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable
);
जो मेरी सेवा प्रक्रिया के रूप में चल रहा है के आधार पर, इस कॉल या तो सफल होगा, या एक "आंतरिक त्रुटि" अपवाद के साथ असफल । अपवाद स्टैक पर अंतिम कॉल X509Utils._LoadCertFromBlob
है, जो mscore.dll
में अप्रबंधित कोड है।
सेवा कोड के क्रेडेंशियल का उपयोग कर एक इंटरैक्टिव लॉगिन में कंसोल एप्लिकेशन से चलाते समय यह कोड सफल होता है। सर्विस खाते के क्रेडेंशियल्स का उपयोग करने वाले एप्लिकेशन पूल में w3wp.exe
के तहत चलते समय यह विफल हो जाता है। व्यवस्थापक को ऐप पूल पहचान बदलना समस्या को हल करता है, इसलिए यह एक विशेषाधिकार मुद्दा होना चाहिए, लेकिन मुझे नहीं पता कि इसके लिए विशेषाधिकार क्या आवश्यक हो सकता है। कोड या तो फाइल सिस्टम या विंडोज प्रमाणपत्र स्टोर को स्पर्श नहीं करता है।
[अद्यतन: अधिक जानकारी]
यह त्रुटि Windows ईवेंट लॉग में प्रकट होता है:
*Cryptographic Parameters:*
**Provider Name:** Microsoft Software Key Storage Provider
**Algorithm Name:** Not Available.
**Key Name:** {E182E13B-166D-472A-A24A-CBEF0808E9ED}
**Key Type:** User key.
*Cryptographic Operation:*
**Operation:** Open Key.
**Return Code:** 0x2
कोई भी विचार?
आपके द्वारा चलाए जाने वाले एएसपी.Net उपयोगकर्ता संदर्भ के लिए अपने स्टोर तक पहुंच क्यों नहीं होगी? (इससे मेरी समस्या हल हो गई - यह एक क्लासिक था "लेकिन यह मेरी देव मशीन पर काम करता है! तर्क के बारे में सिर्फ उत्सुक है।) – DFTR