كيف يمكنني الوصول إلى مفتاح خاص مع حساب المستخدم ASPNET؟

StackOverflow https://stackoverflow.com/questions/167252

  •  03-07-2019
  •  | 
  •  

سؤال

وأواجه بعض المتاعب استيراد والوصول إلى مفتاح خاص مع المستخدم ASPNET. وأنا أعلم أنه عندما تستورد واحد مفتاح خاص (ملف .pfx) يدويا، في ويندوز، يمكنك الحصول على خيار للاحتفال مفتاح للتصدير. الآن، بقدر ما استطيع ان اقول، هناك حاجة لذلك من أجل استرداد هذا المفتاح الخاص في وقت لاحق.

ومشكلتي يأتي في أنني استيراد المفتاح الخاص في التعليمات البرمجية، كمستخدم ASPNET، وهناك لا يبدو أن يكون وسيلة لوضع علامة على أنها للتصدير، في الطريقة التي معالج الاستيراد ويندوز شهادة لا. لتوضيح، استيراد يعمل على ما يرام، ولكن عندما يمكنني الوصول إلى التفاصيل على شهادة المستوردة الآن، لا يوجد بيانات أساسية خاصة.

وهذا هو رمز أنا باستخدام استيراد الشهادة، مرة واحدة لقد فتحت بالفعل ملف .pfx، مع كلمة المرور الصحيحة.

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
    X509Store certStore = new X509Store(name, loc);
    StorePermission permission = new StorePermission(PermissionState.Unrestricted);
    permission.Flags = StorePermissionFlags.AddToStore;
    permission.Assert();
    certStore.Open(OpenFlags.ReadWrite);
    certStore.Add(cert);
    certStore.Close();
}

وأنا التلويث تصل الأذونات أو الطريقة يمكنني استيراد هذا المفتاح الخاص؟ أو أنا ذاهب عن هذا بطريقة خاطئة تماما؟

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

المحلول

وأعتقد أنك تحتاج إلى تعيين إشارة X509KeyStorageFlags.Exportable عند استيراد الشهادة. كنت لا تظهر هذا الرمز، ولكن هناك الزائد من طريقة استيراد مع هذا التوقيع:

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

وأو هذا واحد:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

والتي سوف تسمح لك تعيينها قبل استيراد. خلاف ذلك، كل شيء يبدو جيدا!

وريتشارد

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