簡體   English   中英

將X509Certificate2存儲在DB中

[英]Store an X509Certificate2 in DB

是否可以將X509Certificate2存儲在SQL Server表中而不是從文件系統中提取.p12文件? 我相信你可以但不知道如何解決這個問題。

這絕對是可能的,X509Certificate2有一個RawData屬性,可以保存到SQL數據庫中。 要重建證書,您可以使用此構造函數

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

// save data to database...

// Fetch data from database...

cert = new X509Certificate2(data);

使用.Export()然后轉換.ToBase64String()並另存為NVARCHAR(MAX)

要保存它:

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.

然后只需恢復(從數據庫獲取后):

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

使用Export()優於.RawData,因為您可以選擇是否保留私鑰(使用.RawData將始終刪除它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM