Csharp/C#教程:将X509Certificate2存储在DB中分享


将X509Certificate2存储在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将始终剥离它)。

上述就是C#学习教程:将X509Certificate2存储在DB中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955780.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐