سؤال

هل من الممكن تخزين X509Certificate2 في جدول SQL Server بدلا من سحب ملف .p12 من نظام الملفات؟ أنا متأكد من أنه يمكنك ولكن لست متأكدا من كيفية الذهاب حول هذا.

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

المحلول

هذا بالتأكيد ممكن، X509Certificate2 لديه مسودة بيانات خاصية يمكن حفظها في قاعدة بيانات SQL الخاصة بك. لإعادة بناء الشهادة التي يمكنك استخدامها البناء

var cert = new X509Certificate2(filename);
var data = cert.RawData;

// save data to database...

// Fetch data from database...

cert = new X509Certificate2(data);

نصائح أخرى

استخدم. export () ثم convert.tobase64String () وحفظ كما nvarchar (كحد أقصى)

لحفظها:

var cert = new X509Certificate2(filename);
var stringOfCertWithPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12));

// Or as a regular cert, which will strip the private key out
var stringOfCertWithoutPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Cert));

// Save either string as NVARCHAR(MAX) in the DB, it's just a string now.

ثم فقط استعادة (بعد العودة إليها من DB) مع:

var certBytes = Convert.FromBase64String(stringOfCertWithPrivateKey);
var cert = new X509Certificate2(certBytes);

استخدام الصادرات () أفضل من .rawdata كما يمكنك اختيار الاستمرار في المفتاح الخاص أم لا (باستخدام .rawdata دائما تجريه).

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