سؤال

وصدرت لي شهادة PKCS # 12 ليتم استخدامها للوصول إلى خدمة ويب بسيطة يستند إلى XML. عندما كنت تحميل ملف PKCS # 12 في ويندوز (فيستا)، ويمكن الوصول إلى الخدمة باستخدام متصفحي.

ومحاولة للوصول إلى الخدمة من خلال التطبيق، دون تحميل PKCS # 12 إلى مجموعات شهادة OS، وقد كتبت التعليمات البرمجية التالية:

// The certificate i'm using can not be authenticated as it is a development one. 
// For now, just ignore it.
static bool myRemoteCertificateValidationCallback(
         Object sender,
         X509Certificate certificate,
         X509Chain chain,
         SslPolicyErrors sslPolicyErrors
)
{ return true; }

static void Main(string[] args)
{
    ServicePointManager.ServerCertificateValidationCallback = myRemoteCertificateValidationCallback;
    X509Certificate Cert = new X509Certificate(@"certificatefile.p12","medialab");
    HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://ServiceURL");
    Req.ClientCertificates.Add(Cert);

    Stream S = Req.GetResponse().GetResponseStream();
    TextReader TR = new StreamReader(S);
    string Ret = TR.ReadToEnd();
    Console.Write(Ret);

}

للأسف فشل هذا رمز وأحصل على System.Net.WebException: تم إحباط الطلب: لا يمكن إنشاء SSL / TLS القناة الآمنة. لقد لاحظت أنه عندما أفعل تحميل PKCS # 12 ملف في ويندوز، رمز يعمل فجأة.

وماذا يجب أن أفعل لجعل القيام مع الملف وحده، وتجنب استخدام مخزن الشهادات ويندوز؟

وشكرا، بوعز

ومزيد من المعلومات: مجرد تطبيق SP1 إلى بلدي Visual Studio ثم الآن أحصل على استثناء آخر: "دعوة إلى SSPI فشلت، انظر الاستثناء الداخلي" مع استثناء الداخلية -> "تم تلقي رسالة غير متوقعة أو منسقة بشكل سيئ".

هل كانت مفيدة؟

المحلول

ويكون لديك الشهادة المثبتة في مخزن الشهادات. أسهل طريقة هي استخدام IE واستيراد الشهادة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top